Interface JexlUberspect
public interface JexlUberspect
'Federated' introspection/reflection interface to allow JEXL introspection
behavior to be customized.
- Since:
- 1.0
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic enum
The various builtin property resolvers.static interface
Abstracts getting property setter and getter.static interface
Determines property resolution strategy. -
Field Summary
Modifier and TypeFieldDescriptionstatic final JexlUberspect.ResolverStrategy
The default strategy.static final List<JexlUberspect.PropertyResolver>
A resolver types list tailored for Maps, favors '[]' over '.'.static final JexlUberspect.ResolverStrategy
The map strategy.static final List<JexlUberspect.PropertyResolver>
A resolver types list tailored for POJOs, favors '.' over '[]'. -
Method Summary
Modifier and TypeMethodDescriptiongetArithmetic
(JexlArithmetic arithmetic) Gets an arithmetic operator resolver for a given arithmetic instance.default Class<?>
getClassByName
(String className) Seeks a class by name using this uberspect class-loader.Gets the current class loader.getConstructor
(Object ctorHandle, Object... args) Returns a class constructor.Iterator<?>
getIterator
(Object obj) Gets an iterator from an object.Returns a JexlMethod.getPropertyGet
(Object obj, Object identifier) Property getter.getPropertyGet
(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier) Property getter.getPropertySet
(Object obj, Object identifier, Object arg) Property setter.getPropertySet
(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier, Object arg) Property setter.getResolvers
(JexlOperator op, Object obj) Applies this uberspect property resolver strategy.int
Gets this uberspect version.void
setClassLoader
(ClassLoader loader) Sets the class loader to use.
-
Field Details
-
POJO
A resolver types list tailored for POJOs, favors '.' over '[]'. -
MAP
A resolver types list tailored for Maps, favors '[]' over '.'. -
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
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 Details
-
getArithmetic
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
-
getClassByName
Seeks a class by name using this uberspect class-loader.- Parameters:
className
- the class name- Returns:
- the class instance or null if the class cannot be located by this uberspect class loader or if permissions deny access to the class
-
getClassLoader
Gets the current class loader.- Returns:
- the class loader
-
getConstructor
Returns a class constructor.- Parameters:
ctorHandle
- a class or class nameargs
- constructor arguments- Returns:
- a
JexlMethod
- Since:
- 3.0
-
getIterator
Gets an iterator from an object.- Parameters:
obj
- to get the iterator from- Returns:
- an iterator over obj or null
-
getMethod
Returns a JexlMethod.- Parameters:
obj
- the objectmethod
- the method nameargs
- method arguments- Returns:
- a
JexlMethod
-
getPropertyGet
JexlPropertyGet getPropertyGet(List<JexlUberspect.PropertyResolver> resolvers, Object obj, Object identifier) Property getter.Seeks a JexlPropertyGet apropos to an expression like
Seebar.woogie
.JexlUberspect.ResolverStrategy.apply(JexlOperator, java.lang.Object)
- Parameters:
resolvers
- the list of property resolvers to tryobj
- the object to get the property fromidentifier
- property name- Returns:
- a
JexlPropertyGet
or null - Since:
- 3.0
-
getPropertyGet
Property getter.returns a JelPropertySet apropos to an expression like
bar.woogie
.- Parameters:
obj
- the object to get the property fromidentifier
- property name- Returns:
- a
JexlPropertyGet
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
Seefoo.bar = "geir"
.JexlUberspect.ResolverStrategy.apply(JexlOperator, java.lang.Object)
- Parameters:
resolvers
- the list of property resolvers to try,obj
- the object to get the property fromidentifier
- property namearg
- value to set- Returns:
- a
JexlPropertySet
or null - Since:
- 3.0
-
getPropertySet
Property setter.Seeks a JelPropertySet apropos to an expression like
foo.bar = "geir"
.- Parameters:
obj
- the object to get the property from.identifier
- property namearg
- value to set- Returns:
- a
JexlPropertySet
or null
-
getResolvers
Applies this uberspect property resolver strategy.- Parameters:
op
- the operatorobj
- the object- Returns:
- the applied strategy resolver list
-
getVersion
int getVersion()Gets this uberspect version.- Returns:
- the class loader modification count
-
setClassLoader
Sets the class loader to use.This increments the version.
- Parameters:
loader
- the class loader
-