| %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. |