Class TemplateEngine.TemplateExpression
- java.lang.Object
-
- org.apache.commons.jexl3.internal.TemplateEngine.TemplateExpression
-
- All Implemented Interfaces:
JxltEngine.Expression
- Direct Known Subclasses:
TemplateEngine.CompositeExpression
,TemplateEngine.ConstantExpression
,TemplateEngine.JexlBasedExpression
- Enclosing class:
- TemplateEngine
abstract class TemplateEngine.TemplateExpression extends java.lang.Object implements JxltEngine.Expression
The abstract base class for all unified expressions, immediate '${...}' and deferred '#{...}'.
-
-
Field Summary
Fields Modifier and Type Field Description protected TemplateEngine.TemplateExpression
source
The source of this template expression(seeprepare(org.apache.commons.jexl3.internal.Interpreter)
).
-
Constructor Summary
Constructors Constructor Description TemplateExpression(TemplateEngine.TemplateExpression src)
Creates an TemplateExpression.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.lang.String
asString()
Generates this expression's string representation.protected abstract java.lang.Object
evaluate(Interpreter interpreter)
Interprets a sub-expression.java.lang.Object
evaluate(JexlContext context)
Evaluates this expression.protected java.lang.Object
evaluate(JexlContext context, Frame frame, JexlOptions options)
Evaluates this expression.(package private) JexlInfo
getInfo()
TemplateEngine.TemplateExpression
getSource()
Retrieves this expression's source expression.(package private) abstract TemplateEngine.ExpressionType
getType()
Gets this TemplateExpression type.java.util.Set<java.util.List<java.lang.String>>
getVariables()
Gets the list of variables accessed by this expression.protected void
getVariables(Engine.VarCollector collector)
Fills up the list of variables accessed by this unified expression.boolean
isDeferred()
Checks whether this expression is deferred.boolean
isImmediate()
Checks whether this expression is immediate.protected JexlOptions
options(JexlContext context)
The options to use during evaluation.protected TemplateEngine.TemplateExpression
prepare(Interpreter interpreter)
Prepares a sub-expression for interpretation.TemplateEngine.TemplateExpression
prepare(JexlContext context)
Evaluates the immediate sub-expressions.protected TemplateEngine.TemplateExpression
prepare(JexlContext context, Frame frame, JexlOptions opts)
Prepares this expression.java.lang.String
toString()
Formats this expression, adding its source string representation in comments if available: 'expression /*= source *\/'' .-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.commons.jexl3.JxltEngine.Expression
asString
-
-
-
-
Field Detail
-
source
protected final TemplateEngine.TemplateExpression source
The source of this template expression(seeprepare(org.apache.commons.jexl3.internal.Interpreter)
).
-
-
Constructor Detail
-
TemplateExpression
TemplateExpression(TemplateEngine.TemplateExpression src)
Creates an TemplateExpression.- Parameters:
src
- the source TemplateExpression if any
-
-
Method Detail
-
asString
public java.lang.String asString()
Description copied from interface:JxltEngine.Expression
Generates this expression's string representation.- Specified by:
asString
in interfaceJxltEngine.Expression
- Returns:
- the string representation
-
evaluate
protected abstract java.lang.Object evaluate(Interpreter interpreter)
Interprets a sub-expression.- Parameters:
interpreter
- a JEXL interpreter- Returns:
- the result of interpretation
- Throws:
JexlException
- (only for nested and composite)
-
evaluate
public final java.lang.Object evaluate(JexlContext context)
Description copied from interface:JxltEngine.Expression
Evaluates this expression.If the underlying JEXL engine is silent, errors will be logged through its logger as warning.
- Specified by:
evaluate
in interfaceJxltEngine.Expression
- Parameters:
context
- the variable context- Returns:
- the result of this expression evaluation or null if an error occurs and the
JexlEngine
is running in silent mode
-
evaluate
protected final java.lang.Object evaluate(JexlContext context, Frame frame, JexlOptions options)
Evaluates this expression.- Parameters:
frame
- the frame storing parameters and local variablescontext
- the context storing global variablesoptions
- flags and properties that can alter the evaluation behavior.- Returns:
- the expression value
- Throws:
JexlException
-
getInfo
JexlInfo getInfo()
- Returns:
- the info
-
getSource
public final TemplateEngine.TemplateExpression getSource()
Description copied from interface:JxltEngine.Expression
Retrieves this expression's source expression.If this expression was prepared, this allows to retrieve the original expression that lead to it.
Other expressions return themselves.
- Specified by:
getSource
in interfaceJxltEngine.Expression
- Returns:
- the source expression
-
getType
abstract TemplateEngine.ExpressionType getType()
Gets this TemplateExpression type.- Returns:
- its type
-
getVariables
public java.util.Set<java.util.List<java.lang.String>> getVariables()
Description copied from interface:JxltEngine.Expression
Gets the list of variables accessed by this expression.This method will visit all nodes of the sub-expressions and extract all variables whether they are written in 'dot' or 'bracketed' notation. (a.b is equivalent to a['b']).
- Specified by:
getVariables
in interfaceJxltEngine.Expression
- Returns:
- the set of variables, each as a list of strings (ant-ish variables use more than 1 string) or the empty set if no variables are used
-
getVariables
protected void getVariables(Engine.VarCollector collector)
Fills up the list of variables accessed by this unified expression.- Parameters:
collector
- the variable collector
-
isDeferred
public final boolean isDeferred()
Description copied from interface:JxltEngine.Expression
Checks whether this expression is deferred.- Specified by:
isDeferred
in interfaceJxltEngine.Expression
- Returns:
- true if deferred, false otherwise
-
isImmediate
public boolean isImmediate()
Description copied from interface:JxltEngine.Expression
Checks whether this expression is immediate.- Specified by:
isImmediate
in interfaceJxltEngine.Expression
- Returns:
- true if immediate, false otherwise
-
options
protected JexlOptions options(JexlContext context)
The options to use during evaluation.- Parameters:
context
- the context- Returns:
- the options
-
prepare
protected TemplateEngine.TemplateExpression prepare(Interpreter interpreter)
Prepares a sub-expression for interpretation.- Parameters:
interpreter
- a JEXL interpreter- Returns:
- a prepared unified expression
- Throws:
JexlException
- (only for nested and composite)
-
prepare
public final TemplateEngine.TemplateExpression prepare(JexlContext context)
Description copied from interface:JxltEngine.Expression
Evaluates the immediate sub-expressions.When the expression is dependant upon immediate and deferred sub-expressions, evaluates the immediate sub-expressions with the context passed as parameter and returns this expression deferred form.
In effect, this binds the result of the immediate sub-expressions evaluation in the context, allowing to differ evaluation of the remaining (deferred) expression within another context. This only has an effect to nested and composite expressions that contain differed and immediate sub-expressions.
If the underlying JEXL engine is silent, errors will be logged through its logger as warning.*
- Specified by:
prepare
in interfaceJxltEngine.Expression
- Parameters:
context
- the context to use for immediate expression evaluations- Returns:
- an
JxltEngine.Expression
or null if an error occurs and theJexlEngine
is running in silent mode
-
prepare
protected final TemplateEngine.TemplateExpression prepare(JexlContext context, Frame frame, JexlOptions opts)
Prepares this expression.- Parameters:
frame
- the frame storing parameters and local variablescontext
- the context storing global variablesopts
- flags and properties that can alter the evaluation behavior.- Returns:
- the expression value
- Throws:
JexlException
-
toString
public final java.lang.String toString()
Description copied from interface:JxltEngine.Expression
Formats this expression, adding its source string representation in comments if available: 'expression /*= source *\/'' .- Specified by:
toString
in interfaceJxltEngine.Expression
- Overrides:
toString
in classjava.lang.Object
- Returns:
- the formatted expression string
-
-