org.apache.commons.jexl3.internal.introspection
Class IndexedType

java.lang.Object
  extended by org.apache.commons.jexl3.internal.introspection.IndexedType
All Implemented Interfaces:
JexlPropertyGet

public final class IndexedType
extends Object
implements JexlPropertyGet

Abstract an indexed property container.

This allows getting properties from expressions like var.container.property. This stores the container name and class as well as the list of available getter and setter methods. It implements JexlPropertyGet since such a container can only be accessed from its owning instance (not set).


Nested Class Summary
static class IndexedType.IndexedContainer
          A generic indexed property container, exposes get(key) and set(key, value) and solves method call dynamically based on arguments.
 
Method Summary
static JexlPropertyGet discover(Introspector is, Object object, String name)
          Attempts to find an indexed-property getter in an object.
 Object invoke(Object obj)
          Method used to get the property value of an object.
 boolean isCacheable()
          Specifies if this JexlPropertyGet is cacheable and able to be reused for this class of object it was returned for.
 boolean tryFailed(Object rval)
          Checks whether a tryInvoke failed or not.
 Object tryInvoke(Object obj, Object key)
          Attempts to reuse this JexlPropertyGet, checking that it is compatible with the actual set of arguments.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

discover

public static JexlPropertyGet discover(Introspector is,
                                       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:
is - the introspector
object - the object
name - the container name
Returns:
a JexlPropertyGet is successful, null otherwise

invoke

public Object invoke(Object obj)
              throws Exception
Description copied from interface: JexlPropertyGet
Method used to get the property value of an object.

Specified by:
invoke in interface JexlPropertyGet
Parameters:
obj - the object to get the property value from.
Returns:
the property value.
Throws:
Exception - on any error.

tryInvoke

public Object tryInvoke(Object obj,
                        Object key)
Description copied from interface: JexlPropertyGet
Attempts to reuse this JexlPropertyGet, checking that it is compatible with the actual set of arguments.

Specified by:
tryInvoke in interface JexlPropertyGet
Parameters:
obj - the object to invoke the property get upon
key - the property key to get
Returns:
the result of the method invocation that should be checked by tryFailed to determine if it succeeded or failed.

tryFailed

public boolean tryFailed(Object rval)
Description copied from interface: JexlPropertyGet
Checks whether a tryInvoke failed or not.

Specified by:
tryFailed in interface JexlPropertyGet
Parameters:
rval - the value returned by tryInvoke
Returns:
true if tryInvoke failed, false otherwise

isCacheable

public boolean isCacheable()
Description copied from interface: JexlPropertyGet
Specifies if this JexlPropertyGet is cacheable and able to be reused for this class of object it was returned for.

Specified by:
isCacheable in interface JexlPropertyGet
Returns:
true if can be reused for this class, false if not


Copyright © 2001–2017 The Apache Software Foundation. All rights reserved.