Class UnifiedJEXL.Expression
- java.lang.Object
-
- org.apache.commons.jexl2.UnifiedJEXL.Expression
-
- Enclosing class:
- UnifiedJEXL
public abstract class UnifiedJEXL.Expression extends java.lang.Object
The abstract base class for all expressions, immediate '${...}' and deferred '#{...}'.
-
-
Field Summary
Fields Modifier and Type Field Description protected UnifiedJEXL.ExpressionsourceThe source of this expression (seeprepare(org.apache.commons.jexl2.JexlContext)).
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.lang.StringasString()Generates this expression's string representation.abstract java.lang.StringBuilderasString(java.lang.StringBuilder strb)Adds this expression's string representation to a StringBuilder.protected abstract java.lang.Objectevaluate(Interpreter interpreter)Intreprets a sub-expression.java.lang.Objectevaluate(JexlContext context)Evaluates this expression.UnifiedJEXL.ExpressiongetSource()Retrieves this expression's source expression.java.util.Set<java.util.List<java.lang.String>>getVariables()Gets the list of variables accessed by this expression.protected voidgetVariables(java.util.Set<java.util.List<java.lang.String>> refs)Fills up the list of variables accessed by this expression.booleanisDeferred()Checks whether this expression is deferred.booleanisImmediate()Checks whether this expression is immediate.protected UnifiedJEXL.Expressionprepare(Interpreter interpreter)Prepares a sub-expression for interpretation.UnifiedJEXL.Expressionprepare(JexlContext context)Evaluates the immediate sub-expressions.java.lang.StringtoString()Formats this expression, adding its source string representation in comments if available: 'expression /*= source *\/'' .
-
-
-
Field Detail
-
source
protected final UnifiedJEXL.Expression source
The source of this expression (seeprepare(org.apache.commons.jexl2.JexlContext)).
-
-
Method Detail
-
isImmediate
public boolean isImmediate()
Checks whether this expression is immediate.- Returns:
- true if immediate, false otherwise
-
isDeferred
public final boolean isDeferred()
Checks whether this expression is deferred.- Returns:
- true if deferred, false otherwise
-
toString
public java.lang.String toString()
Formats this expression, adding its source string representation in comments if available: 'expression /*= source *\/'' . Note: do not override; will be made final in a future release.- Overrides:
toStringin classjava.lang.Object- Returns:
- the formatted expression string
-
asString
public java.lang.String asString()
Generates this expression's string representation.- Returns:
- the string representation
-
asString
public abstract java.lang.StringBuilder asString(java.lang.StringBuilder strb)
Adds this expression's string representation to a StringBuilder.- Parameters:
strb- the builder to fill- Returns:
- the builder argument
-
getVariables
public java.util.Set<java.util.List<java.lang.String>> getVariables()
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']).
- 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
- Since:
- 2.1
-
getVariables
protected void getVariables(java.util.Set<java.util.List<java.lang.String>> refs)
Fills up the list of variables accessed by this expression.- Parameters:
refs- the set of variable being filled- Since:
- 2.1
-
prepare
public UnifiedJEXL.Expression prepare(JexlContext context)
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 & composite expressions that contain differed & immediate sub-expressions.
If the underlying JEXL engine is silent, errors will be logged through its logger as warning.
Note: do not override; will be made final in a future release.- Parameters:
context- the context to use for immediate expression evaluations- Returns:
- an expression or null if an error occurs and the
JexlEngineis running in silent mode - Throws:
UnifiedJEXL.Exception- if an error occurs and theJexlEngineis not in silent mode
-
evaluate
public java.lang.Object evaluate(JexlContext context)
Evaluates this expression.If the underlying JEXL engine is silent, errors will be logged through its logger as warning.
Note: do not override; will be made final in a future release.- Parameters:
context- the variable context- Returns:
- the result of this expression evaluation or null if an error occurs and the
JexlEngineis running in silent mode - Throws:
UnifiedJEXL.Exception- if an error occurs and theJexlEngineis not silent
-
getSource
public final UnifiedJEXL.Expression getSource()
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.- Returns:
- the source expression
-
prepare
protected UnifiedJEXL.Expression prepare(Interpreter interpreter)
Prepares a sub-expression for interpretation.- Parameters:
interpreter- a JEXL interpreter- Returns:
- a prepared expression
- Throws:
JexlException- (only for nested & composite)
-
evaluate
protected abstract java.lang.Object evaluate(Interpreter interpreter)
Intreprets a sub-expression.- Parameters:
interpreter- a JEXL interpreter- Returns:
- the result of interpretation
- Throws:
JexlException- (only for nested & composite)
-
-