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 org.apache.velocity.context.InternalContextAdapter;
23: import org.apache.velocity.runtime.parser.Parser;
24: import org.apache.velocity.runtime.parser.ParserVisitor;
25:
26: import org.apache.velocity.exception.MethodInvocationException;
27:
28: import java.util.HashMap;
29: import java.util.Map;
30:
31: /**
32: * AST Node for creating a map / dictionary.
33: *
34: * This class was originally generated from Parset.jjt.
35: *
36: * @version $Id: ASTMap.java 463298 2006-10-12 16:10:32Z henning $
37: */
38: public class ASTMap extends SimpleNode {
39: /**
40: * @param id
41: */
42: public ASTMap(int id) {
43: super (id);
44: }
45:
46: /**
47: * @param p
48: * @param id
49: */
50: public ASTMap(Parser p, int id) {
51: super (p, id);
52: }
53:
54: /**
55: * @see org.apache.velocity.runtime.parser.node.SimpleNode#jjtAccept(org.apache.velocity.runtime.parser.ParserVisitor, java.lang.Object)
56: */
57: public Object jjtAccept(ParserVisitor visitor, Object data) {
58: return visitor.visit(this , data);
59: }
60:
61: /**
62: * @see org.apache.velocity.runtime.parser.node.SimpleNode#value(org.apache.velocity.context.InternalContextAdapter)
63: */
64: public Object value(InternalContextAdapter context)
65: throws MethodInvocationException {
66: int size = jjtGetNumChildren();
67:
68: Map objectMap = new HashMap();
69:
70: for (int i = 0; i < size; i += 2) {
71: SimpleNode keyNode = (SimpleNode) jjtGetChild(i);
72: SimpleNode valueNode = (SimpleNode) jjtGetChild(i + 1);
73:
74: Object key = (keyNode == null ? null : keyNode
75: .value(context));
76: Object value = (valueNode == null ? null : valueNode
77: .value(context));
78:
79: objectMap.put(key, value);
80: }
81:
82: return objectMap;
83: }
84: }
|