Package org.apache.velocity.runtime.parser.node

# Class ASTReference

java.lang.Object
org.apache.velocity.runtime.parser.node.SimpleNode
org.apache.velocity.runtime.parser.node.ASTReference

All Implemented Interfaces:
  `Cloneable`, `Node`, `Renderable`

public class ASTReference extends SimpleNode
This class is responsible for handling the references in VTL ($foo). Please look at the Parser.jjt file which is what controls the generation of this class.

Version:
  $Id$
Author:
  Jason van Zyl, Geir Magnusson Jr., Christoph Reck, Kent Johnson

## Field Summary

Fields
Modifier and Type
Field
Description
`boolean`
`strictEscape`
Indicates if we are using modified escape behavior in strict mode.
`boolean`
`strictRef`
Indicates if we are running in strict reference mode.
`protected Info`
`uberInfo`

### Fields inherited from class org.apache.velocity.runtime.parser.node.SimpleNode

`children, column, first, firstImage, id, info, invalid, last, lastImage, line, literal, log, parent, parser, rsvc, state, template`

## Constructor Summary

Constructors
Constructor
Description
`ASTReference(int id)`
`ASTReference(Parser p, int id)`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`evaluate(InternalContextAdapter context)`
Computes boolean value of this reference Returns the actual value of reference return type boolean, and 'true' if value is not null
`Object`
`execute(Object o, InternalContextAdapter context)`
gets an Object that 'is' the value of the reference
`String`
`getRootString()`
Returns the 'root string', the reference key
`Object`
`getRootVariableValue(InternalContextAdapter context)`
`Object`
`init(InternalContextAdapter context, Object data)`
`Object`
`jjtAccept(StandardParserVisitor visitor, Object data)`
`static String`
`printClass(Class<?> clazz)`
Utility class to handle nulls when printing a class type
`boolean`
`render(InternalContextAdapter context, Writer writer)`
gets the value of the reference and outputs it to the writer.
`boolean`
`setValue(InternalContextAdapter context, Object value)`
Sets the value of a complex reference (something like $foo.bar) Currently used by ASTSetReference()
`Object`
`value(InternalContextAdapter context)`

### Methods inherited from class org.apache.velocity.runtime.parser.node.SimpleNode

`childrenAccept, cleanupParserAndTokens, clone, clone, dump, dump, dump, getColumn, getFirstToken, getFirstTokenImage, getInfo, getLastToken, getLastTokenImage, getLine, getLocation, getParser, getRuntimeServices, getTemplate, getTemplateName, getType, isInvalid, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, literal, saveTokenImages, setFirstToken, setInfo, setInvalid, toString, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Field Details

### strictRef

public boolean strictRef
Indicates if we are running in strict reference mode.

### strictEscape

public boolean strictEscape
Indicates if we are using modified escape behavior in strict mode. mainly we allow \$abc -> to render as $abc

### uberInfo

protected Info uberInfo

## Constructor Details

### ASTReference

public ASTReference(int id)

Parameters:
  `id` -

### ASTReference

public ASTReference(Parser p, int id)

Parameters:
  `p` -
  `id` -

## Method Details

### jjtAccept

public Object jjtAccept(StandardParserVisitor visitor, Object data)

Specified by:
  `jjtAccept` in interface `Node`
Overrides:
  `jjtAccept` in class `SimpleNode`
Parameters:
  `visitor` -
  `data` -
Returns:
  The Node execution result object.
See Also:
  - `SimpleNode.jjtAccept(org.apache.velocity.runtime.parser.node.StandardParserVisitor, java.lang.Object)`

### init

public Object init(InternalContextAdapter context, Object data) throws TemplateInitException

Specified by:
  `init` in interface `Node`
Overrides:
  `init` in class `SimpleNode`
Parameters:
  `context` -
  `data` -
Returns:
  The init result.
Throws:
  `TemplateInitException`
See Also:
  - `SimpleNode.init(org.apache.velocity.context.InternalContextAdapter, java.lang.Object)`

### getRootString

public String getRootString()
Returns the 'root string', the reference key

Returns:
  the root string.

### execute

public Object execute(Object o, InternalContextAdapter context) throws MethodInvocationException
gets an Object that 'is' the value of the reference

Specified by:
  `execute` in interface `Node`
Overrides:
  `execute` in class `SimpleNode`
Parameters:
  `o` - Object parameter, unused per se, but non-null by convention inside an #if/#elseif evaluation
  `context` - context used to generate value
Returns:
  The execution result.
Throws:
  `MethodInvocationException`
See Also:
  - `Node.execute(java.lang.Object, org.apache.velocity.context.InternalContextAdapter)`

### render

public boolean render(InternalContextAdapter context, Writer writer) throws IOException, MethodInvocationException
gets the value of the reference and outputs it to the writer.

Specified by:
  `render` in interface `Node`
Specified by:
  `render` in interface `Renderable`
Overrides:
  `render` in class `SimpleNode`
Parameters:
  `context` - context of data to use in getting value
  `writer` - writer to render to
Returns:
  True if rendering was successful.
Throws:
  `IOException`
  `MethodInvocationException`
See Also:
  - `Node.render(org.apache.velocity.context.InternalContextAdapter, java.io.Writer)`

### evaluate

public boolean evaluate(InternalContextAdapter context) throws MethodInvocationException
Computes boolean value of this reference Returns the actual value of reference return type boolean, and 'true' if value is not null

Specified by:
  `evaluate` in interface `Node`
Overrides:
  `evaluate` in class `SimpleNode`
Parameters:
  `context` - context to compute value with
Returns:
  True if evaluation was ok.
Throws:
  `MethodInvocationException`
See Also:
  - `Node.evaluate(org.apache.velocity.context.InternalContextAdapter)`

### value

public Object value(InternalContextAdapter context) throws MethodInvocationException

Specified by:
  `value` in interface `Node`
Overrides:
  `value` in class `SimpleNode`
Parameters:
  `context` -
Returns:
  The node value.
Throws:
  `MethodInvocationException`
See Also:
  - `SimpleNode.value(org.apache.velocity.context.InternalContextAdapter)`

### printClass

public static String printClass(Class<?> clazz)
Utility class to handle nulls when printing a class type

Parameters:
  `clazz` -
Returns:
  class name, or the string "null"

### setValue

public boolean setValue(InternalContextAdapter context, Object value) throws MethodInvocationException
Sets the value of a complex reference (something like $foo.bar) Currently used by ASTSetReference()

Parameters:
  `context` - context object containing this reference
  `value` - Object to set as value
Returns:
  true if successful, false otherwise
Throws:
  `MethodInvocationException`
See Also:
  - `ASTSetDirective`

### getRootVariableValue

public Object getRootVariableValue(InternalContextAdapter context)

Parameters:
  `context` -
Returns:
  The evaluated value of the variable.
Throws:
  `MethodInvocationException`