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.Expression
source
The 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.String
asString()
Generates this expression's string representation.abstract java.lang.StringBuilder
asString(java.lang.StringBuilder strb)
Adds this expression's string representation to a StringBuilder.protected abstract java.lang.Object
evaluate(Interpreter interpreter)
Intreprets a sub-expression.java.lang.Object
evaluate(JexlContext context)
Evaluates this expression.UnifiedJEXL.Expression
getSource()
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 void
getVariables(java.util.Set<java.util.List<java.lang.String>> refs)
Fills up the list of variables accessed by this expression.boolean
isDeferred()
Checks whether this expression is deferred.boolean
isImmediate()
Checks whether this expression is immediate.protected UnifiedJEXL.Expression
prepare(Interpreter interpreter)
Prepares a sub-expression for interpretation.UnifiedJEXL.Expression
prepare(JexlContext context)
Evaluates the immediate sub-expressions.java.lang.String
toString()
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:
toString
in 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
JexlEngine
is running in silent mode - Throws:
UnifiedJEXL.Exception
- if an error occurs and theJexlEngine
is 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
JexlEngine
is running in silent mode - Throws:
UnifiedJEXL.Exception
- if an error occurs and theJexlEngine
is 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)
-
-