org.apache.velocity.runtime.parser.node

Class ASTIdentifier

Implemented Interfaces:
Node

public class ASTIdentifier
extends SimpleNode

ASTIdentifier.java Method support for identifiers : $foo mainly used by ASTRefrence Introspection is now moved to 'just in time' or at render / execution time. There are many reasons why this has to be done, but the primary two are thread safety, to remove any context-derived information from class member variables.

Version:
$Id: ASTIdentifier.java,v 1.16 2001/11/19 13:53:08 geirm Exp $

Authors:
Jason van Zyl
Geir Magnusson Jr.

Nested Class Summary

Field Summary

private String
identifier

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

children, first, last, id, info, invalid, parent, parser, rsvc, state

Constructor Summary

ASTIdentifier(int id)
ASTIdentifier(Parser p, int id)

Method Summary

private AbstractExecutor
doIntrospection(Class data)
introspects the class to find the method name of the node, or if that fails, treats the reference object as a map and treats the identifier as a key in that map.
Object
execute(Object o, InternalContextAdapter context)
invokes the method on the object passed in
Object
init(InternalContextAdapter context, Object data)
simple init - don't do anything that is context specific.
Object
jjtAccept(ParserVisitor visitor, Object data)
Accept the visitor.

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

childrenAccept, dump, evaluate, execute, getColumn, getFirstToken, getInfo, getLastToken, getLine, getType, init, isInvalid, jjtAccept, jjtAddChild, jjtClose, jjtGetChild, jjtGetNumChildren, jjtGetParent, jjtOpen, jjtSetParent, literal, render, setFirstToken, setInfo, setInvalid, toString, value

Field Details

identifier

private String identifier

Constructor Details

ASTIdentifier

public ASTIdentifier(int id)


ASTIdentifier

public ASTIdentifier(Parser p,
                     int id)

Method Details

doIntrospection

private AbstractExecutor doIntrospection(Class data)
            throws Exception
introspects the class to find the method name of the node, or if that fails, treats the reference object as a map and treats the identifier as a key in that map. This needs work.

Parameters:
data - Class to be introspected


execute

public Object execute(Object o,
                      InternalContextAdapter context)
            throws MethodInvocationException
invokes the method on the object passed in
Specified by:
execute in interface Node
Overrides:
execute in interface SimpleNode


init

public Object init(InternalContextAdapter context,
                   Object data)
            throws Exception
simple init - don't do anything that is context specific. just get what we need from the AST, which is static.
Specified by:
init in interface Node
Overrides:
init in interface SimpleNode


jjtAccept

public Object jjtAccept(ParserVisitor visitor,
                        Object data)
Accept the visitor. *
Specified by:
jjtAccept in interface Node
Overrides:
jjtAccept in interface SimpleNode


Copyright © 2003 Apache Software Foundation. All Rights Reserved.