|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.jexl3.internal.Script
public class Script
A JexlScript implementation.
Nested Class Summary | |
---|---|
class |
Script.Callable
Implements the Future and Callable interfaces to help delegation. |
static class |
Script.Curried
A script whose parameters are (partially) bound. |
Field Summary | |
---|---|
protected Engine |
jexl
The engine for this expression. |
protected ASTJexlScript |
script
The resulting AST we can interpret. |
protected String |
source
Original expression stripped from leading and trailing spaces. |
protected int |
version
The engine version (as class loader change count) that last evaluated this script. |
Constructor Summary | |
---|---|
protected |
Script(Engine engine,
String expr,
ASTJexlScript ref)
Do not let this be generally instantiated with a 'new'. |
Method Summary | |
---|---|
Script.Callable |
callable(JexlContext context)
Creates a Callable from this script. |
Script.Callable |
callable(JexlContext context,
Object... args)
Creates a Callable from this script. |
protected void |
checkCacheVersion()
Checks that this script cached methods (wrt introspection) matches the engine version. |
protected Scope.Frame |
createFrame(Object[] args)
Creates this script frame for evaluation. |
protected Interpreter |
createInterpreter(JexlContext context,
Scope.Frame frame)
Creates this script interpreter. |
JexlScript |
curry(Object... args)
Curries this script, returning a script with bound arguments. |
boolean |
equals(Object obj)
|
Object |
evaluate(JexlContext context)
Evaluates the expression with the variables contained in the supplied JexlContext . |
Object |
execute(JexlContext context)
Executes the script with the variables contained in the supplied JexlContext . |
Object |
execute(JexlContext context,
Object... args)
Executes the script with the variables contained in the supplied JexlContext and a set of arguments corresponding to the
parameters used during parsing. |
JexlEngine |
getEngine()
|
String[] |
getLocalVariables()
Gets this script local variables. |
String[] |
getParameters()
Gets this script parameters. |
String |
getParsedText()
Recreates the source text of this expression from the internal syntactic tree. |
String |
getParsedText(int indent)
Recreates the source text of this expression from the internal syntactic tree. |
Map<String,Object> |
getPragmas()
Get this script pragmas |
String |
getSourceText()
Returns the source text of this expression. |
Set<List<String>> |
getVariables()
Gets this script variables. |
int |
hashCode()
|
String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final Engine jexl
protected final String source
protected final ASTJexlScript script
protected int version
Constructor Detail |
---|
protected Script(Engine engine, String expr, ASTJexlScript ref)
engine
- the interpreter to evaluate the expressionexpr
- the expression source.ref
- the parsed expression.Method Detail |
---|
protected void checkCacheVersion()
If the engine class loader has changed since we last evaluated this script, the script local cache is invalidated to drop references to obsolete methods. It is not strictly necessary since the tryExecute will fail because the class wont match but it seems cleaner nevertheless.
protected Scope.Frame createFrame(Object[] args)
args
- the arguments to bind to parameters
protected Interpreter createInterpreter(JexlContext context, Scope.Frame frame)
context
- the contextframe
- the calling frame
public JexlEngine getEngine()
public String getSourceText()
JexlScript
getSourceText
in interface JexlExpression
getSourceText
in interface JexlScript
public String getParsedText()
JexlScript
getParsedText
in interface JexlExpression
getParsedText
in interface JexlScript
public String getParsedText(int indent)
JexlScript
getParsedText
in interface JexlScript
indent
- the number of spaces for indentation, 0 meaning no indentation
public int hashCode()
hashCode
in class Object
public boolean equals(Object obj)
equals
in class Object
public String toString()
toString
in class Object
public Object evaluate(JexlContext context)
JexlExpression
JexlContext
.
evaluate
in interface JexlExpression
context
- A JexlContext containing variables.
public Object execute(JexlContext context)
JexlScript
JexlContext
.
execute
in interface JexlScript
context
- A JexlContext containing variables.
public Object execute(JexlContext context, Object... args)
JexlScript
JexlContext
and a set of arguments corresponding to the
parameters used during parsing.
execute
in interface JexlScript
context
- A JexlContext containing variables.args
- the arguments
public JexlScript curry(Object... args)
JexlScript
If this script does not declare parameters or if all of them are already bound, no error is generated and this script is returned.
curry
in interface JexlScript
args
- the arguments to bind
public String[] getParameters()
getParameters
in interface JexlScript
public String[] getLocalVariables()
getLocalVariables
in interface JexlScript
public Set<List<String>> getVariables()
Note that since variables can be in an ant-ish form (ie foo.bar.quux), each variable is returned as a list of strings where each entry is a fragment of the variable ({"foo", "bar", "quux"} in the example.
getVariables
in interface JexlScript
public Map<String,Object> getPragmas()
Pragma keys are ant-ish variables, their values are scalar literals..
getPragmas
in interface JexlScript
public Script.Callable callable(JexlContext context)
This allows to submit it to an executor pool and provides support for asynchronous calls.
The interpreter will handle interruption/cancellation gracefully if needed.
callable
in interface JexlExpression
callable
in interface JexlScript
context
- the context
public Script.Callable callable(JexlContext context, Object... args)
This allows to submit it to an executor pool and provides support for asynchronous calls.
The interpreter will handle interruption/cancellation gracefully if needed.
callable
in interface JexlScript
context
- the contextargs
- the script arguments
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |