org.apache.commons.jexl.parser
Class ASTReference

java.lang.Object
  extended by org.apache.commons.jexl.parser.SimpleNode
      extended by org.apache.commons.jexl.parser.ASTReference
All Implemented Interfaces:
Node

public class ASTReference
extends SimpleNode

reference - any variable expression.

Version:
$Id: ASTReference.java 398272 2006-04-30 03:14:01Z dion $
Author:
Geir Magnusson Jr.

Field Summary
protected  SimpleNode root
          first variable in the expression.
 
Fields inherited from class org.apache.commons.jexl.parser.SimpleNode
children, id, parent, parser
 
Constructor Summary
ASTReference(int id)
          Create the node given an id.
ASTReference(Parser p, int id)
          Create a node with the given parser and id.
 
Method Summary
 java.lang.Object execute(java.lang.Object obj, JexlContext jc)
          evaluate each piece of the reference.
private  java.lang.String getIdentifierToDepth(int i)
          This method returns a variable from this identifier and it's children.
 java.lang.String getRootString()
          Gets the variable name of root.
 java.lang.Object jjtAccept(ParserVisitor visitor, java.lang.Object data)
          Accept the visitor.
 void jjtClose()
          Store the first child as root.
 java.lang.Object value(JexlContext jc)
          Gets the value of this node.
 
Methods inherited from class org.apache.commons.jexl.parser.SimpleNode
childrenAccept, dump, interpret, jjtAddChild, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, setValue, toString, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

root

protected SimpleNode root
first variable in the expression.

Constructor Detail

ASTReference

public ASTReference(int id)
Create the node given an id.

Parameters:
id - node id.

ASTReference

public ASTReference(Parser p,
                    int id)
Create a node with the given parser and id.

Parameters:
p - a parser.
id - node id.
Method Detail

jjtAccept

public java.lang.Object jjtAccept(ParserVisitor visitor,
                                  java.lang.Object data)
Accept the visitor.

Specified by:
jjtAccept in interface Node
Overrides:
jjtAccept in class SimpleNode
Parameters:
visitor - a ParserVisitor.
data - data to be passed along to the visitor.
Returns:
the value from visiting.
See Also:
ParserVisitor.visit(org.apache.commons.jexl.parser.SimpleNode, java.lang.Object)

value

public java.lang.Object value(JexlContext jc)
                       throws java.lang.Exception
Gets the value of this node.

Overrides:
value in class SimpleNode
Parameters:
jc - the context to retrieve values from.
Returns:
the value of the node.
Throws:
java.lang.Exception - when evaluating the operands fails.

jjtClose

public void jjtClose()
Store the first child as root.

Specified by:
jjtClose in interface Node
Overrides:
jjtClose in class SimpleNode

execute

public java.lang.Object execute(java.lang.Object obj,
                                JexlContext jc)
                         throws java.lang.Exception
evaluate each piece of the reference. e.g. foo.bar.woogie[2].name, foo is our 'root', and we need to evaluate 'bar.woogie[2].name' relative to foo.

Overrides:
execute in class SimpleNode
Parameters:
jc - the JexlContext to evaluate against.
obj - not used. root.value(jc) is used instead.
Returns:
the value of the array expression.
Throws:
java.lang.Exception - on any error

getIdentifierToDepth

private java.lang.String getIdentifierToDepth(int i)
This method returns a variable from this identifier and it's children. For an expression like 'a.b.c', a is child zero, b is child 1 and c is child 2.

Parameters:
i - the depth of the child nodes to go to
Returns:
the a dotted variable from this identifier and it's child nodes.

getRootString

public java.lang.String getRootString()
                               throws java.lang.Exception
Gets the variable name of root.

Returns:
the identifier.
Throws:
java.lang.Exception - on any error
See Also:
ASTIdentifier.getIdentifierString(), ASTArrayAccess.getIdentifierString()