de.odysseus.el.tree.impl.ast
Class AstNode

java.lang.Object
  extended by de.odysseus.el.tree.impl.ast.AstNode
All Implemented Interfaces:
ExpressionNode, Node
Direct Known Subclasses:
AstEval, AstIdentifier, AstProperty, AstRightValue, AstText

public abstract class AstNode
extends java.lang.Object
implements ExpressionNode


Constructor Summary
AstNode()
           
 
Method Summary
abstract  void appendStructure(java.lang.StringBuilder builder, Bindings bindings)
           
abstract  java.lang.Object eval(Bindings bindings, ELContext context)
           
 java.lang.String getStructuralId(Bindings bindings)
          Get the canonical expression string for this node.
 java.lang.Object getValue(Bindings bindings, ELContext context, java.lang.Class<?> type)
          evaluate and return the (optionally coerced) result.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface de.odysseus.el.tree.ExpressionNode
getMethodInfo, getType, invoke, isLeftValue, isLiteralText, isReadOnly, setValue
 
Methods inherited from interface de.odysseus.el.tree.Node
getCardinality, getChild
 

Constructor Detail

AstNode

public AstNode()
Method Detail

getValue

public final java.lang.Object getValue(Bindings bindings,
                                       ELContext context,
                                       java.lang.Class<?> type)
evaluate and return the (optionally coerced) result.

Specified by:
getValue in interface ExpressionNode
Parameters:
bindings - bindings containing variables and functions
context - evaluation context
type - result type
Returns:
evaluated node, coerced to the expected type

appendStructure

public abstract void appendStructure(java.lang.StringBuilder builder,
                                     Bindings bindings)

eval

public abstract java.lang.Object eval(Bindings bindings,
                                      ELContext context)

getStructuralId

public final java.lang.String getStructuralId(Bindings bindings)
Description copied from interface: ExpressionNode
Get the canonical expression string for this node. Variable and funtion names will be replaced in a way such that two expression nodes that have the same node structure and bindings will also answer the same value here.

For example, "${foo:bar()+2*foobar}" may lead to "${<fn>() + 2 * <var>}" if foobar is a bound variable. Otherwise, the structural id would be "${<fn>() + 2 * foobar}".

If the bindings is null, the full canonical subexpression is returned.

Specified by:
getStructuralId in interface ExpressionNode

Copyright © 2006, 2007 Odysseus Software GmbH.