Class IndexedType
java.lang.Object
org.apache.commons.jexl3.internal.introspection.IndexedType
- All Implemented Interfaces:
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
Nested ClassesModifier and TypeClassDescriptionstatic final class
A generic indexed property container, exposes get(key) and set(key, value) and solves method call dynamically based on arguments. -
Field Summary
FieldsModifier and TypeFieldDescription(package private) final Class<?>
The container class.(package private) final String
The container name.private Method
Last get method used.private final Method[]
The array of getter methods.private Method
Last set method used.private final Method[]
The array of setter methods. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
IndexedType
(String name, Class<?> c, Method[] gets, Method[] sets) Creates a new indexed property container type. -
Method Summary
Modifier and TypeMethodDescriptionstatic JexlPropertyGet
discover
(Introspector is, Object object, String name) Attempts to find an indexed-property getter in an object.Method used to get the property value of an object.(package private) Object
Gets the value of a property from a container.(package private) Object
Sets the value of a property in a container.boolean
Specifies if this JexlPropertyGet is cacheable and able to be reused for this class of object it was returned for.boolean
Checks whether a tryInvoke failed or not.Attempts to reuse this JexlPropertyGet, checking that it is compatible with the actual set of arguments.
-
Field Details
-
container
The container name. -
clazz
The container class. -
getters
The array of getter methods. -
get
Last get method used. -
setters
The array of setter methods. -
set
Last set method used.
-
-
Constructor Details
-
IndexedType
Creates a new indexed property container type.- Parameters:
name
- the container namec
- the owning classgets
- the array of getter methodssets
- the array of setter methods
-
-
Method Details
-
discover
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 introspectorobject
- the objectname
- the container name- Returns:
- a JexlPropertyGet is successful, null otherwise
-
invoke
Description copied from interface:JexlPropertyGet
Method used to get the property value of an object.- Specified by:
invoke
in interfaceJexlPropertyGet
- Parameters:
obj
- the object to get the property value from.- Returns:
- the property value.
- Throws:
Exception
- on any error.
-
tryInvoke
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 interfaceJexlPropertyGet
- Parameters:
obj
- the object to invoke the property get uponkey
- 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
Description copied from interface:JexlPropertyGet
Checks whether a tryInvoke failed or not.- Specified by:
tryFailed
in interfaceJexlPropertyGet
- 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 interfaceJexlPropertyGet
- Returns:
- true if can be reused for this class, false if not
-
invokeGet
Gets the value of a property from a container.- Parameters:
object
- the container instance (not null)key
- the property key (not null)- Returns:
- the property value
- Throws:
Exception
- if invocation failed; IntrospectionException if a property getter could not be found
-
invokeSet
Sets the value of a property in a container.- Parameters:
object
- the container instance (not null)key
- the property key (not null)value
- the property value (not null)- Returns:
- the result of the method invocation (frequently null)
- Throws:
Exception
- if invocation failed; IntrospectionException if a property setter could not be found
-