Class ExpressionState
java.lang.Object
org.springframework.expression.spel.ExpressionState
ExpressionState is for maintaining per-expression-evaluation state: any changes to
it are not seen by other expressions, but it gives a place to hold local variables and
for component expressions in a compound expression to communicate state. This is in
contrast to the EvaluationContext, which is shared amongst expression evaluations, and
any changes to it will be seen by other expressions or any code that chooses to ask
questions of the context.
It also acts as a place to define common utility routines that the various AST nodes might need.
- Since:
- 3.0
- Author:
- Andy Clement, Juergen Hoeller, Sam Brannen
-
Constructor Summary
ConstructorDescriptionExpressionState
(EvaluationContext context) ExpressionState
(EvaluationContext context, SpelParserConfiguration configuration) ExpressionState
(EvaluationContext context, TypedValue rootObject) ExpressionState
(EvaluationContext context, TypedValue rootObject, SpelParserConfiguration configuration) -
Method Summary
Modifier and TypeMethodDescriptionassignVariable
(String name, Supplier<TypedValue> valueSupplier) Assign the value created by the specifiedSupplier
to a named variable within the evaluation context.convertValue
(Object value, TypeDescriptor targetTypeDescriptor) convertValue
(TypedValue value, TypeDescriptor targetTypeDescriptor) void
Enter a new scope with a new root context object and a new local variable scope.void
enterScope
(String name, Object value) Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0void
enterScope
(Map<String, Object> variables) Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0void
Class<?>
The active context object is what unqualified references to properties/etc are resolved against.lookupLocalVariable
(String name) Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0lookupVariable
(String name) Look up a named global variable in the evaluation context.void
void
void
setLocalVariable
(String name, Object value) Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0void
setVariable
(String name, Object value) Set a named variable in the evaluation context to a specified value.
-
Constructor Details
-
ExpressionState
-
ExpressionState
-
ExpressionState
-
ExpressionState
public ExpressionState(EvaluationContext context, TypedValue rootObject, SpelParserConfiguration configuration)
-
-
Method Details
-
getActiveContextObject
The active context object is what unqualified references to properties/etc are resolved against. -
pushActiveContextObject
-
popActiveContextObject
public void popActiveContextObject() -
getRootContextObject
-
getScopeRootContextObject
-
assignVariable
Assign the value created by the specifiedSupplier
to a named variable within the evaluation context.In contrast to
setVariable(String, Object)
, this method should only be invoked to support assignment within an expression.- Parameters:
name
- the name of the variable to assignvalueSupplier
- the supplier of the value to be assigned to the variable- Returns:
- a
TypedValue
wrapping the assigned value - Since:
- 5.2.24
- See Also:
-
setVariable
Set a named variable in the evaluation context to a specified value.In contrast to
assignVariable(String, Supplier)
, this method should only be invoked programmatically.- Parameters:
name
- the name of the variable to setvalue
- the value to be placed in the variable- See Also:
-
lookupVariable
Look up a named global variable in the evaluation context.- Parameters:
name
- the name of the variable to look up- Returns:
- a
TypedValue
containing the value of the variable, orTypedValue.NULL
if the variable does not exist - See Also:
-
getTypeComparator
-
findType
- Throws:
EvaluationException
-
getTypeConverter
-
convertValue
public Object convertValue(Object value, TypeDescriptor targetTypeDescriptor) throws EvaluationException - Throws:
EvaluationException
-
convertValue
@Nullable public Object convertValue(TypedValue value, TypeDescriptor targetTypeDescriptor) throws EvaluationException - Throws:
EvaluationException
-
enterScope
public void enterScope()Enter a new scope with a new root context object and a new local variable scope. -
enterScope
Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0Enter a new scope with a new root context object and a new local variable scope containing the supplied name/value pair.- Parameters:
name
- the name of the local variablevalue
- the value of the local variable
-
enterScope
@Deprecated(since="6.2", forRemoval=true) public void enterScope(@Nullable Map<String, Object> variables) Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0Enter a new scope with a new root context object and a new local variable scope containing the supplied name/value pairs.- Parameters:
variables
- a map containing name/value pairs for local variables
-
exitScope
public void exitScope() -
setLocalVariable
Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0Set a local variable with the given name to the supplied value within the current scope.If a local variable with the given name already exists, it will be overwritten.
- Parameters:
name
- the name of the local variablevalue
- the value of the local variable
-
lookupLocalVariable
Deprecated, for removal: This API element is subject to removal in a future version.as of 6.2 with no replacement; to be removed in 7.0Look up the value of the local variable with the given name.- Parameters:
name
- the name of the local variable- Returns:
- the value of the local variable, or
null
if the variable does not exist in the current scope
-
operate
public TypedValue operate(Operation op, @Nullable Object left, @Nullable Object right) throws EvaluationException - Throws:
EvaluationException
-
getPropertyAccessors
-
getEvaluationContext
-
getConfiguration
-