java.lang.Object
edu.internet2.middleware.grouperClientExt.org.apache.commons.jexl2.internal.Introspector
edu.internet2.middleware.grouperClientExt.org.apache.commons.jexl2.introspection.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 Details

    • TRY_FAILED

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

    • UberspectImpl

      public UberspectImpl(Log runtimeLogger)
      Creates a new UberspectImpl.
      Parameters:
      runtimeLogger - the logger used for all logging needs
  • Method Details

    • setLoader

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

      public Iterator<?> getIterator(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(Object obj, String method, 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 Constructor<?> getConstructor(Object ctorHandle, 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(Object ctorHandle, 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(Object obj, 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(Object obj, Object identifier, 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 Field getField(Object obj, 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(Object object, 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