Interface JexlUberspect

  • All Known Implementing Classes:
    SandboxUberspect, Uberspect

    public interface JexlUberspect
    'Federated' introspection/reflection interface to allow JEXL introspection behavior to be customized.
    Since:
    1.0
    • Field Detail

      • JEXL_STRATEGY

        static final JexlUberspect.ResolverStrategy JEXL_STRATEGY
        The default strategy.

        If the operator is '[]' or if the operator is null and the object is a map, use the MAP list of resolvers; Other cases use the POJO list of resolvers.

      • MAP_STRATEGY

        static final JexlUberspect.ResolverStrategy MAP_STRATEGY
        The map strategy.

        If the operator is '[]' or if the object is a map, use the MAP list of resolvers. Otherwise, use the POJO list of resolvers.

    • Method Detail

      • getArithmetic

        JexlArithmetic.Uberspect getArithmetic​(JexlArithmetic arithmetic)
        Gets an arithmetic operator resolver for a given arithmetic instance.
        Parameters:
        arithmetic - the arithmetic instance
        Returns:
        the arithmetic uberspect or null if no operator method were overridden
        Since:
        3.0
      • getClassByName

        default java.lang.Class<?> getClassByName​(java.lang.String className)
        Seeks a class by name using this uberspect class-loader.
        Parameters:
        className - the class name
        Returns:
        the class instance or null if the class cannot be located by this uberspect class loader or if permissions deny access to the class
      • getClassLoader

        java.lang.ClassLoader getClassLoader()
        Gets the current class loader.
        Returns:
        the class loader
      • getConstructor

        JexlMethod getConstructor​(java.lang.Object ctorHandle,
                                  java.lang.Object... args)
        Returns a class constructor.
        Parameters:
        ctorHandle - a class or class name
        args - constructor arguments
        Returns:
        a JexlMethod
        Since:
        3.0
      • getIterator

        java.util.Iterator<?> getIterator​(java.lang.Object obj)
        Gets an iterator from an object.
        Parameters:
        obj - to get the iterator from
        Returns:
        an iterator over obj or null
      • getMethod

        JexlMethod getMethod​(java.lang.Object obj,
                             java.lang.String method,
                             java.lang.Object... args)
        Returns a JexlMethod.
        Parameters:
        obj - the object
        method - the method name
        args - method arguments
        Returns:
        a JexlMethod
      • getPropertyGet

        JexlPropertyGet getPropertyGet​(java.lang.Object obj,
                                       java.lang.Object identifier)
        Property getter.

        returns a JelPropertySet apropos to an expression like bar.woogie.

        Parameters:
        obj - the object to get the property from
        identifier - property name
        Returns:
        a JexlPropertyGet or null
      • getPropertySet

        JexlPropertySet getPropertySet​(java.lang.Object obj,
                                       java.lang.Object identifier,
                                       java.lang.Object arg)
        Property setter.

        Seeks a JelPropertySet apropos to an expression like foo.bar = "geir".

        Parameters:
        obj - the object to get the property from.
        identifier - property name
        arg - value to set
        Returns:
        a JexlPropertySet or null
      • getResolvers

        java.util.List<JexlUberspect.PropertyResolver> getResolvers​(JexlOperator op,
                                                                    java.lang.Object obj)
        Applies this uberspect property resolver strategy.
        Parameters:
        op - the operator
        obj - the object
        Returns:
        the applied strategy resolver list
      • getVersion

        int getVersion()
        Gets this uberspect version.
        Returns:
        the class loader modification count
      • setClassLoader

        void setClassLoader​(java.lang.ClassLoader loader)
        Sets the class loader to use.

        This increments the version.

        Parameters:
        loader - the class loader