|
||||||||||
| 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 builder| Method 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()
JexlEngineJexlUberspect.
getUberspect in class JexlEnginepublic JexlArithmetic getArithmetic()
JexlEngineJexlArithmetic.
getArithmetic in class JexlEnginepublic boolean isDebug()
JexlEngine
isDebug in class JexlEnginepublic boolean isSilent()
JexlEngine
isSilent in class JexlEnginepublic boolean isStrict()
JexlEngine
isStrict in class JexlEnginepublic boolean isCancellable()
JexlEngine
isCancellable in class JexlEnginepublic void setClassLoader(ClassLoader loader)
JexlEngineThis 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 JexlEngineloader - the class loader to usepublic Charset getCharset()
JexlEngine
getCharset in class JexlEngine
public TemplateEngine createJxltEngine(boolean noScript,
int cacheSize,
char immediate,
char deferred)
JexlEngineJxltEngine using this engine.
createJxltEngine in class JexlEnginenoScript - 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 JexlEngineinfo - 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 JexlEngineinfo - 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)
JexlEnginejexl.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 JexlEnginebean - the bean to get properties fromexpr - the property expression
public Object getProperty(JexlContext context,
Object bean,
String expr)
JexlEngineIf the JEXL engine is silent, errors will be logged through its logger as warning.
getProperty in class JexlEnginecontext - the evaluation contextbean - the bean to get properties fromexpr - the property expression
public void setProperty(Object bean,
String expr,
Object value)
JexlEnginejexl.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 JexlEnginebean - the bean to set properties inexpr - the property expressionvalue - the value of the property
public void setProperty(JexlContext context,
Object bean,
String expr,
Object value)
JexlEngineIf the JEXL engine is silent, errors will be logged through its logger as warning.
setProperty in class JexlEnginecontext - the evaluation contextbean - the bean to set properties inexpr - the property expressionvalue - the value of the property
public Object invokeMethod(Object obj,
String meth,
Object... args)
JexlEngine
invokeMethod in class JexlEngineobj - 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 JexlEngineT - the type of objectclazz - the class to instantiateargs - the constructor arguments
public Object newInstance(String clazz,
Object... args)
JexlEngine
newInstance in class JexlEngineclazz - 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 | |||||||||