|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.jexl3.JexlEngine
org.apache.commons.jexl3.internal.Engine
public class Engine
A JexlEngine implementation.
Nested Class Summary | |
---|---|
protected static class |
Engine.VarCollector
Utility class to collect variables. |
Nested classes/interfaces inherited from class org.apache.commons.jexl3.JexlEngine |
---|
JexlEngine.Options |
Field Summary | |
---|---|
protected JexlArithmetic |
arithmetic
The JexlArithmetic instance. |
protected SoftCache<String,ASTJexlScript> |
cache
The expression cache. |
protected int |
cacheThreshold
The expression max length to hit the cache. |
protected boolean |
cancellable
Whether expressions evaluated by this engine will throw JexlException.Cancel (true) or return null (false) when interrupted. |
protected Charset |
charset
The default charset. |
protected boolean |
debug
Whether error messages will carry debugging information. |
protected Map<String,Object> |
functions
The map of 'prefix:function' to object implementing the namespaces. |
protected TemplateEngine |
jxlt
The default jxlt engine. |
protected org.apache.commons.logging.Log |
logger
The Log to which all JexlEngine messages will be logged. |
protected Parser |
parser
The Parser ; when parsing expressions, this engine uses the parser if it
is not already in use otherwise it will create a new temporary one. |
protected AtomicBoolean |
parsing
The atomic parsing flag; true whilst parsing. |
protected boolean |
silent
Whether expressions evaluated by this engine will throw exceptions (false) or return null (true) on errors. |
protected boolean |
strict
Whether this engine considers unknown variables, methods and constructors as errors. |
protected JexlUberspect |
uberspect
The JexlUberspect instance. |
Fields inherited from class org.apache.commons.jexl3.JexlEngine |
---|
CONTEXT, EMPTY_CONTEXT, EMPTY_NS, TRY_FAILED |
Constructor Summary | |
---|---|
Engine()
Creates an engine with default arguments. |
|
Engine(JexlBuilder conf)
Creates a JEXL engine using the provided JexlBuilder . |
Method Summary | ||
---|---|---|
void |
clearCache()
Clears the expression cache. |
|
Script |
createExpression(JexlInfo info,
String expression)
Creates an JexlExpression from a String containing valid JEXL syntax. |
|
protected Interpreter |
createInterpreter(JexlContext context,
Scope.Frame frame)
Creates an interpreter. |
|
TemplateEngine |
createJxltEngine(boolean noScript,
int cacheSize,
char immediate,
char deferred)
Creates a new instance of JxltEngine using this engine. |
|
Script |
createScript(JexlInfo info,
String scriptText,
String[] names)
Creates a JexlScript from a String containing valid JEXL syntax. |
|
protected Object |
doCreateInstance(Object clazz,
Object... args)
Creates a new instance of an object using the most appropriate constructor based on the arguments. |
|
JexlArithmetic |
getArithmetic()
Gets this engine underlying JexlArithmetic . |
|
Charset |
getCharset()
Gets the charset used for parsing. |
|
protected String[] |
getLocalVariables(JexlScript script)
Gets the array of local variable from a script. |
|
protected String[] |
getParameters(JexlScript script)
Gets the array of parameters from a script. |
|
Object |
getProperty(JexlContext context,
Object bean,
String expr)
Accesses properties of a bean using an expression. |
|
Object |
getProperty(Object bean,
String expr)
Accesses properties of a bean using an expression. |
|
JexlUberspect |
getUberspect()
Gets this engine underlying JexlUberspect . |
|
static Uberspect |
getUberspect(org.apache.commons.logging.Log logger,
JexlUberspect.ResolverStrategy strategy)
Gets the default instance of Uberspect. |
|
protected Set<List<String>> |
getVariables(ASTJexlScript script)
Gets the list of variables accessed by a script. |
|
protected void |
getVariables(ASTJexlScript script,
JexlNode node,
Engine.VarCollector collector)
Fills up the list of variables accessed by a node. |
|
Object |
invokeMethod(Object obj,
String meth,
Object... args)
Invokes an object's method by name and arguments. |
|
boolean |
isCancellable()
Checks whether this engine will throw JexlException.Cancel (true) or return null (false) when interrupted during an execution. |
|
boolean |
isDebug()
Checks whether this engine is in debug mode. |
|
boolean |
isSilent()
Checks whether this engine throws JexlException during evaluation. |
|
boolean |
isStrict()
Checks whether this engine considers unknown variables, methods, functions and constructors as errors. |
|
protected TemplateEngine |
jxlt()
Gets and/or creates a default template engine. |
|
|
newInstance(Class<? extends T> clazz,
Object... args)
Creates a new instance of an object using the most appropriate constructor based on the arguments. |
|
Object |
newInstance(String clazz,
Object... args)
Creates a new instance of an object using the most appropriate constructor based on the arguments. |
|
protected ASTJexlScript |
parse(JexlInfo info,
String src,
Scope scope,
boolean registers,
boolean expression)
Parses an expression. |
|
protected JexlContext.ThreadLocal |
putThreadLocal(JexlContext.ThreadLocal tls)
Swaps the current thread local context. |
|
void |
setClassLoader(ClassLoader loader)
Sets the class loader used to discover classes in 'new' expressions. |
|
void |
setProperty(JexlContext context,
Object bean,
String expr,
Object value)
Assign properties of a bean using an expression. |
|
void |
setProperty(Object bean,
String expr,
Object value)
Assign properties of a bean using an expression. |
|
protected String |
trimSource(CharSequence str)
Trims the source from front and ending spaces. |
Methods inherited from class org.apache.commons.jexl3.JexlEngine |
---|
createExpression, createInfo, createInfo, createJxltEngine, createJxltEngine, createScript, createScript, createScript, createScript, createScript, createScript, createScript, createScript, getThreadContext, readSource, readSource, setThreadContext, toString |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final JexlUberspect uberspect
protected final JexlArithmetic arithmetic
JexlArithmetic
instance.
protected final org.apache.commons.logging.Log logger
protected final AtomicBoolean parsing
protected final Parser parser
Parser
; when parsing expressions, this engine uses the parser if it
is not already in use otherwise it will create a new temporary one.
protected final boolean strict
protected final boolean silent
protected final boolean cancellable
protected final boolean debug
protected final Map<String,Object> functions
protected final SoftCache<String,ASTJexlScript> cache
protected final int cacheThreshold
protected final Charset charset
protected volatile TemplateEngine jxlt
Constructor Detail |
---|
public Engine()
public Engine(JexlBuilder conf)
JexlBuilder
.
conf
- the builderMethod Detail |
---|
public static Uberspect getUberspect(org.apache.commons.logging.Log logger, JexlUberspect.ResolverStrategy strategy)
This is lazily initialized to avoid building a default instance if there is no use for it. The main reason for not using the default Uberspect instance is to be able to use a (low level) introspector created with a given logger instead of the default one.
logger
- the logger to use for the underlying Uberspectstrategy
- the property resolver strategy
public JexlUberspect getUberspect()
JexlEngine
JexlUberspect
.
getUberspect
in class JexlEngine
public JexlArithmetic getArithmetic()
JexlEngine
JexlArithmetic
.
getArithmetic
in class JexlEngine
public boolean isDebug()
JexlEngine
isDebug
in class JexlEngine
public boolean isSilent()
JexlEngine
isSilent
in class JexlEngine
public boolean isStrict()
JexlEngine
isStrict
in class JexlEngine
public boolean isCancellable()
JexlEngine
isCancellable
in class JexlEngine
public void setClassLoader(ClassLoader loader)
JexlEngine
This method is not thread safe; it should be called as an optional step of the JexlEngine initialization code before expression creation & evaluation.
setClassLoader
in class JexlEngine
loader
- the class loader to usepublic Charset getCharset()
JexlEngine
getCharset
in class JexlEngine
public TemplateEngine createJxltEngine(boolean noScript, int cacheSize, char immediate, char deferred)
JexlEngine
JxltEngine
using this engine.
createJxltEngine
in class JexlEngine
noScript
- whether the JxltEngine only allows JEXL expressions or scriptscacheSize
- the number of expressions in this cache, default is 256immediate
- the immediate template expression character, default is '$'deferred
- the deferred template expression character, default is '#'
public void clearCache()
JexlEngine
clearCache
in class JexlEngine
protected Interpreter createInterpreter(JexlContext context, Scope.Frame frame)
context
- a JexlContext; if null, the empty context is used instead.frame
- the interpreter frame
public Script createScript(JexlInfo info, String scriptText, String[] names)
JexlEngine
createScript
in class JexlEngine
info
- An info structure to carry debugging information if neededscriptText
- A string containing valid JEXL syntaxnames
- The script parameter names used during parsing; a corresponding array of arguments containing
values should be used during evaluation
JexlScript
which can be executed using a JexlContext
public Script createExpression(JexlInfo info, String expression)
JexlEngine
createExpression
in class JexlEngine
info
- An info structure to carry debugging information if neededexpression
- A String containing valid JEXL syntax
JexlExpression
which can be evaluated using a JexlContext
public Object getProperty(Object bean, String expr)
JexlEngine
jexl.get(myobject, "foo.bar"); should equate to myobject.getFoo().getBar(); (or myobject.getFoo().get("bar"))
If the JEXL engine is silent, errors will be logged through its logger as warning.
getProperty
in class JexlEngine
bean
- the bean to get properties fromexpr
- the property expression
public Object getProperty(JexlContext context, Object bean, String expr)
JexlEngine
If the JEXL engine is silent, errors will be logged through its logger as warning.
getProperty
in class JexlEngine
context
- the evaluation contextbean
- the bean to get properties fromexpr
- the property expression
public void setProperty(Object bean, String expr, Object value)
JexlEngine
jexl.set(myobject, "foo.bar", 10); should equate to myobject.getFoo().setBar(10); (or myobject.getFoo().put("bar", 10) )
If the JEXL engine is silent, errors will be logged through its logger as warning.
setProperty
in class JexlEngine
bean
- the bean to set properties inexpr
- the property expressionvalue
- the value of the propertypublic void setProperty(JexlContext context, Object bean, String expr, Object value)
JexlEngine
If the JEXL engine is silent, errors will be logged through its logger as warning.
setProperty
in class JexlEngine
context
- the evaluation contextbean
- the bean to set properties inexpr
- the property expressionvalue
- the value of the propertypublic Object invokeMethod(Object obj, String meth, Object... args)
JexlEngine
invokeMethod
in class JexlEngine
obj
- the method's invoker objectmeth
- the method's nameargs
- the method's arguments
public <T> T newInstance(Class<? extends T> clazz, Object... args)
JexlEngine
newInstance
in class JexlEngine
T
- the type of objectclazz
- the class to instantiateargs
- the constructor arguments
public Object newInstance(String clazz, Object... args)
JexlEngine
newInstance
in class JexlEngine
clazz
- the name of the class to instantiate resolved through this engine's class loaderargs
- the constructor arguments
protected Object doCreateInstance(Object clazz, Object... args)
clazz
- the class to instantiateargs
- the constructor arguments
protected JexlContext.ThreadLocal putThreadLocal(JexlContext.ThreadLocal tls)
tls
- the context or null
protected Set<List<String>> getVariables(ASTJexlScript script)
This method will visit all nodes of a script and extract all variables whether they are written in 'dot' or 'bracketed' notation. (a.b is equivalent to a['b']).
script
- the script
protected void getVariables(ASTJexlScript script, JexlNode node, Engine.VarCollector collector)
script
- the owning scriptnode
- the nodecollector
- the variable collectorprotected String[] getParameters(JexlScript script)
script
- the script
protected String[] getLocalVariables(JexlScript script)
script
- the script
protected ASTJexlScript parse(JexlInfo info, String src, Scope scope, boolean registers, boolean expression)
info
- information structuresrc
- the expression to parsescope
- the script frameregisters
- whether the parser should allow the unnamed '#number' syntax for 'registers'expression
- whether the parser allows scripts or only expressions
JexlException
- if any error occurred during parsingprotected String trimSource(CharSequence str)
str
- expression to clean
protected TemplateEngine jxlt()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |