org.apache.commons.jexl3.introspection
Interface JexlUberspect

All Known Implementing Classes:
SandboxUberspect, Uberspect

public interface JexlUberspect

'Federated' introspection/reflection interface to allow JEXL introspection behavior to be customized.

Since:
1.0

Nested Class Summary
static class JexlUberspect.JexlResolver
          The various builtin property resolvers.
static interface JexlUberspect.PropertyResolver
          Abstracts getting property setter and getter.
static interface JexlUberspect.ResolverStrategy
          Determines property resolution strategy.
 
Field Summary
static JexlUberspect.ResolverStrategy JEXL_STRATEGY
          The default strategy.
static List<JexlUberspect.PropertyResolver> MAP
          A resolver types list tailored for Maps, favors '[]' over '.'.
static JexlUberspect.ResolverStrategy MAP_STRATEGY
          The map strategy.
static List<JexlUberspect.PropertyResolver> POJO
          A resolver types list tailored for POJOs, favors '.' over '[]'.
 
Method Summary
 JexlArithmetic.Uberspect getArithmetic(JexlArithmetic arithmetic)
          Gets an arithmetic operator resolver for a given arithmetic instance.
 JexlMethod getConstructor(Object ctorHandle, Object... args)
          Returns a class constructor.
 Iterator<?> getIterator(Object obj)
          Gets an iterator from an object.
 JexlMethod getMethod(Object obj, String method, Object... args)
          Returns a JexlMethod.
 JexlPropertyGet getPropertyGet(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier)
          Property getter.
 JexlPropertyGet getPropertyGet(Object obj, Object identifier)
          Property getter.
 JexlPropertySet getPropertySet(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier, Object arg)
          Property setter.
 JexlPropertySet getPropertySet(Object obj, Object identifier, Object arg)
          Property setter.
 List<JexlUberspect.PropertyResolver> getResolvers(JexlOperator op, Object obj)
          Applies this uberspect property resolver strategy.
 int getVersion()
          Gets this uberspect version.
 void setClassLoader(ClassLoader loader)
          Sets the class loader to use.
 

Field Detail

POJO

static final List<JexlUberspect.PropertyResolver> POJO
A resolver types list tailored for POJOs, favors '.' over '[]'.


MAP

static final List<JexlUberspect.PropertyResolver> MAP
A resolver types list tailored for Maps, favors '[]' over '.'.


JEXL_STRATEGY

static final JexlUberspect.ResolverStrategy JEXL_STRATEGY
The default strategy.

If the operator is '[]' or if the operator is null and the object is a map, use the MAP list of resolvers; Other cases use the POJO list of resolvers.


MAP_STRATEGY

static final JexlUberspect.ResolverStrategy MAP_STRATEGY
The map strategy.

If the operator is '[]' or if the object is a map, use the MAP list of resolvers. Otherwise, use the POJO list of resolvers.

Method Detail

getResolvers

List<JexlUberspect.PropertyResolver> getResolvers(JexlOperator op,
                                                  Object obj)
Applies this uberspect property resolver strategy.

Parameters:
op - the operator
obj - the object
Returns:
the applied strategy resolver list

setClassLoader

void setClassLoader(ClassLoader loader)
Sets the class loader to use.

This increments the version.

Parameters:
loader - the class loader

getVersion

int getVersion()
Gets this uberspect version.

Returns:
the class loader modification count

getConstructor

JexlMethod getConstructor(Object ctorHandle,
                          Object... args)
Returns a class constructor.

Parameters:
ctorHandle - a class or class name
args - constructor arguments
Returns:
a JexlMethod
Since:
3.0

getMethod

JexlMethod getMethod(Object obj,
                     String method,
                     Object... args)
Returns a JexlMethod.

Parameters:
obj - the object
method - the method name
args - method arguments
Returns:
a JexlMethod

getPropertyGet

JexlPropertyGet getPropertyGet(Object obj,
                               Object identifier)
Property getter.

returns a JelPropertySet apropos to an expression like bar.woogie.

Parameters:
obj - the object to get the property from
identifier - property name
Returns:
a JexlPropertyGet or null

getPropertyGet

JexlPropertyGet getPropertyGet(List<JexlUberspect.PropertyResolver> resolvers,
                               Object obj,
                               Object identifier)
Property getter.

Seeks a JexlPropertyGet apropos to an expression like bar.woogie.

See JexlUberspect.ResolverStrategy.apply(JexlOperator, java.lang.Object)

Parameters:
resolvers - the list of property resolvers to try
obj - the object to get the property from
identifier - property name
Returns:
a JexlPropertyGet or null
Since:
3.0

getPropertySet

JexlPropertySet getPropertySet(Object obj,
                               Object identifier,
                               Object arg)
Property setter.

Seeks a JelPropertySet apropos to an expression like foo.bar = "geir".

Parameters:
obj - the object to get the property from.
identifier - property name
arg - value to set
Returns:
a JexlPropertySet or null

getPropertySet

JexlPropertySet getPropertySet(List<JexlUberspect.PropertyResolver> resolvers,
                               Object obj,
                               Object identifier,
                               Object arg)
Property setter.

Seeks a JelPropertySet apropos to an expression like foo.bar = "geir".

See JexlUberspect.ResolverStrategy.apply(JexlOperator, java.lang.Object)

Parameters:
resolvers - the list of property resolvers to try,
obj - the object to get the property from
identifier - property name
arg - value to set
Returns:
a JexlPropertySet or null
Since:
3.0

getIterator

Iterator<?> getIterator(Object obj)
Gets an iterator from an object.

Parameters:
obj - to get the iterator from
Returns:
an iterator over obj or null

getArithmetic

JexlArithmetic.Uberspect getArithmetic(JexlArithmetic arithmetic)
Gets an arithmetic operator resolver for a given arithmetic instance.

Parameters:
arithmetic - the arithmetic instance
Returns:
the arithmetic uberspect or null if no operator method were overridden
Since:
3.0


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