Class TreeValueExpression
java.lang.Object
javax.el.Expression
javax.el.ValueExpression
de.odysseus.el.TreeValueExpression
- All Implemented Interfaces:
Serializable
public final class TreeValueExpression
extends javax.el.ValueExpression
A value expression is ready to be evaluated (by calling either
getType(ELContext), getValue(ELContext), isReadOnly(ELContext)
or setValue(ELContext, Object).
Instances of this class are usually created using an ExpressionFactoryImpl.- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Bindingsprivate final TreeBuilderprivate final booleanprivate final Stringprivate ExpressionNodeprivate static final longprivate Stringprivate final Class<?> -
Constructor Summary
ConstructorsConstructorDescriptionTreeValueExpression(TreeStore store, javax.el.FunctionMapper functions, javax.el.VariableMapper variables, TypeConverter converter, String expr, Class<?> type) Create a new value expression. -
Method Summary
Modifier and TypeMethodDescriptionvoiddump(PrintWriter writer) Print the parse tree.booleanExpressions are compared using the concept of a structural id: variable and function names are anonymized such that two expressions with same tree structure will also have the same structural id and vice versa.Class<?> private StringClass<?> getType(javax.el.ELContext context) Evaluates the expression as an lvalue and answers the result type.getValue(javax.el.ELContext context) Evaluates the expression as an rvalue and answers the result.javax.el.ValueReferencegetValueReference(javax.el.ELContext context) inthashCode()booleanAnswertrueif this is a deferred expression (containing sub-expressions starting with#{)booleanAnswertrueif this could be used as an lvalue.booleanbooleanisReadOnly(javax.el.ELContext context) Evaluates the expression as an lvalue and determines ifsetValue(ELContext, Object)will always fail.private voidvoidEvaluates the expression as an lvalue and assigns the given value.toString()
-
Field Details
-
serialVersionUID
private static final long serialVersionUID- See Also:
-
builder
-
bindings
-
expr
-
type
-
deferred
private final boolean deferred -
node
-
structure
-
-
Constructor Details
-
TreeValueExpression
public TreeValueExpression(TreeStore store, javax.el.FunctionMapper functions, javax.el.VariableMapper variables, TypeConverter converter, String expr, Class<?> type) Create a new value expression.- Parameters:
store- used to get the parse tree from.functions- the function mapper used to bind functionsvariables- the variable mapper used to bind variablesexpr- the expression stringtype- the expected type (may benull)
-
-
Method Details
-
getStructuralId
-
getExpectedType
- Specified by:
getExpectedTypein classjavax.el.ValueExpression
-
getExpressionString
- Specified by:
getExpressionStringin classjavax.el.Expression
-
getType
Evaluates the expression as an lvalue and answers the result type.- Specified by:
getTypein classjavax.el.ValueExpression- Parameters:
context- used to resolve properties (base.propertyandbase[property]) and to determine the result from the last base/property pair- Returns:
- lvalue evaluation type or
nullfor rvalue expressions - Throws:
javax.el.ELException- if evaluation fails (e.g. property not found, type conversion failed, ...)
-
getValue
Evaluates the expression as an rvalue and answers the result.- Specified by:
getValuein classjavax.el.ValueExpression- Parameters:
context- used to resolve properties (base.propertyandbase[property]) and to determine the result from the last base/property pair- Returns:
- rvalue evaluation result
- Throws:
javax.el.ELException- if evaluation fails (e.g. property not found, type conversion failed, ...)
-
isReadOnly
public boolean isReadOnly(javax.el.ELContext context) throws javax.el.ELException Evaluates the expression as an lvalue and determines ifsetValue(ELContext, Object)will always fail.- Specified by:
isReadOnlyin classjavax.el.ValueExpression- Parameters:
context- used to resolve properties (base.propertyandbase[property]) and to determine the result from the last base/property pair- Returns:
trueifsetValue(ELContext, Object)always fails.- Throws:
javax.el.ELException- if evaluation fails (e.g. property not found, type conversion failed, ...)
-
setValue
Evaluates the expression as an lvalue and assigns the given value.- Specified by:
setValuein classjavax.el.ValueExpression- Parameters:
context- used to resolve properties (base.propertyandbase[property]) and to perform the assignment to the last base/property pair- Throws:
javax.el.ELException- if evaluation fails (e.g. property not found, type conversion failed, assignment failed...)
-
isLiteralText
public boolean isLiteralText()- Specified by:
isLiteralTextin classjavax.el.Expression- Returns:
trueif this is a literal text expression
-
getValueReference
public javax.el.ValueReference getValueReference(javax.el.ELContext context) - Overrides:
getValueReferencein classjavax.el.ValueExpression
-
isLeftValue
public boolean isLeftValue()Answertrueif this could be used as an lvalue. This is the case for eval expressions consisting of a simple identifier or a nonliteral prefix, followed by a sequence of property operators (.or[]) -
isDeferred
public boolean isDeferred()Answertrueif this is a deferred expression (containing sub-expressions starting with#{) -
equals
Expressions are compared using the concept of a structural id: variable and function names are anonymized such that two expressions with same tree structure will also have the same structural id and vice versa. Two value expressions are equal if- their structural id's are equal
- their bindings are equal
- their expected types are equal
- Specified by:
equalsin classjavax.el.Expression
-
hashCode
public int hashCode()- Specified by:
hashCodein classjavax.el.Expression
-
toString
-
dump
-
readObject
- Throws:
IOExceptionClassNotFoundException
-