diff options
Diffstat (limited to 'velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/Node.java')
-rw-r--r-- | velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/Node.java | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/Node.java b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/Node.java new file mode 100644 index 00000000..ff867a15 --- /dev/null +++ b/velocity-engine-core/src/main/java/org/apache/velocity/runtime/parser/node/Node.java @@ -0,0 +1,232 @@ +package org.apache.velocity.runtime.parser.node; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.velocity.Template; +import org.apache.velocity.context.InternalContextAdapter; +import org.apache.velocity.exception.MethodInvocationException; +import org.apache.velocity.exception.ParseErrorException; +import org.apache.velocity.exception.ResourceNotFoundException; +import org.apache.velocity.exception.TemplateInitException; +import org.apache.velocity.runtime.Renderable; +import org.apache.velocity.runtime.parser.Parser; +import org.apache.velocity.runtime.parser.Token; + +import java.io.IOException; +import java.io.Writer; + +/** + * This file describes the interface between the Velocity code + * and the JavaCC generated code. + * + * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> + * @version $Id$ + */ + +public interface Node extends Renderable +{ + /** This method is called after the node has been made the current + * node. It indicates that child nodes can now be added to it. */ + void jjtOpen(); + + /** This method is called after all the child nodes have been + added. + */ + void jjtClose(); + + /** + * This pair of methods are used to inform the node of its + * parent. + * @param n + * + */ + void jjtSetParent(Node n); + + /** + * @return The node parent. + */ + Node jjtGetParent(); + + /** + * This method tells the node to add its argument to the node's + * list of children. + * @param n + * @param i + */ + void jjtAddChild(Node n, int i); + + /** + * This method returns a child node. The children are numbered + * from zero, left to right. + * @param i + * @return A child node. + */ + Node jjtGetChild(int i); + + /** + * Return the number of children the node has. + * @return The number of children of this node. + */ + int jjtGetNumChildren(); + + /** + * @param visitor + * @param data + * @return The Node execution result object. + */ + Object jjtAccept(ParserVisitor visitor, Object data); + + /* + * ======================================================================== + * + * The following methods are not generated automatically be the Parser but + * added manually to be used by Velocity. + * + * ======================================================================== + */ + + /** + * @see #jjtAccept(ParserVisitor, Object) + * @param visitor + * @param data + * @return The node execution result. + */ + Object childrenAccept(ParserVisitor visitor, Object data); + + /** + * @return The first token. + */ + Token getFirstToken(); + /** + * @return The last token. + */ + Token getLastToken(); + /** + * @return The NodeType. + */ + int getType(); + + /** + * @param context + * @param data + * @return The init result. + * @throws TemplateInitException + */ + Object init(InternalContextAdapter context, Object data) throws TemplateInitException; + + /** + * @param context + * @return The evaluation result. + * @throws MethodInvocationException + */ + boolean evaluate(InternalContextAdapter context) + throws MethodInvocationException; + + /** + * @param context + * @return The node value. + * @throws MethodInvocationException + */ + Object value(InternalContextAdapter context) + throws MethodInvocationException; + + /** + * @param context + * @param writer + * @return True if the node rendered successfully. + * @throws IOException + * @throws MethodInvocationException + * @throws ParseErrorException + * @throws ResourceNotFoundException + */ + @Override + boolean render(InternalContextAdapter context, Writer writer) + throws IOException,MethodInvocationException, ParseErrorException, ResourceNotFoundException; + + /** + * @param o + * @param context + * @return The execution result. + * @throws MethodInvocationException + */ + Object execute(Object o, InternalContextAdapter context) + throws MethodInvocationException; + + /** + * @param info + */ + void setInfo(int info); + + /** + * @return The current node info. + */ + int getInfo(); + + /** + * @return A literal. + */ + String literal(); + + /** + * Mark the node as invalid. + */ + void setInvalid(); + + /** + * @return True if the node is invalid. + */ + boolean isInvalid(); + + /** + * @return The current line position. + */ + int getLine(); + + /** + * @return The current column position. + */ + int getColumn(); + + /** + * @return the file name of the template + */ + String getTemplateName(); + + /** + * @return cached image (String) of the first Token for this Node returned by the Parser + */ + String getFirstTokenImage(); + + /** + * @return cached image (String) of the last Token for this Node returned by the Parser + */ + String getLastTokenImage(); + + /** + * @return the template this node belongs to + */ + Template getTemplate(); + + /** + * @return the parser which generated this node + * @since 2.2 + */ + Parser getParser(); +} |