public class Interpreter
extends java.lang.Object
implements org.apache.commons.jexl2.parser.ParserVisitor
Modifier and Type | Field and Description |
---|---|
protected JexlArithmetic |
arithmetic
The arithmetic handler.
|
protected boolean |
cache
Cache executors.
|
protected JexlContext |
context
The context to store/retrieve variables.
|
protected static java.lang.Object[] |
EMPTY_PARAMS
Empty parameters for method matching.
|
protected java.util.Map<java.lang.String,java.lang.Object> |
functions
The map of registered functions.
|
protected java.util.Map<java.lang.String,java.lang.Object> |
functors
The map of registered functions.
|
protected org.apache.commons.logging.Log |
logger
The logger.
|
protected java.lang.Object[] |
registers
Registers or arguments.
|
protected boolean |
silent
Silent intepreter flag.
|
protected boolean |
strict
Strict interpreter flag.
|
protected Uberspect |
uberspect
The uberspect.
|
Modifier | Constructor and Description |
---|---|
protected |
Interpreter(Interpreter base)
Copy constructor.
|
|
Interpreter(JexlEngine jexl,
JexlContext aContext)
Deprecated.
|
|
Interpreter(JexlEngine jexl,
JexlContext aContext,
boolean strictFlag,
boolean silentFlag)
Creates an interpreter.
|
Modifier and Type | Method and Description |
---|---|
protected JexlNode |
findNullOperand(java.lang.RuntimeException xrt,
JexlNode node,
java.lang.Object left,
java.lang.Object right)
Finds the node causing a NPE for diadic operators.
|
java.lang.Object |
getAttribute(java.lang.Object object,
java.lang.Object attribute)
Gets an attribute of an object.
|
protected java.lang.Object |
getAttribute(java.lang.Object object,
java.lang.Object attribute,
JexlNode node)
Gets an attribute of an object.
|
protected JexlContext |
getContext()
Gets the context.
|
protected Uberspect |
getUberspect()
Gets the uberspect.
|
java.lang.Object |
interpret(JexlNode node)
Interpret the given script/expression.
|
protected java.lang.Object |
invocationFailed(JexlException xjexl)
Triggered when method, function or constructor invocation fails.
|
protected boolean |
isCancelled()
Checks whether this interpreter execution was cancelled due to thread interruption.
|
boolean |
isSilent()
Checks whether this interpreter throws JexlException when encountering errors.
|
boolean |
isStrict()
Checks whether this interpreter considers unknown variables, methods and constructors as errors.
|
protected java.lang.Object |
resolveNamespace(java.lang.String prefix,
JexlNode node)
Resolves a namespace, eventually allocating an instance using context as constructor argument.
|
void |
setAttribute(java.lang.Object object,
java.lang.Object attribute,
java.lang.Object value)
Sets an attribute of an object.
|
protected void |
setAttribute(java.lang.Object object,
java.lang.Object attribute,
java.lang.Object value,
JexlNode node)
Sets an attribute of an object.
|
protected void |
setFrame(JexlEngine.Frame frame)
Sets this interpreter parameters and arguments.
|
protected void |
setRegisters(java.lang.Object... theRegisters)
Deprecated.
|
void |
setSilent(boolean flag)
Deprecated.
Do not use; will be removed in a later version
|
void |
setStrict(boolean flag)
Deprecated.
Do not use; will be removed in a later version
|
protected java.lang.Object |
unknownVariable(JexlException xjexl)
Triggered when variable can not be resolved.
|
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTAdditiveNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTAdditiveOperator node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTAmbiguous node,
java.lang.Object data)
Unused, should throw in Parser.
|
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTAndNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTArrayAccess node,
java.lang.Object data) |
java.lang.Object |
visit(ASTArrayLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTAssignment node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTBitwiseAndNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTBitwiseComplNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTBitwiseOrNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTBitwiseXorNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTBlock node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTConstructorNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTDivNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTEmptyFunction node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTEQNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTERNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTFalseNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTFloatLiteral node,
java.lang.Object data)
Deprecated.
Do not use
|
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTForeachStatement node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTFunctionNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTGENode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTGTNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTIdentifier node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTIfStatement node,
java.lang.Object data) |
java.lang.Object |
visit(ASTIntegerLiteral node,
java.lang.Object data)
Deprecated.
Do not use
|
java.lang.Object |
visit(ASTJexlScript node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTLENode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTLTNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTMapEntry node,
java.lang.Object data) |
java.lang.Object |
visit(ASTMapLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTMethodNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTModNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTMulNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTNENode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTNotNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTNRNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTNullLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(ASTNumberLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTOrNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTReferenceExpression node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTReference node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTReturnStatement node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTSizeFunction node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTSizeMethod node,
java.lang.Object data) |
java.lang.Object |
visit(ASTStringLiteral node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTTernaryNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTTrueNode node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTUnaryMinusNode node,
java.lang.Object data) |
java.lang.Object |
visit(ASTVar node,
java.lang.Object data) |
java.lang.Object |
visit(org.apache.commons.jexl2.parser.ASTWhileStatement node,
java.lang.Object data) |
java.lang.Object |
visit(SimpleNode node,
java.lang.Object data)
Unused, satisfy ParserVisitor interface.
|
protected final org.apache.commons.logging.Log logger
protected final Uberspect uberspect
protected final JexlArithmetic arithmetic
protected final java.util.Map<java.lang.String,java.lang.Object> functions
protected java.util.Map<java.lang.String,java.lang.Object> functors
protected final JexlContext context
protected boolean strict
protected boolean silent
protected final boolean cache
protected java.lang.Object[] registers
protected static final java.lang.Object[] EMPTY_PARAMS
@Deprecated public Interpreter(JexlEngine jexl, JexlContext aContext)
jexl
- the engine creating this interpreteraContext
- the context to evaluate expressionpublic Interpreter(JexlEngine jexl, JexlContext aContext, boolean strictFlag, boolean silentFlag)
jexl
- the engine creating this interpreteraContext
- the context to evaluate expressionstrictFlag
- whether this interpreter runs in strict modesilentFlag
- whether this interpreter runs in silent modeprotected Interpreter(Interpreter base)
base
- the base to copy@Deprecated public void setStrict(boolean flag)
flag
- true for strict, false for lenient@Deprecated public void setSilent(boolean flag)
flag
- true for silent, false for verbosepublic boolean isStrict()
public boolean isSilent()
public java.lang.Object interpret(JexlNode node)
If the underlying JEXL engine is silent, errors will be logged through its logger as info.
node
- the script or expression to interpret.JexlException
- if any error occurs during interpretation.protected JexlContext getContext()
JexlContext
used for evaluation.@Deprecated protected void setRegisters(java.lang.Object... theRegisters)
Use setFrame(...) instead.
theRegisters
- the array of registersprotected void setFrame(JexlEngine.Frame frame)
frame
- the calling frameprotected JexlNode findNullOperand(java.lang.RuntimeException xrt, JexlNode node, java.lang.Object left, java.lang.Object right)
xrt
- the RuntimeExceptionnode
- the parent nodeleft
- the left argumentright
- the right argumentprotected java.lang.Object unknownVariable(JexlException xjexl)
xjexl
- the JexlException ("undefined variable " + variable)protected java.lang.Object invocationFailed(JexlException xjexl)
xjexl
- the JexlException wrapping the original errorprotected boolean isCancelled()
protected java.lang.Object resolveNamespace(java.lang.String prefix, JexlNode node)
prefix
- the prefix name (may be null for global namespace)node
- the AST nodepublic java.lang.Object visit(org.apache.commons.jexl2.parser.ASTAdditiveNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTAdditiveOperator node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTAndNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTArrayAccess node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTArrayLiteral node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTAssignment node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTBitwiseAndNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTBitwiseComplNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTBitwiseOrNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTBitwiseXorNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTBlock node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTDivNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTEmptyFunction node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTEQNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTFalseNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTForeachStatement node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTGENode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTGTNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTERNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTIdentifier node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
@Deprecated public java.lang.Object visit(ASTFloatLiteral node, java.lang.Object data)
@Deprecated public java.lang.Object visit(ASTIntegerLiteral node, java.lang.Object data)
public java.lang.Object visit(ASTVar node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTIfStatement node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTNumberLiteral node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTJexlScript node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTLENode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTLTNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTMapEntry node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTMapLiteral node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTMethodNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTFunctionNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTConstructorNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTModNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTMulNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTNENode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTNRNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTNotNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTNullLiteral node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTOrNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTReference node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTReferenceExpression node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTReturnStatement node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTSizeFunction node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTSizeMethod node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(ASTStringLiteral node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTTernaryNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTTrueNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTUnaryMinusNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object visit(org.apache.commons.jexl2.parser.ASTWhileStatement node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
public java.lang.Object getAttribute(java.lang.Object object, java.lang.Object attribute)
object
- to retrieve value fromattribute
- the attribute of the object, e.g. an index (1, 0, 2) or
key for a mapprotected java.lang.Object getAttribute(java.lang.Object object, java.lang.Object attribute, JexlNode node)
object
- to retrieve value fromattribute
- the attribute of the object, e.g. an index (1, 0, 2) or
key for a mapnode
- the node that evaluated as the objectpublic void setAttribute(java.lang.Object object, java.lang.Object attribute, java.lang.Object value)
object
- to set the value toattribute
- the attribute of the object, e.g. an index (1, 0, 2) or
key for a mapvalue
- the value to assign to the object's attributeprotected void setAttribute(java.lang.Object object, java.lang.Object attribute, java.lang.Object value, JexlNode node)
object
- to set the value toattribute
- the attribute of the object, e.g. an index (1, 0, 2) or
key for a mapvalue
- the value to assign to the object's attributenode
- the node that evaluated as the objectpublic java.lang.Object visit(SimpleNode node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
node
- a nodedata
- the datapublic java.lang.Object visit(org.apache.commons.jexl2.parser.ASTAmbiguous node, java.lang.Object data)
visit
in interface org.apache.commons.jexl2.parser.ParserVisitor
node
- a nodedata
- the dataCopyright © 2001-2013 The Apache Software Foundation. All Rights Reserved.