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
Nested Classes Modifier and Type Interface Description 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
Fields Modifier and Type Field Description static JexlUberspect.ResolverStrategy
JEXL_STRATEGY
The default strategy.static java.util.List<JexlUberspect.PropertyResolver>
MAP
A resolver types list tailored for Maps, favors '[]' over '.'.static JexlUberspect.ResolverStrategy
MAP_STRATEGY
The map strategy.static java.util.List<JexlUberspect.PropertyResolver>
POJO
A resolver types list tailored for POJOs, favors '.' over '[]'.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description JexlArithmetic.Uberspect
getArithmetic(JexlArithmetic arithmetic)
Gets an arithmetic operator resolver for a given arithmetic instance.default java.lang.Class<?>
getClassByName(java.lang.String className)
Seeks a class by name using this uberspect class-loader.java.lang.ClassLoader
getClassLoader()
Gets the current class loader.JexlMethod
getConstructor(java.lang.Object ctorHandle, java.lang.Object... args)
Returns a class constructor.java.util.Iterator<?>
getIterator(java.lang.Object obj)
Gets an iterator from an object.JexlMethod
getMethod(java.lang.Object obj, java.lang.String method, java.lang.Object... args)
Returns a JexlMethod.JexlPropertyGet
getPropertyGet(java.lang.Object obj, java.lang.Object identifier)
Property getter.JexlPropertyGet
getPropertyGet(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.Object identifier)
Property getter.JexlPropertySet
getPropertySet(java.lang.Object obj, java.lang.Object identifier, java.lang.Object arg)
Property setter.JexlPropertySet
getPropertySet(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.Object identifier, java.lang.Object arg)
Property setter.java.util.List<JexlUberspect.PropertyResolver>
getResolvers(JexlOperator op, java.lang.Object obj)
Applies this uberspect property resolver strategy.int
getVersion()
Gets this uberspect version.void
setClassLoader(java.lang.ClassLoader loader)
Sets the class loader to use.
-
-
-
Field Detail
-
POJO
static final java.util.List<JexlUberspect.PropertyResolver> POJO
A resolver types list tailored for POJOs, favors '.' over '[]'.
-
MAP
static final java.util.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
-
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
-
getClassByName
default java.lang.Class<?> getClassByName(java.lang.String className)
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
java.lang.ClassLoader getClassLoader()
Gets the current class loader.- Returns:
- the class loader
-
getConstructor
JexlMethod getConstructor(java.lang.Object ctorHandle, java.lang.Object... args)
Returns a class constructor.- Parameters:
ctorHandle
- a class or class nameargs
- constructor arguments- Returns:
- a
JexlMethod
- Since:
- 3.0
-
getIterator
java.util.Iterator<?> getIterator(java.lang.Object obj)
Gets an iterator from an object.- Parameters:
obj
- to get the iterator from- Returns:
- an iterator over obj or null
-
getMethod
JexlMethod getMethod(java.lang.Object obj, java.lang.String method, java.lang.Object... args)
Returns a JexlMethod.- Parameters:
obj
- the objectmethod
- the method nameargs
- method arguments- Returns:
- a
JexlMethod
-
getPropertyGet
JexlPropertyGet getPropertyGet(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.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
JexlPropertyGet getPropertyGet(java.lang.Object obj, java.lang.Object identifier)
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(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.Object identifier, java.lang.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
JexlPropertySet getPropertySet(java.lang.Object obj, java.lang.Object identifier, java.lang.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 namearg
- value to set- Returns:
- a
JexlPropertySet
or null
-
getResolvers
java.util.List<JexlUberspect.PropertyResolver> getResolvers(JexlOperator op, java.lang.Object obj)
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
void setClassLoader(java.lang.ClassLoader loader)
Sets the class loader to use.This increments the version.
- Parameters:
loader
- the class loader
-
-