Interface JexlUberspect
public interface JexlUberspect
'Federated' introspection/reflection interface to allow JEXL introspection
behavior to be customized.
- Since:
- 1.0
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enumThe various builtin property resolvers.static interfaceAbstracts getting property setter and getter.static interfaceDetermines property resolution strategy. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final JexlUberspect.ResolverStrategyThe default strategy.static final List<JexlUberspect.PropertyResolver> A resolver types list tailored for Maps, favors '[]' over '.'.static final JexlUberspect.ResolverStrategyThe 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.default JexlOperator.UberspectgetOperator(JexlArithmetic arithmetic) Gets an arithmetic operator executor for a given arithmetic instance.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.intGets this uberspect version.voidsetClassLoader(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
- See Also:
-
getOperator
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
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
JexlPropertyGetor 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
JexlPropertyGetor 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
JexlPropertySetor 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
JexlPropertySetor 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
-