org.apache.commons.jexl.util.introspection
Class UberspectImpl

java.lang.Object
  extended by org.apache.commons.jexl.util.introspection.UberspectImpl
All Implemented Interfaces:
Uberspect, UberspectLoggable

public class UberspectImpl
extends java.lang.Object
implements Uberspect, UberspectLoggable

Implementation of Uberspect to provide the default introspective functionality of Velocity.

Since:
1.0
Version:
$Id: UberspectImpl.java 398509 2006-05-01 03:34:35Z dion $
Author:
Geir Magnusson Jr.

Nested Class Summary
 class UberspectImpl.VelGetterImpl
          
 class UberspectImpl.VelMethodImpl
          An implementation of VelMethod.
 class UberspectImpl.VelSetterImpl
          
 
Field Summary
private static Introspector introspector
          the default Velocity introspector.
private static int PROPERTY_START_INDEX
          index of the first character of the property.
private  org.apache.commons.logging.Log rlog
          Our runtime logger.
 
Constructor Summary
UberspectImpl()
           
 
Method Summary
 java.util.Iterator getIterator(java.lang.Object obj, Info i)
          To support iteratives - #foreach().
 VelMethod getMethod(java.lang.Object obj, java.lang.String methodName, java.lang.Object[] args, Info i)
          Returns a general method, corresponding to $foo.bar( $woogie ).
 VelPropertyGet getPropertyGet(java.lang.Object obj, java.lang.String identifier, Info i)
          Property getter - returns VelPropertyGet appropos for #set($foo = $bar.woogie).
 VelPropertySet getPropertySet(java.lang.Object obj, java.lang.String identifier, java.lang.Object arg, Info i)
          Property setter - returns VelPropertySet appropos for #set($foo.bar = "geir").
 void init()
          init - does nothing - we need to have setRuntimeLogger called before getting our introspector, as the default vel introspector depends upon it.
 void setRuntimeLogger(org.apache.commons.logging.Log runtimeLogger)
          Sets the runtime logger - this must be called before anything else besides init() as to get the logger.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROPERTY_START_INDEX

private static final int PROPERTY_START_INDEX
index of the first character of the property.

See Also:
Constant Field Values

rlog

private org.apache.commons.logging.Log rlog
Our runtime logger.


introspector

private static Introspector introspector
the default Velocity introspector.

Constructor Detail

UberspectImpl

public UberspectImpl()
Method Detail

init

public void init()
          throws java.lang.Exception
init - does nothing - we need to have setRuntimeLogger called before getting our introspector, as the default vel introspector depends upon it.

Specified by:
init in interface Uberspect
Throws:
java.lang.Exception - on any error.

setRuntimeLogger

public void setRuntimeLogger(org.apache.commons.logging.Log runtimeLogger)
Sets the runtime logger - this must be called before anything else besides init() as to get the logger. Makes the pull model appealing...

Specified by:
setRuntimeLogger in interface UberspectLoggable
Parameters:
runtimeLogger - service to use for logging.

getIterator

public java.util.Iterator getIterator(java.lang.Object obj,
                                      Info i)
                               throws java.lang.Exception
To support iteratives - #foreach().

Specified by:
getIterator in interface Uberspect
Parameters:
obj - to get the iterator for.
i - template info.
Returns:
an iterator over obj.
Throws:
java.lang.Exception - on any error.

getMethod

public VelMethod getMethod(java.lang.Object obj,
                           java.lang.String methodName,
                           java.lang.Object[] args,
                           Info i)
                    throws java.lang.Exception
Returns a general method, corresponding to $foo.bar( $woogie ).

Specified by:
getMethod in interface Uberspect
Parameters:
obj - the object
methodName - the method name
args - method arguments
i - template info
Returns:
a VelMethod.
Throws:
java.lang.Exception - on any error.

getPropertyGet

public VelPropertyGet getPropertyGet(java.lang.Object obj,
                                     java.lang.String identifier,
                                     Info i)
                              throws java.lang.Exception
Property getter - returns VelPropertyGet appropos for #set($foo = $bar.woogie).

Specified by:
getPropertyGet in interface Uberspect
Parameters:
obj - the object to get the property from.
identifier - property name
i - template info
Returns:
a VelPropertyGet.
Throws:
java.lang.Exception - on any error.

getPropertySet

public VelPropertySet getPropertySet(java.lang.Object obj,
                                     java.lang.String identifier,
                                     java.lang.Object arg,
                                     Info i)
                              throws java.lang.Exception
Property setter - returns VelPropertySet appropos for #set($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.
i - template info
Returns:
a VelPropertySet.
Throws:
java.lang.Exception - on any error.