01: package org.apache.velocity.runtime.parser.node;
02:
03: /*
04: * Licensed to the Apache Software Foundation (ASF) under one
05: * or more contributor license agreements. See the NOTICE file
06: * distributed with this work for additional information
07: * regarding copyright ownership. The ASF licenses this file
08: * to you under the Apache License, Version 2.0 (the
09: * "License"); you may not use this file except in compliance
10: * with the License. You may obtain a copy of the License at
11: *
12: * http://www.apache.org/licenses/LICENSE-2.0
13: *
14: * Unless required by applicable law or agreed to in writing,
15: * software distributed under the License is distributed on an
16: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17: * KIND, either express or implied. See the License for the
18: * specific language governing permissions and limitations
19: * under the License.
20: */
21:
22: import java.io.IOException;
23: import java.io.Writer;
24:
25: import org.apache.velocity.context.InternalContextAdapter;
26: import org.apache.velocity.exception.MethodInvocationException;
27: import org.apache.velocity.exception.ParseErrorException;
28: import org.apache.velocity.exception.ResourceNotFoundException;
29: import org.apache.velocity.runtime.parser.Parser;
30: import org.apache.velocity.runtime.parser.ParserVisitor;
31:
32: /**
33: * This class is responsible for handling the ElseIf VTL control statement.
34: *
35: * Please look at the Parser.jjt file which is
36: * what controls the generation of this class.
37: *
38: * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
39: * @author <a href="mailto:geirm@optonline.net">Geir Magnusson Jr.</a>
40: * @version $Id: ASTElseIfStatement.java 463298 2006-10-12 16:10:32Z henning $
41: */
42: public class ASTElseIfStatement extends SimpleNode {
43: /**
44: * @param id
45: */
46: public ASTElseIfStatement(int id) {
47: super (id);
48: }
49:
50: /**
51: * @param p
52: * @param id
53: */
54: public ASTElseIfStatement(Parser p, int id) {
55: super (p, id);
56: }
57:
58: /**
59: * @see org.apache.velocity.runtime.parser.node.SimpleNode#jjtAccept(org.apache.velocity.runtime.parser.ParserVisitor, java.lang.Object)
60: */
61: public Object jjtAccept(ParserVisitor visitor, Object data) {
62: return visitor.visit(this , data);
63: }
64:
65: /**
66: * An ASTElseStatement is true if the expression
67: * it contains evaluates to true. Expressions know
68: * how to evaluate themselves, so we do that
69: * here and return the value back to ASTIfStatement
70: * where this node was originally asked to evaluate
71: * itself.
72: * @param context
73: * @return True if all childs are true.
74: * @throws MethodInvocationException
75: */
76: public boolean evaluate(InternalContextAdapter context)
77: throws MethodInvocationException {
78: return jjtGetChild(0).evaluate(context);
79: }
80:
81: /**
82: * @see org.apache.velocity.runtime.parser.node.SimpleNode#render(org.apache.velocity.context.InternalContextAdapter, java.io.Writer)
83: */
84: public boolean render(InternalContextAdapter context, Writer writer)
85: throws IOException, MethodInvocationException,
86: ResourceNotFoundException, ParseErrorException {
87: return jjtGetChild(1).render(context, writer);
88: }
89: }
|