org.apache.commons.jexl.parser

## Class ASTArrayAccess

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

All Implemented Interfaces:
  Node

    public class ASTArrayAccess
    extends SimpleNode

Like an ASTIdentifier, but with array access allowed. $foo[2]

Version:
  $Id: ASTArrayAccess.java 548229 2007-06-18 06:11:32Z dion $
Author:
  Geir Magnusson Jr.

### Field Summary

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

`children, id, parent, parser`

### Constructor Summary

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

### Method Summary

Methods
`static java.lang.Object` `evaluateExpr(java.lang.Object o, java.lang.Object loc, Uberspect uberspect)` Evaluate the Array expression 'loc' on the given object, o.
`java.lang.Object` `execute(java.lang.Object obj, JexlContext jc)` evaluate array access upon a base object.
`java.lang.String` `getIdentifierString()` Gets the variable name piece of the expression.
`java.lang.Object` `jjtAccept(org.apache.commons.jexl.parser.ParserVisitor visitor, java.lang.Object data)` Accept the visitor.
`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, jjtClose, 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`

### Constructor Detail

#### ASTArrayAccess

    public ASTArrayAccess(int id)

Create the node given an id.

Parameters:
  `id` - node id.

#### ASTArrayAccess

    public ASTArrayAccess(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)`

#### execute

    public java.lang.Object execute(java.lang.Object obj,
                           JexlContext jc)
                             throws java.lang.Exception

evaluate array access upon a base object. foo.bar[2] makes me rethink the array operator :)

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

#### 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.

#### evaluateExpr

    public static java.lang.Object evaluateExpr(java.lang.Object o,
                                java.lang.Object loc,
                                Uberspect uberspect)
                                         throws java.lang.Exception

Evaluate the Array expression 'loc' on the given object, o. e.g. in 'a[2]', `2` is 'loc' and `a` is 'o'. If o or loc are null, null is returned. If o is a Map, o.get(loc) is returned. If o is a List, o.get(loc) is returned. loc must resolve to an int value. If o is an Array, o[loc] is returned. loc must resolve to an int value. Otherwise loc is treated as a bean property of o.

Parameters:
  `o` - an object to be accessed using the array operator or '.' operator.
  `loc` - the index of the object to be returned.
  `uberspect` - Uberspector to use during evaluation
Returns:
  the resulting value.
Throws:
  `java.lang.Exception` - on any error.

#### getIdentifierString

    public java.lang.String getIdentifierString()

Gets the variable name piece of the expression.

Returns:
  a String of the identifer.
See Also:
  `ASTIdentifier.getIdentifierString().`