Class SandboxUberspect
- java.lang.Object
-
- org.apache.commons.jexl3.internal.introspection.SandboxUberspect
-
- All Implemented Interfaces:
JexlUberspect
public final class SandboxUberspect extends java.lang.Object implements JexlUberspect
An uberspect that controls usage of properties, methods and constructors through a sandbox.- Since:
- 3.0
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.commons.jexl3.introspection.JexlUberspect
JexlUberspect.ClassConstantResolver, JexlUberspect.ClassNameResolver, JexlUberspect.ConstantResolverFactory, JexlUberspect.JexlResolver, JexlUberspect.PropertyResolver, JexlUberspect.ResolverStrategy
-
-
Field Summary
Fields Modifier and Type Field Description private JexlSandboxsandboxThe sandbox.private JexlUberspectuberspectThe base uberspect.-
Fields inherited from interface org.apache.commons.jexl3.introspection.JexlUberspect
JEXL_STRATEGY, MAP, MAP_STRATEGY, POJO
-
-
Constructor Summary
Constructors Constructor Description SandboxUberspect(JexlUberspect theUberspect, JexlSandbox theSandbox)A constructor for JexlSandbox uberspect.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static booleaneq(java.lang.Object lhs, java.lang.Object rhs)Identity equality.JexlArithmetic.UberspectgetArithmetic(JexlArithmetic arithmetic)Gets an arithmetic operator resolver for a given arithmetic instance.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.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.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.commons.jexl3.introspection.JexlUberspect
getOperator
-
-
-
-
Field Detail
-
uberspect
private final JexlUberspect uberspect
The base uberspect.
-
sandbox
private final JexlSandbox sandbox
The sandbox.
-
-
Constructor Detail
-
SandboxUberspect
public SandboxUberspect(JexlUberspect theUberspect, JexlSandbox theSandbox)
A constructor for JexlSandbox uberspect.- Parameters:
theUberspect- the JexlUberspect to sandboxtheSandbox- the sandbox which is copied to avoid changes at runtime
-
-
Method Detail
-
eq
private static boolean eq(java.lang.Object lhs, java.lang.Object rhs)Identity equality.Spotbugs just hates string identity...
- Parameters:
lhs- left hand siderhs- right hand side- Returns:
- true if left is identical to right
-
getArithmetic
public JexlArithmetic.Uberspect getArithmetic(JexlArithmetic arithmetic)
Description copied from interface:JexlUberspectGets an arithmetic operator resolver for a given arithmetic instance.- Specified by:
getArithmeticin interfaceJexlUberspect- Parameters:
arithmetic- the arithmetic instance- Returns:
- the arithmetic uberspect or null if no operator method were overridden
- See Also:
JexlUberspect.getOperator(JexlArithmetic)
-
getClassByName
public java.lang.Class<?> getClassByName(java.lang.String className)
Description copied from interface:JexlUberspectSeeks a class by name using this uberspect class-loader.- Specified by:
getClassByNamein interfaceJexlUberspect- 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
public java.lang.ClassLoader getClassLoader()
Description copied from interface:JexlUberspectGets the current class loader.- Specified by:
getClassLoaderin interfaceJexlUberspect- Returns:
- the class loader
-
getConstructor
public JexlMethod getConstructor(java.lang.Object ctorHandle, java.lang.Object... args)
Description copied from interface:JexlUberspectReturns a class constructor.- Specified by:
getConstructorin interfaceJexlUberspect- Parameters:
ctorHandle- a class or class nameargs- constructor arguments- Returns:
- a
JexlMethod
-
getIterator
public java.util.Iterator<?> getIterator(java.lang.Object obj)
Description copied from interface:JexlUberspectGets an iterator from an object.- Specified by:
getIteratorin interfaceJexlUberspect- Parameters:
obj- to get the iterator from- Returns:
- an iterator over obj or null
-
getMethod
public JexlMethod getMethod(java.lang.Object obj, java.lang.String method, java.lang.Object... args)
Description copied from interface:JexlUberspectReturns a JexlMethod.- Specified by:
getMethodin interfaceJexlUberspect- Parameters:
obj- the objectmethod- the method nameargs- method arguments- Returns:
- a
JexlMethod
-
getPropertyGet
public JexlPropertyGet getPropertyGet(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.Object identifier)
Description copied from interface:JexlUberspectProperty getter.Seeks a JexlPropertyGet apropos to an expression like
Seebar.woogie.JexlUberspect.ResolverStrategy.apply(JexlOperator, Object)- Specified by:
getPropertyGetin interfaceJexlUberspect- Parameters:
resolvers- the list of property resolvers to tryobj- the object to get the property fromidentifier- property name- Returns:
- a
JexlPropertyGetor null
-
getPropertyGet
public JexlPropertyGet getPropertyGet(java.lang.Object obj, java.lang.Object identifier)
Description copied from interface:JexlUberspectProperty getter.returns a JelPropertySet apropos to an expression like
bar.woogie.- Specified by:
getPropertyGetin interfaceJexlUberspect- Parameters:
obj- the object to get the property fromidentifier- property name- Returns:
- a
JexlPropertyGetor null
-
getPropertySet
public JexlPropertySet getPropertySet(java.util.List<JexlUberspect.PropertyResolver> resolvers, java.lang.Object obj, java.lang.Object identifier, java.lang.Object arg)
Description copied from interface:JexlUberspectProperty setter.Seeks a JelPropertySet apropos to an expression like
Seefoo.bar = "geir".JexlUberspect.ResolverStrategy.apply(JexlOperator, Object)- Specified by:
getPropertySetin interfaceJexlUberspect- 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
-
getPropertySet
public JexlPropertySet getPropertySet(java.lang.Object obj, java.lang.Object identifier, java.lang.Object arg)
Description copied from interface:JexlUberspectProperty setter.Seeks a JelPropertySet apropos to an expression like
foo.bar = "geir".- Specified by:
getPropertySetin interfaceJexlUberspect- Parameters:
obj- the object to get the property from.identifier- property namearg- value to set- Returns:
- a
JexlPropertySetor null
-
getResolvers
public java.util.List<JexlUberspect.PropertyResolver> getResolvers(JexlOperator op, java.lang.Object obj)
Description copied from interface:JexlUberspectApplies this uberspect property resolver strategy.- Specified by:
getResolversin interfaceJexlUberspect- Parameters:
op- the operatorobj- the object- Returns:
- the applied strategy resolver list
-
getVersion
public int getVersion()
Description copied from interface:JexlUberspectGets this uberspect version.- Specified by:
getVersionin interfaceJexlUberspect- Returns:
- the class loader modification count
-
setClassLoader
public void setClassLoader(java.lang.ClassLoader loader)
Description copied from interface:JexlUberspectSets the class loader to use.This increments the version.
- Specified by:
setClassLoaderin interfaceJexlUberspect- Parameters:
loader- the class loader
-
-