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 interfaceJexlUberspect.ClassConstantResolverA marker interface that solves a class constant by name.static interfaceJexlUberspect.ClassNameResolverA marker interface that solves a simple class name into a fully qualified one.static interfaceJexlUberspect.ConstantResolverFactoryThe factory type for creating constant resolvers.static classJexlUberspect.JexlResolverThe various builtin property resolvers.static interfaceJexlUberspect.PropertyResolverAbstracts getting property setter and getter.static interfaceJexlUberspect.ResolverStrategyDetermines property resolution strategy.
-
Field Summary
Fields Modifier and Type Field Description static JexlUberspect.ResolverStrategyJEXL_STRATEGYThe default strategy.static java.util.List<JexlUberspect.PropertyResolver>MAPA resolver types list tailored for Maps, favors '[]' over '.'.static JexlUberspect.ResolverStrategyMAP_STRATEGYThe map strategy.static java.util.List<JexlUberspect.PropertyResolver>POJOA resolver types list tailored for POJOs, favors '.' over '[]'.
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description JexlArithmetic.UberspectgetArithmetic(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.ClassLoadergetClassLoader()Gets the current class loader.JexlMethodgetConstructor(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.JexlMethodgetMethod(java.lang.Object obj, java.lang.String method, java.lang.Object... args)Returns a JexlMethod.default JexlOperator.UberspectgetOperator(JexlArithmetic arithmetic)Gets an arithmetic operator executor for a given arithmetic instance.JexlPropertyGetgetPropertyGet(java.lang.Object obj, java.lang.Object identifier)Property getter.JexlPropertyGetgetPropertyGet(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.Object identifier)Property getter.JexlPropertySetgetPropertySet(java.lang.Object obj, java.lang.Object identifier, java.lang.Object arg)Property setter.JexlPropertySetgetPropertySet(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.intgetVersion()Gets this uberspect version.voidsetClassLoader(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
- See Also:
getOperator(JexlArithmetic)
-
getOperator
default JexlOperator.Uberspect getOperator(JexlArithmetic arithmetic)
Gets an arithmetic operator executor for a given arithmetic instance.- Parameters:
arithmetic- the arithmetic instance- Returns:
- an operator uberspect instance
- Since:
- 3.5.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, Object)- Parameters:
resolvers- the list of property resolvers to tryobj- the object to get the property fromidentifier- property name- Returns:
- a
JexlPropertyGetor 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
JexlPropertyGetor 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, 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
JexlPropertySetor 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
JexlPropertySetor 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
-
-