%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.jexl.parser.SimpleNode |
|
|
1 | /* |
|
2 | * Copyright 2002-2006 The Apache Software Foundation. |
|
3 | * |
|
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
|
5 | * you may not use this file except in compliance with the License. |
|
6 | * You may obtain a copy of the License at |
|
7 | * |
|
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
9 | * |
|
10 | * Unless required by applicable law or agreed to in writing, software |
|
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
13 | * See the License for the specific language governing permissions and |
|
14 | * limitations under the License. |
|
15 | */ |
|
16 | ||
17 | package org.apache.commons.jexl.parser; |
|
18 | ||
19 | import org.apache.commons.jexl.JexlContext; |
|
20 | ||
21 | /** |
|
22 | * A Useful implementation of {@link Node}. Mostly autogenerated by javacc |
|
23 | * |
|
24 | * @author <a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a> |
|
25 | * @version $Id: SimpleNode.java 398328 2006-04-30 12:46:59Z dion $ |
|
26 | */ |
|
27 | public class SimpleNode implements Node { |
|
28 | /** parent node. */ |
|
29 | protected Node parent; |
|
30 | ||
31 | /** children of this node. */ |
|
32 | protected Node[] children; |
|
33 | ||
34 | /** id of the node. */ |
|
35 | protected int id; |
|
36 | ||
37 | /** parser that created the node. */ |
|
38 | protected Parser parser; |
|
39 | ||
40 | /** |
|
41 | * Create the node given an id. |
|
42 | * |
|
43 | * @param i node id. |
|
44 | */ |
|
45 | 2434 | public SimpleNode(int i) { |
46 | 2434 | id = i; |
47 | 2434 | } |
48 | ||
49 | /** |
|
50 | * Create a node with the given parser and id. |
|
51 | * |
|
52 | * @param p a parser. |
|
53 | * @param i node id. |
|
54 | */ |
|
55 | public SimpleNode(Parser p, int i) { |
|
56 | 2434 | this(i); |
57 | 2434 | parser = p; |
58 | 2434 | } |
59 | ||
60 | /** |
|
61 | * Start of the node. |
|
62 | */ |
|
63 | public void jjtOpen() { |
|
64 | 2434 | } |
65 | ||
66 | /** |
|
67 | * End of the node. |
|
68 | */ |
|
69 | public void jjtClose() { |
|
70 | 2071 | } |
71 | ||
72 | /** {@inheritDoc} */ |
|
73 | public void jjtSetParent(Node n) { |
|
74 | 2140 | parent = n; |
75 | 2140 | } |
76 | ||
77 | /** {@inheritDoc} */ |
|
78 | public Node jjtGetParent() { |
|
79 | 0 | return parent; |
80 | } |
|
81 | ||
82 | /** {@inheritDoc} */ |
|
83 | public void jjtAddChild(Node n, int i) { |
|
84 | 2140 | if (children == null) { |
85 | 1677 | children = new Node[i + 1]; |
86 | 463 | } else if (i >= children.length) { |
87 | 0 | Node[] c = new Node[i + 1]; |
88 | 0 | System.arraycopy(children, 0, c, 0, children.length); |
89 | 0 | children = c; |
90 | } |
|
91 | ||
92 | 2140 | children[i] = n; |
93 | 2140 | } |
94 | ||
95 | /** {@inheritDoc} */ |
|
96 | public Node jjtGetChild(int i) { |
|
97 | 2511 | return children[i]; |
98 | } |
|
99 | ||
100 | /** {@inheritDoc} */ |
|
101 | public int jjtGetNumChildren() { |
|
102 | 946 | return (children == null) ? 0 : children.length; |
103 | } |
|
104 | ||
105 | /** |
|
106 | * Accept the visitor. |
|
107 | * |
|
108 | * @param visitor a {@link ParserVisitor}. |
|
109 | * @param data data to be passed along to the visitor. |
|
110 | * @return the value from visiting. |
|
111 | * @see ParserVisitor#visit |
|
112 | */ |
|
113 | public Object jjtAccept(ParserVisitor visitor, Object data) { |
|
114 | 0 | return visitor.visit(this, data); |
115 | } |
|
116 | ||
117 | /** |
|
118 | * Visit all children. |
|
119 | * |
|
120 | * @param visitor a {@link ParserVisitor}. |
|
121 | * @param data data to be passed along to the visitor. |
|
122 | * @return the value from visiting. |
|
123 | * @see ParserVisitor#visit |
|
124 | */ |
|
125 | public Object childrenAccept(ParserVisitor visitor, Object data) { |
|
126 | 0 | if (children != null) { |
127 | 0 | for (int i = 0; i < children.length; ++i) { |
128 | 0 | children[i].jjtAccept(visitor, data); |
129 | } |
|
130 | } |
|
131 | 0 | return data; |
132 | } |
|
133 | ||
134 | /** |
|
135 | * Gets a string representation of the node. |
|
136 | * @return the node name. |
|
137 | */ |
|
138 | public String toString() { |
|
139 | 0 | return ParserTreeConstants.jjtNodeName[id]; |
140 | } |
|
141 | ||
142 | /** |
|
143 | * Used during dumping to output the node with a prefix. |
|
144 | * @param prefix text to prefix {@link #toString()} |
|
145 | * @return text. |
|
146 | */ |
|
147 | public String toString(String prefix) { |
|
148 | 0 | return prefix + toString(); |
149 | } |
|
150 | ||
151 | /** |
|
152 | * Dump the node and all children. |
|
153 | * @param prefix text to prefix the node output. |
|
154 | */ |
|
155 | public void dump(String prefix) { |
|
156 | 0 | System.out.println(toString(prefix)); |
157 | ||
158 | 0 | if (children != null) { |
159 | 0 | for (int i = 0; i < children.length; ++i) { |
160 | 0 | SimpleNode n = (SimpleNode) children[i]; |
161 | ||
162 | 0 | if (n != null) { |
163 | 0 | n.dump(prefix + " "); |
164 | } |
|
165 | } |
|
166 | } |
|
167 | 0 | } |
168 | ||
169 | /** |
|
170 | * basic interpret - just invoke interpret on all children. |
|
171 | * @param pc the {@link JexlContext context} to interpret against. |
|
172 | * @return true if interpretation worked. |
|
173 | * @throws Exception on any error. |
|
174 | */ |
|
175 | public boolean interpret(JexlContext pc) throws Exception { |
|
176 | 39 | for (int i = 0; i < jjtGetNumChildren(); i++) { |
177 | 18 | SimpleNode node = (SimpleNode) jjtGetChild(i); |
178 | 18 | if (!node.interpret(pc)) { |
179 | 0 | return false; |
180 | } |
|
181 | } |
|
182 | ||
183 | 21 | return true; |
184 | } |
|
185 | ||
186 | /** |
|
187 | * Gets the value of this node. |
|
188 | * |
|
189 | * @param context the context to retrieve values from. |
|
190 | * @return the value of the node. |
|
191 | * @throws Exception when evaluating the operands fails. |
|
192 | */ |
|
193 | public Object value(JexlContext context) throws Exception { |
|
194 | 0 | return null; |
195 | } |
|
196 | ||
197 | /** |
|
198 | * Sets the value for the node - again, only makes sense for some nodes but |
|
199 | * lazyness tempts me to put it here. Keeps things simple. |
|
200 | * |
|
201 | * @param context the context to retrieve values from. |
|
202 | * @param value the value. |
|
203 | * @return the result. |
|
204 | * @throws Exception when evaluating the operands fails. |
|
205 | */ |
|
206 | public Object setValue(JexlContext context, Object value) throws Exception { |
|
207 | 0 | return null; |
208 | } |
|
209 | ||
210 | /** |
|
211 | * Used to let a node calcuate it's value.. |
|
212 | * @param o the object to calculate with. |
|
213 | * @param ctx the context to retrieve values from. |
|
214 | * @throws Exception when calculating the value fails. |
|
215 | * @return the result of the calculation. |
|
216 | */ |
|
217 | public Object execute(Object o, JexlContext ctx) throws Exception { |
|
218 | 0 | return null; |
219 | } |
|
220 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |