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, AstMethod, 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)
           
protected  java.lang.reflect.Method findAccessibleMethod(java.lang.reflect.Method method)
          Find accessible method.
 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, getValueReference, invoke, isLeftValue, isLiteralText, isMethodInvocation, 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

findAccessibleMethod

protected java.lang.reflect.Method findAccessibleMethod(java.lang.reflect.Method method)
Find accessible method. Searches the inheritance tree of the class declaring the method until it finds a method that can be made accessible.

Parameters:
method - method
Returns:
accessible method or null

Copyright © 2006-2009 Odysseus Software GmbH.