org.apache.commons.jexl2.introspection
Class UberspectImpl

java.lang.Object
  extended by org.apache.commons.jexl2.internal.Introspector
      extended by 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

Nested Class Summary
static class UberspectImpl.FieldPropertyGet
          Deprecated. Do not use externally - will be made private in a later version
static class UberspectImpl.FieldPropertySet
          Deprecated. Do not use externally - will be made private in a later version
static class UberspectImpl.IndexedContainer
          A generic indexed property container, exposes get(key) and set(key, value) and solves method call dynamically based on arguments.
 
Field Summary
static Object TRY_FAILED
          Publicly exposed special failure object returned by tryInvoke.
 
Fields inherited from class org.apache.commons.jexl2.internal.Introspector
rlog
 
Constructor Summary
UberspectImpl(org.apache.commons.logging.Log runtimeLogger)
          Creates a new UberspectImpl.
 
Method Summary
 Constructor<?> getConstructor(Object ctorHandle, Object[] args, JexlInfo info)
          Deprecated. 
 JexlMethod getConstructorMethod(Object ctorHandle, Object[] args, JexlInfo info)
          Returns a class constructor wrapped in a JexlMethod.
 Field getField(Object obj, String name, JexlInfo info)
          Returns a class field.
protected  JexlPropertyGet getIndexedGet(Object object, String name)
          Attempts to find an indexed-property getter in an object.
 Iterator<?> getIterator(Object obj, JexlInfo info)
          Gets an iterator from an object.
 JexlMethod getMethod(Object obj, String method, Object[] args, JexlInfo info)
          Returns a JexlMethod.
 JexlPropertyGet getPropertyGet(Object obj, Object identifier, JexlInfo info)
          Property getter.
 JexlPropertySet getPropertySet(Object obj, Object identifier, Object arg, JexlInfo info)
          Property setter.
 void setLoader(ClassLoader cloader)
          Resets this Uberspect class loader.
 
Methods inherited from class org.apache.commons.jexl2.internal.Introspector
base, getClassByName, getConstructor, getField, getFieldNames, getGetExecutor, getMethod, getMethod, getMethodExecutor, getMethodNames, getMethods, getSetExecutor, setClassLoader, toInteger, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.jexl2.introspection.Uberspect
setClassLoader
 

Field Detail

TRY_FAILED

public static final 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(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


Copyright © 2001-2011 The Apache Software Foundation. All Rights Reserved.