org.apache.commons.jexl2.internal
Class DuckGetExecutor

java.lang.Object
  extended by org.apache.commons.jexl2.internal.AbstractExecutor
      extended by org.apache.commons.jexl2.internal.AbstractExecutor.Get
          extended by org.apache.commons.jexl2.internal.DuckGetExecutor
All Implemented Interfaces:
JexlPropertyGet

public final class DuckGetExecutor
extends AbstractExecutor.Get

Specialized executor to get a property from an object.

Duck as in duck-typing for an interface like: interface Get { Object get(Object key); }

Since:
2.0

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.commons.jexl2.internal.AbstractExecutor
AbstractExecutor.Get, AbstractExecutor.Method, AbstractExecutor.Set
 
Field Summary
 
Fields inherited from class org.apache.commons.jexl2.internal.AbstractExecutor
method, objectClass, TRY_FAILED
 
Constructor Summary
DuckGetExecutor(Introspector is, Class<?> clazz, Object identifier)
          Creates an instance by attempting discovery of the get method.
 
Method Summary
 Object execute(Object obj)
          Get the property from the object.
 Object getTargetProperty()
          Gets the property targeted by this executor.
 Object tryExecute(Object obj, Object key)
          Tries to reuse this executor, checking that it is compatible with the actual set of arguments.
 
Methods inherited from class org.apache.commons.jexl2.internal.AbstractExecutor.Get
invoke, tryInvoke
 
Methods inherited from class org.apache.commons.jexl2.internal.AbstractExecutor
equals, equals, getMethod, getMethodName, getTargetClass, hashCode, isAlive, isCacheable, tryFailed
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.jexl2.introspection.JexlPropertyGet
isCacheable, tryFailed
 

Constructor Detail

DuckGetExecutor

public DuckGetExecutor(Introspector is,
                       Class<?> clazz,
                       Object identifier)
Creates an instance by attempting discovery of the get method.

Parameters:
is - the introspector
clazz - the class to introspect
identifier - the property to get
Method Detail

getTargetProperty

public Object getTargetProperty()
Gets the property targeted by this executor.

Overrides:
getTargetProperty in class AbstractExecutor
Returns:
the target property

execute

public Object execute(Object obj)
               throws IllegalAccessException,
                      InvocationTargetException
Get the property from the object.

Specified by:
execute in class AbstractExecutor.Get
Parameters:
obj - the object.
Returns:
object.get(property)
Throws:
IllegalAccessException - Method is inaccessible.
InvocationTargetException - Method body throws an exception.

tryExecute

public Object tryExecute(Object obj,
                         Object key)
Tries to reuse this executor, checking that it is compatible with the actual set of arguments.

Compatibility means that: o must be of the same class as this executor's target class and property must be of the same class as this executor's target property (for list and map based executors) and have the same value (for other types).

Overrides:
tryExecute in class AbstractExecutor.Get
Parameters:
obj - The object to get the property from.
key - The property to get from the object.
Returns:
The property value or TRY_FAILED if checking failed.


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