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

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

public abstract class AstProperty
extends AstNode


Field Summary
protected  boolean lvalue
           
protected  AstNode prefix
           
protected  boolean strict
           
 
Constructor Summary
AstProperty(AstNode prefix, boolean lvalue, boolean strict)
           
 
Method Summary
 java.lang.Object eval(Bindings bindings, ELContext context)
           
protected  java.lang.reflect.Method findMethod(java.lang.String name, java.lang.Class<?> clazz, java.lang.Class<?> returnType, java.lang.Class<?>[] paramTypes)
           
 AstNode getChild(int i)
          Get i'th child
 MethodInfo getMethodInfo(Bindings bindings, ELContext context, java.lang.Class<?> returnType, java.lang.Class<?>[] paramTypes)
          Get method information.
protected  AstNode getPrefix()
           
protected abstract  java.lang.Object getProperty(Bindings bindings, ELContext context)
           
 java.lang.Class<?> getType(Bindings bindings, ELContext context)
          Get the value type accepted in ExpressionNode.setValue(Bindings, ELContext, Object).
 ValueReference getValueReference(Bindings bindings, ELContext context)
          Get value reference.
 java.lang.Object invoke(Bindings bindings, ELContext context, java.lang.Class<?> returnType, java.lang.Class<?>[] paramTypes, java.lang.Object[] paramValues)
          Invoke method.
 boolean isLeftValue()
           
 boolean isLiteralText()
           
 boolean isMethodInvocation()
           
 boolean isReadOnly(Bindings bindings, ELContext context)
          Determine whether ExpressionNode.setValue(Bindings, ELContext, Object) will throw a PropertyNotWritableException.
 void setValue(Bindings bindings, ELContext context, java.lang.Object value)
          Assign value.
 
Methods inherited from class de.odysseus.el.tree.impl.ast.AstNode
appendStructure, findAccessibleMethod, getStructuralId, getValue
 
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.Node
getCardinality
 

Field Detail

prefix

protected final AstNode prefix

lvalue

protected final boolean lvalue

strict

protected final boolean strict
Constructor Detail

AstProperty

public AstProperty(AstNode prefix,
                   boolean lvalue,
                   boolean strict)
Method Detail

getProperty

protected abstract java.lang.Object getProperty(Bindings bindings,
                                                ELContext context)
                                         throws ELException
Throws:
ELException

getPrefix

protected AstNode getPrefix()

getValueReference

public ValueReference getValueReference(Bindings bindings,
                                        ELContext context)
Description copied from interface: ExpressionNode
Get value reference.

Returns:
value reference

eval

public java.lang.Object eval(Bindings bindings,
                             ELContext context)
Specified by:
eval in class AstNode

isLiteralText

public final boolean isLiteralText()
Returns:
true if this node represents literal text

isLeftValue

public final boolean isLeftValue()
Returns:
true if the subtree rooted at this node could be used as an lvalue expression (identifier or property sequence with non-literal prefix).

isMethodInvocation

public boolean isMethodInvocation()
Returns:
true if the subtree rooted at this node is a method invocation.

getType

public java.lang.Class<?> getType(Bindings bindings,
                                  ELContext context)
Description copied from interface: ExpressionNode
Get the value type accepted in ExpressionNode.setValue(Bindings, ELContext, Object).

Parameters:
bindings - bindings containing variables and functions
context - evaluation context
Returns:
accepted type or null for non-lvalue nodes

isReadOnly

public boolean isReadOnly(Bindings bindings,
                          ELContext context)
                   throws ELException
Description copied from interface: ExpressionNode
Determine whether ExpressionNode.setValue(Bindings, ELContext, Object) will throw a PropertyNotWritableException.

Parameters:
bindings - bindings containing variables and functions
context - evaluation context
Returns:
true if this a read-only expression node
Throws:
ELException

setValue

public void setValue(Bindings bindings,
                     ELContext context,
                     java.lang.Object value)
              throws ELException
Description copied from interface: ExpressionNode
Assign value.

Parameters:
bindings - bindings containing variables and functions
context - evaluation context
value - value to set
Throws:
ELException

findMethod

protected java.lang.reflect.Method findMethod(java.lang.String name,
                                              java.lang.Class<?> clazz,
                                              java.lang.Class<?> returnType,
                                              java.lang.Class<?>[] paramTypes)

getMethodInfo

public MethodInfo getMethodInfo(Bindings bindings,
                                ELContext context,
                                java.lang.Class<?> returnType,
                                java.lang.Class<?>[] paramTypes)
Description copied from interface: ExpressionNode
Get method information. If this is a non-lvalue node, answer null.

Parameters:
bindings - bindings containing variables and functions
context - evaluation context
returnType - expected method return type (may be null meaning don't care)
paramTypes - expected method argument types
Returns:
method information or null

invoke

public java.lang.Object invoke(Bindings bindings,
                               ELContext context,
                               java.lang.Class<?> returnType,
                               java.lang.Class<?>[] paramTypes,
                               java.lang.Object[] paramValues)
Description copied from interface: ExpressionNode
Invoke method.

Parameters:
bindings - bindings containing variables and functions
context - evaluation context
returnType - expected method return type (may be null meaning don't care)
paramTypes - expected method argument types
paramValues - parameter values
Returns:
result of the method invocation

getChild

public AstNode getChild(int i)
Description copied from interface: Node
Get i'th child


Copyright © 2006-2009 Odysseus Software GmbH.