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 Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • builder

      private final TreeBuilder builder
    • bindings

      private final Bindings bindings
    • expr

      private final String expr
    • type

      private final Class<?> type
    • deferred

      private final boolean deferred
    • node

      private transient ExpressionNode node
    • structure

      private String 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 functions
      variables - the variable mapper used to bind variables
      expr - the expression string
      type - the expected type (may be null)
  • Method Details

    • getStructuralId

      private String getStructuralId()
    • getExpectedType

      public Class<?> getExpectedType()
      Specified by:
      getExpectedType in class javax.el.ValueExpression
    • getExpressionString

      public String getExpressionString()
      Specified by:
      getExpressionString in class javax.el.Expression
    • getType

      public Class<?> getType(javax.el.ELContext context) throws javax.el.ELException
      Evaluates the expression as an lvalue and answers the result type.
      Specified by:
      getType in class javax.el.ValueExpression
      Parameters:
      context - used to resolve properties (base.property and base[property]) and to determine the result from the last base/property pair
      Returns:
      lvalue evaluation type or null for rvalue expressions
      Throws:
      javax.el.ELException - if evaluation fails (e.g. property not found, type conversion failed, ...)
    • getValue

      public Object getValue(javax.el.ELContext context) throws javax.el.ELException
      Evaluates the expression as an rvalue and answers the result.
      Specified by:
      getValue in class javax.el.ValueExpression
      Parameters:
      context - used to resolve properties (base.property and base[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 if setValue(ELContext, Object) will always fail.
      Specified by:
      isReadOnly in class javax.el.ValueExpression
      Parameters:
      context - used to resolve properties (base.property and base[property]) and to determine the result from the last base/property pair
      Returns:
      true if setValue(ELContext, Object) always fails.
      Throws:
      javax.el.ELException - if evaluation fails (e.g. property not found, type conversion failed, ...)
    • setValue

      public void setValue(javax.el.ELContext context, Object value) throws javax.el.ELException
      Evaluates the expression as an lvalue and assigns the given value.
      Specified by:
      setValue in class javax.el.ValueExpression
      Parameters:
      context - used to resolve properties (base.property and base[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:
      isLiteralText in class javax.el.Expression
      Returns:
      true if this is a literal text expression
    • getValueReference

      public javax.el.ValueReference getValueReference(javax.el.ELContext context)
      Overrides:
      getValueReference in class javax.el.ValueExpression
    • isLeftValue

      public boolean isLeftValue()
      Answer true if 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()
      Answer true if this is a deferred expression (containing sub-expressions starting with #{)
    • equals

      public boolean equals(Object obj)
      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
      1. their structural id's are equal
      2. their bindings are equal
      3. their expected types are equal
      Specified by:
      equals in class javax.el.Expression
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in class javax.el.Expression
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • dump

      public void dump(PrintWriter writer)
      Print the parse tree.
      Parameters:
      writer -
    • readObject

      private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
      Throws:
      IOException
      ClassNotFoundException