org.apache.commons.jexl.parser

## Class ASTReference

- java.lang.Object
- - org.apache.commons.jexl.parser.SimpleNode
  - - org.apache.commons.jexl.parser.ASTReference

All Implemented Interfaces:
  Node

    public class ASTReference
    extends SimpleNode

reference - any variable expression.

Version:
  $Id: ASTReference.java 480412 2006-11-29 05:11:23Z bayard $
Author:
  Geir Magnusson Jr.

### Field Summary

Fields
`protected SimpleNode` `root` first variable in the expression.

### Fields inherited from class org.apache.commons.jexl.parser.SimpleNode

`children, id, parent, parser`

### Constructor Summary

Constructors
Constructor and Description
`ASTReference(int id)` Create the node given an id.
`ASTReference(org.apache.commons.jexl.parser.Parser p, int id)` Create a node with the given parser and id.

### Method Summary

Methods
`java.lang.Object` `execute(java.lang.Object obj, JexlContext jc)` evaluate each piece of the reference.
`java.lang.String` `getRootString()` Gets the variable name of `root`.
`java.lang.Object` `jjtAccept(org.apache.commons.jexl.parser.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, getUberspect, 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(org.apache.commons.jexl.parser.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(org.apache.commons.jexl.parser.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

#### 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()`