Class Closure
java.lang.Object
org.apache.commons.jexl3.internal.Script
org.apache.commons.jexl3.internal.Closure
- All Implemented Interfaces:
JexlExpression,JexlScript
A Script closure.
-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.commons.jexl3.internal.Script
Script.Callable -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final FrameThe frame.protected final JexlOptionsThe options. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedClosure(Interpreter theCaller, ASTJexlLambda lambda) Creates a closure.protectedCreates a curried version of a script. -
Method Summary
Modifier and TypeMethodDescriptioncallable(JexlContext context, Object... args) Creates a Callable from this script.(package private) voidcaptureSelfIfRecursive(Frame parentFrame, int symbol) Enable lambda recursion.booleanevaluate(JexlContext context) Evaluates the expression with the variables contained in the suppliedJexlContext.execute(JexlContext context) Executes the script with the variables contained in the suppliedJexlContext.execute(JexlContext context, Object... args) Executes the script with the variables contained in the suppliedJexlContextand a set of arguments corresponding to the parameters used during parsing.String[]Gets this script unbound parameters.inthashCode()Methods inherited from class org.apache.commons.jexl3.internal.Script
callable, checkCacheVersion, createFrame, createInterpreter, createInterpreter, curry, getCapturedVariables, getEngine, getFeatures, getInfo, getLocalVariables, getParameters, getParsedText, getParsedText, getPragmas, getScript, getSourceText, getVariables, toString
-
Field Details
-
frame
The frame. -
options
The options.
-
-
Constructor Details
-
Closure
Creates a closure.- Parameters:
theCaller- the calling interpreterlambda- the lambda
-
Closure
Creates a curried version of a script.- Parameters:
base- the base scriptargs- the script arguments
-
-
Method Details
-
callable
Description copied from class:ScriptCreates a Callable from this script.This allows to submit it to an executor pool and provides support for asynchronous calls.
The interpreter will handle interruption/cancellation gracefully if needed.
- Specified by:
callablein interfaceJexlScript- Overrides:
callablein classScript- Parameters:
context- the contextargs- the script arguments- Returns:
- the callable
-
captureSelfIfRecursive
Enable lambda recursion.Assign this lambda in its own frame if the symbol it is assigned to in its definition scope is captured in its body.
This done allow a locally defined function to "see" and call itself as a local (captured) variable.
Typical case is:const f = (x)->x <= 0? 1 : x*f(x-1). Since assignment of f occurs after the lambda creation, we need to patch the lambda frame to expose itself through the captured symbol.- Parameters:
parentFrame- the parent calling framesymbol- the symbol index (in the caller of this closure)
-
equals
-
evaluate
Description copied from interface:JexlExpressionEvaluates the expression with the variables contained in the suppliedJexlContext.- Specified by:
evaluatein interfaceJexlExpression- Overrides:
evaluatein classScript- Parameters:
context- A JexlContext containing variables.- Returns:
- The result of this evaluation
-
execute
Description copied from interface:JexlScriptExecutes the script with the variables contained in the suppliedJexlContext.- Specified by:
executein interfaceJexlScript- Overrides:
executein classScript- Parameters:
context- A JexlContext containing variables.- Returns:
- The result of this script, usually the result of the last statement.
-
execute
Description copied from interface:JexlScriptExecutes the script with the variables contained in the suppliedJexlContextand a set of arguments corresponding to the parameters used during parsing.- Specified by:
executein interfaceJexlScript- Overrides:
executein classScript- Parameters:
context- A JexlContext containing variables.args- the arguments- Returns:
- The result of this script, usually the result of the last statement.
-
getUnboundParameters
Description copied from interface:JexlScriptGets this script unbound parameters.Parameters that haven't been bound by a previous call to curry().
- Specified by:
getUnboundParametersin interfaceJexlScript- Overrides:
getUnboundParametersin classScript- Returns:
- the parameters or null
-
hashCode
public int hashCode()
-