Class UberspectImpl

  • All Implemented Interfaces:
    Uberspect
    Direct Known Subclasses:
    SandboxUberspectImpl

    public class UberspectImpl
    extends Introspector
    implements Uberspect
    Implementation of Uberspect to provide the default introspective functionality of JEXL.

    This is the class to derive to customize introspection.

    Since:
    1.0
    • Field Detail

      • TRY_FAILED

        public static final java.lang.Object TRY_FAILED
        Publicly exposed special failure object returned by tryInvoke.
    • Constructor Detail

      • UberspectImpl

        public UberspectImpl​(org.apache.commons.logging.Log runtimeLogger)
        Creates a new UberspectImpl.
        Parameters:
        runtimeLogger - the logger used for all logging needs
    • Method Detail

      • setLoader

        public void setLoader​(java.lang.ClassLoader cloader)
        Resets this Uberspect class loader.
        Parameters:
        cloader - the class loader to use
        Since:
        2.1
      • getIterator

        public java.util.Iterator<?> getIterator​(java.lang.Object obj,
                                                 JexlInfo info)
        Gets an iterator from an object.
        Specified by:
        getIterator in interface Uberspect
        Parameters:
        obj - to get the iterator for
        info - contextual information
        Returns:
        an iterator over obj
      • getMethod

        public JexlMethod getMethod​(java.lang.Object obj,
                                    java.lang.String method,
                                    java.lang.Object[] args,
                                    JexlInfo info)
        Returns a JexlMethod.
        Specified by:
        getMethod in interface Uberspect
        Parameters:
        obj - the object
        method - the method name
        args - method arguments
        info - contextual information
        Returns:
        a JexlMethod
      • getConstructor

        @Deprecated
        public java.lang.reflect.Constructor<?> getConstructor​(java.lang.Object ctorHandle,
                                                               java.lang.Object[] args,
                                                               JexlInfo info)
        Deprecated.
        Returns a class constructor.
        Specified by:
        getConstructor in interface Uberspect
        Parameters:
        ctorHandle - a class or class name
        args - constructor arguments
        info - contextual information
        Returns:
        a Constructor
      • getConstructorMethod

        public JexlMethod getConstructorMethod​(java.lang.Object ctorHandle,
                                               java.lang.Object[] args,
                                               JexlInfo info)
        Returns a class constructor wrapped in a JexlMethod.
        Specified by:
        getConstructorMethod in interface Uberspect
        Parameters:
        ctorHandle - a class or class name
        args - constructor arguments
        info - contextual information
        Returns:
        a Constructor
        Since:
        2.1
      • getPropertyGet

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

        Returns JexlPropertyGet appropos for ${bar.woogie}.

        Specified by:
        getPropertyGet in interface Uberspect
        Parameters:
        obj - the object to get the property from
        identifier - property name
        info - contextual information
        Returns:
        a JexlPropertyGet
      • getPropertySet

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

        returns JelPropertySet appropos for ${foo.bar = "geir"}

        .
        Specified by:
        getPropertySet in interface Uberspect
        Parameters:
        obj - the object to get the property from.
        identifier - property name
        arg - value to set
        info - contextual information
        Returns:
        a JexlPropertySet.
      • getField

        public java.lang.reflect.Field getField​(java.lang.Object obj,
                                                java.lang.String name,
                                                JexlInfo info)
        Returns a class field. Only for use by sub-classes, will be made protected in a later version
        Parameters:
        obj - the object
        name - the field name
        info - debug info
        Returns:
        a Field.
      • getIndexedGet

        protected JexlPropertyGet getIndexedGet​(java.lang.Object object,
                                                java.lang.String name)
        Attempts to find an indexed-property getter in an object. The code attempts to find the list of methods getXXX() and setXXX(). Note that this is not equivalent to the strict bean definition of indexed properties; the type of the key is not necessarily an int and the set/get arrays are not resolved.
        Parameters:
        object - the object
        name - the container name
        Returns:
        a JexlPropertyGet is successfull, null otherwise
        Since:
        2.1