View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.jexl3.internal;
18  
19  import org.apache.commons.jexl3.JexlExpression;
20  import org.apache.commons.jexl3.JexlScript;
21  import org.apache.commons.jexl3.parser.ASTAddNode;
22  import org.apache.commons.jexl3.parser.ASTAndNode;
23  import org.apache.commons.jexl3.parser.ASTAnnotatedStatement;
24  import org.apache.commons.jexl3.parser.ASTAnnotation;
25  import org.apache.commons.jexl3.parser.ASTArguments;
26  import org.apache.commons.jexl3.parser.ASTArrayAccess;
27  import org.apache.commons.jexl3.parser.ASTArrayLiteral;
28  import org.apache.commons.jexl3.parser.ASTAssignment;
29  import org.apache.commons.jexl3.parser.ASTBitwiseAndNode;
30  import org.apache.commons.jexl3.parser.ASTBitwiseComplNode;
31  import org.apache.commons.jexl3.parser.ASTBitwiseOrNode;
32  import org.apache.commons.jexl3.parser.ASTBitwiseXorNode;
33  import org.apache.commons.jexl3.parser.ASTBlock;
34  import org.apache.commons.jexl3.parser.ASTBreak;
35  import org.apache.commons.jexl3.parser.ASTConstructorNode;
36  import org.apache.commons.jexl3.parser.ASTContinue;
37  import org.apache.commons.jexl3.parser.ASTDecrementGetNode;
38  import org.apache.commons.jexl3.parser.ASTDefineVars;
39  import org.apache.commons.jexl3.parser.ASTDivNode;
40  import org.apache.commons.jexl3.parser.ASTDoWhileStatement;
41  import org.apache.commons.jexl3.parser.ASTEQNode;
42  import org.apache.commons.jexl3.parser.ASTEQSNode;
43  import org.apache.commons.jexl3.parser.ASTERNode;
44  import org.apache.commons.jexl3.parser.ASTEWNode;
45  import org.apache.commons.jexl3.parser.ASTEmptyFunction;
46  import org.apache.commons.jexl3.parser.ASTExtendedLiteral;
47  import org.apache.commons.jexl3.parser.ASTFalseNode;
48  import org.apache.commons.jexl3.parser.ASTForeachStatement;
49  import org.apache.commons.jexl3.parser.ASTFunctionNode;
50  import org.apache.commons.jexl3.parser.ASTGENode;
51  import org.apache.commons.jexl3.parser.ASTGTNode;
52  import org.apache.commons.jexl3.parser.ASTGetDecrementNode;
53  import org.apache.commons.jexl3.parser.ASTGetIncrementNode;
54  import org.apache.commons.jexl3.parser.ASTIdentifier;
55  import org.apache.commons.jexl3.parser.ASTIdentifierAccess;
56  import org.apache.commons.jexl3.parser.ASTIfStatement;
57  import org.apache.commons.jexl3.parser.ASTIncrementGetNode;
58  import org.apache.commons.jexl3.parser.ASTInstanceOf;
59  import org.apache.commons.jexl3.parser.ASTJexlScript;
60  import org.apache.commons.jexl3.parser.ASTJxltLiteral;
61  import org.apache.commons.jexl3.parser.ASTLENode;
62  import org.apache.commons.jexl3.parser.ASTLTNode;
63  import org.apache.commons.jexl3.parser.ASTMapEntry;
64  import org.apache.commons.jexl3.parser.ASTMapLiteral;
65  import org.apache.commons.jexl3.parser.ASTMethodNode;
66  import org.apache.commons.jexl3.parser.ASTModNode;
67  import org.apache.commons.jexl3.parser.ASTMulNode;
68  import org.apache.commons.jexl3.parser.ASTNENode;
69  import org.apache.commons.jexl3.parser.ASTNESNode;
70  import org.apache.commons.jexl3.parser.ASTNEWNode;
71  import org.apache.commons.jexl3.parser.ASTNRNode;
72  import org.apache.commons.jexl3.parser.ASTNSWNode;
73  import org.apache.commons.jexl3.parser.ASTNotInstanceOf;
74  import org.apache.commons.jexl3.parser.ASTNotNode;
75  import org.apache.commons.jexl3.parser.ASTNullLiteral;
76  import org.apache.commons.jexl3.parser.ASTNullpNode;
77  import org.apache.commons.jexl3.parser.ASTNumberLiteral;
78  import org.apache.commons.jexl3.parser.ASTOrNode;
79  import org.apache.commons.jexl3.parser.ASTQualifiedIdentifier;
80  import org.apache.commons.jexl3.parser.ASTRangeNode;
81  import org.apache.commons.jexl3.parser.ASTReference;
82  import org.apache.commons.jexl3.parser.ASTReferenceExpression;
83  import org.apache.commons.jexl3.parser.ASTRegexLiteral;
84  import org.apache.commons.jexl3.parser.ASTReturnStatement;
85  import org.apache.commons.jexl3.parser.ASTSWNode;
86  import org.apache.commons.jexl3.parser.ASTSetAddNode;
87  import org.apache.commons.jexl3.parser.ASTSetAndNode;
88  import org.apache.commons.jexl3.parser.ASTSetDivNode;
89  import org.apache.commons.jexl3.parser.ASTSetLiteral;
90  import org.apache.commons.jexl3.parser.ASTSetModNode;
91  import org.apache.commons.jexl3.parser.ASTSetMultNode;
92  import org.apache.commons.jexl3.parser.ASTSetOrNode;
93  import org.apache.commons.jexl3.parser.ASTSetShiftLeftNode;
94  import org.apache.commons.jexl3.parser.ASTSetShiftRightNode;
95  import org.apache.commons.jexl3.parser.ASTSetShiftRightUnsignedNode;
96  import org.apache.commons.jexl3.parser.ASTSetSubNode;
97  import org.apache.commons.jexl3.parser.ASTSetXorNode;
98  import org.apache.commons.jexl3.parser.ASTShiftLeftNode;
99  import org.apache.commons.jexl3.parser.ASTShiftRightNode;
100 import org.apache.commons.jexl3.parser.ASTShiftRightUnsignedNode;
101 import org.apache.commons.jexl3.parser.ASTSizeFunction;
102 import org.apache.commons.jexl3.parser.ASTStringLiteral;
103 import org.apache.commons.jexl3.parser.ASTSubNode;
104 import org.apache.commons.jexl3.parser.ASTTernaryNode;
105 import org.apache.commons.jexl3.parser.ASTThrowStatement;
106 import org.apache.commons.jexl3.parser.ASTTrueNode;
107 import org.apache.commons.jexl3.parser.ASTTryResources;
108 import org.apache.commons.jexl3.parser.ASTTryStatement;
109 import org.apache.commons.jexl3.parser.ASTUnaryMinusNode;
110 import org.apache.commons.jexl3.parser.ASTUnaryPlusNode;
111 import org.apache.commons.jexl3.parser.ASTVar;
112 import org.apache.commons.jexl3.parser.ASTWhileStatement;
113 import org.apache.commons.jexl3.parser.JexlNode;
114 import org.apache.commons.jexl3.parser.ParserVisitor;
115 
116 /**
117  * Concrete visitor base, used for feature and operator controllers.
118  */
119 public class ScriptVisitor extends ParserVisitor {
120     @Override
121     protected Object visit(final ASTAddNode node, final Object data) {
122         return visitNode(node, data);
123     }
124 
125     @Override
126     protected Object visit(final ASTAndNode node, final Object data) {
127         return visitNode(node, data);
128     }
129 
130     @Override
131     protected Object visit(final ASTAnnotatedStatement node, final Object data) {
132         return visitNode(node, data);
133     }
134 
135     @Override
136     protected Object visit(final ASTAnnotation node, final Object data) {
137         return visitNode(node, data);
138     }
139 
140     @Override
141     protected Object visit(final ASTArguments node, final Object data) {
142         return visitNode(node, data);
143     }
144 
145     @Override
146     protected Object visit(final ASTArrayAccess node, final Object data) {
147         return visitNode(node, data);
148     }
149 
150     @Override
151     protected Object visit(final ASTArrayLiteral node, final Object data) {
152         return visitNode(node, data);
153     }
154 
155     @Override
156     protected Object visit(final ASTAssignment node, final Object data) {
157         return visitNode(node, data);
158     }
159 
160     @Override
161     protected Object visit(final ASTBitwiseAndNode node, final Object data) {
162         return visitNode(node, data);
163     }
164 
165     @Override
166     protected Object visit(final ASTBitwiseComplNode node, final Object data) {
167         return visitNode(node, data);
168     }
169 
170     @Override
171     protected Object visit(final ASTBitwiseOrNode node, final Object data) {
172         return visitNode(node, data);
173     }
174 
175     @Override
176     protected Object visit(final ASTBitwiseXorNode node, final Object data) {
177         return visitNode(node, data);
178     }
179 
180     @Override
181     protected Object visit(final ASTBlock node, final Object data) {
182         return visitNode(node, data);
183     }
184 
185     @Override
186     protected Object visit(final ASTBreak node, final Object data) {
187         return visitNode(node, data);
188     }
189 
190     @Override
191     protected Object visit(final ASTConstructorNode node, final Object data) {
192         return visitNode(node, data);
193     }
194 
195     @Override
196     protected Object visit(final ASTContinue node, final Object data) {
197         return visitNode(node, data);
198     }
199 
200     @Override
201     protected Object visit(final ASTDecrementGetNode node, final Object data) { return visitNode(node, data); }
202 
203     @Override
204     protected Object visit(final ASTDefineVars node, final Object data) {
205         return visitNode(node, data);
206     }
207 
208     @Override
209     protected Object visit(final ASTDivNode node, final Object data) {
210         return visitNode(node, data);
211     }
212 
213     @Override
214     protected Object visit(final ASTDoWhileStatement node, final Object data) {
215         return visitNode(node, data);
216     }
217 
218     @Override
219     protected Object visit(final ASTEmptyFunction node, final Object data) {
220         return visitNode(node, data);
221     }
222 
223     @Override
224     protected Object visit(final ASTEQNode node, final Object data) {
225         return visitNode(node, data);
226     }
227 
228     @Override
229     protected Object visit(final ASTEQSNode node, final Object data) {
230         return visitNode(node, data);
231     }
232 
233     @Override
234     protected Object visit(final ASTERNode node, final Object data) {
235         return visitNode(node, data);
236     }
237 
238     @Override
239     protected Object visit(final ASTEWNode node, final Object data) {
240         return visitNode(node, data);
241     }
242 
243     @Override
244     protected Object visit(final ASTExtendedLiteral node, final Object data) {
245         return visitNode(node, data);
246     }
247 
248     @Override
249     protected Object visit(final ASTFalseNode node, final Object data) {
250         return visitNode(node, data);
251     }
252 
253     @Override
254     protected Object visit(final ASTForeachStatement node, final Object data) {
255         return visitNode(node, data);
256     }
257 
258     @Override
259     protected Object visit(final ASTFunctionNode node, final Object data) {
260         return visitNode(node, data);
261     }
262 
263     @Override
264     protected Object visit(final ASTGENode node, final Object data) {
265         return visitNode(node, data);
266     }
267 
268     @Override
269     protected Object visit(final ASTGetDecrementNode node, final Object data) { return visitNode(node, data); }
270 
271     @Override
272     protected Object visit(final ASTGetIncrementNode node, final Object data) { return visitNode(node, data); }
273     @Override
274     protected Object visit(final ASTGTNode node, final Object data) {
275         return visitNode(node, data);
276     }
277     @Override
278     protected Object visit(final ASTIdentifier node, final Object data) {
279         return visitNode(node, data);
280     }
281 
282     @Override
283     protected Object visit(final ASTIdentifierAccess node, final Object data) {
284         return visitNode(node, data);
285     }
286 
287     @Override
288     protected Object visit(final ASTIfStatement node, final Object data) {
289         return visitNode(node, data);
290     }
291 
292     @Override
293     protected Object visit(final ASTIncrementGetNode node, final Object data) { return visitNode(node, data); }
294 
295     @Override
296     protected Object visit(final ASTInstanceOf node, final Object data) { return visitNode(node, data); }
297 
298     @Override
299     protected Object visit(final ASTJexlScript node, final Object data) {
300         return visitNode(node, data);
301     }
302 
303     @Override
304     protected Object visit(final ASTJxltLiteral node, final Object data) {
305         return visitNode(node, data);
306     }
307 
308     @Override
309     protected Object visit(final ASTLENode node, final Object data) {
310         return visitNode(node, data);
311     }
312 
313     @Override
314     protected Object visit(final ASTLTNode node, final Object data) {
315         return visitNode(node, data);
316     }
317 
318     @Override
319     protected Object visit(final ASTMapEntry node, final Object data) {
320         return visitNode(node, data);
321     }
322 
323     @Override
324     protected Object visit(final ASTMapLiteral node, final Object data) {
325         return visitNode(node, data);
326     }
327 
328     @Override
329     protected Object visit(final ASTMethodNode node, final Object data) {
330         return visitNode(node, data);
331     }
332 
333     @Override
334     protected Object visit(final ASTModNode node, final Object data) {
335         return visitNode(node, data);
336     }
337 
338     @Override
339     protected Object visit(final ASTMulNode node, final Object data) {
340         return visitNode(node, data);
341     }
342 
343     @Override
344     protected Object visit(final ASTNENode node, final Object data) {
345         return visitNode(node, data);
346     }
347 
348     @Override
349     protected Object visit(final ASTNESNode node, final Object data) {
350         return visitNode(node, data);
351     }
352 
353     @Override
354     protected Object visit(final ASTNEWNode node, final Object data) {
355         return visitNode(node, data);
356     }
357 
358     @Override
359     protected Object visit(final ASTNotInstanceOf node, final Object data) { return visitNode(node, data); }
360 
361     @Override
362     protected Object visit(final ASTNotNode node, final Object data) {
363         return visitNode(node, data);
364     }
365 
366     @Override
367     protected Object visit(final ASTNRNode node, final Object data) {
368         return visitNode(node, data);
369     }
370 
371     @Override
372     protected Object visit(final ASTNSWNode node, final Object data) {
373         return visitNode(node, data);
374     }
375 
376     @Override
377     protected Object visit(final ASTNullLiteral node, final Object data) {
378         return visitNode(node, data);
379     }
380 
381     @Override
382     protected Object visit(final ASTNullpNode node, final Object data) {
383         return visitNode(node, data);
384     }
385 
386     @Override
387     protected Object visit(final ASTNumberLiteral node, final Object data) {
388         return visitNode(node, data);
389     }
390 
391     @Override
392     protected Object visit(final ASTOrNode node, final Object data) {
393         return visitNode(node, data);
394     }
395 
396     @Override
397     protected Object visit(final ASTQualifiedIdentifier node, final Object data) {
398         return visitNode(node, data);
399     }
400 
401     @Override
402     protected Object visit(final ASTRangeNode node, final Object data) {
403         return visitNode(node, data);
404     }
405 
406     @Override
407     protected Object visit(final ASTReference node, final Object data) {
408         return visitNode(node, data);
409     }
410 
411     @Override
412     protected Object visit(final ASTReferenceExpression node, final Object data) {
413         return visitNode(node, data);
414     }
415 
416     @Override
417     protected Object visit(final ASTRegexLiteral node, final Object data) {
418         return visitNode(node, data);
419     }
420 
421     @Override
422     protected Object visit(final ASTReturnStatement node, final Object data) {
423         return visitNode(node, data);
424     }
425 
426     @Override
427     protected Object visit(final ASTSetAddNode node, final Object data) {
428         return visitNode(node, data);
429     }
430 
431     @Override
432     protected Object visit(final ASTSetAndNode node, final Object data) {
433         return visitNode(node, data);
434     }
435 
436     @Override
437     protected Object visit(final ASTSetDivNode node, final Object data) {
438         return visitNode(node, data);
439     }
440 
441     @Override
442     protected Object visit(final ASTSetLiteral node, final Object data) {
443         return visitNode(node, data);
444     }
445 
446     @Override
447     protected Object visit(final ASTSetModNode node, final Object data) {
448         return visitNode(node, data);
449     }
450 
451     @Override
452     protected Object visit(final ASTSetMultNode node, final Object data) {
453         return visitNode(node, data);
454     }
455 
456     @Override
457     protected Object visit(final ASTSetOrNode node, final Object data) {
458         return visitNode(node, data);
459     }
460 
461     @Override
462     protected Object visit(final ASTSetShiftLeftNode node, final Object data) {
463         return visitNode(node, data);
464     }
465 
466     @Override
467     protected Object visit(final ASTSetShiftRightNode node, final Object data) {
468         return visitNode(node, data);
469     }
470 
471     @Override
472     protected Object visit(final ASTSetShiftRightUnsignedNode node, final Object data) {
473         return visitNode(node, data);
474     }
475 
476     @Override
477     protected Object visit(final ASTSetSubNode node, final Object data) {
478         return visitNode(node, data);
479     }
480 
481     @Override
482     protected Object visit(final ASTSetXorNode node, final Object data) {
483         return visitNode(node, data);
484     }
485 
486     @Override
487     protected Object visit(final ASTShiftLeftNode node, final Object data) {
488         return visitNode(node, data);
489     }
490 
491     @Override
492     protected Object visit(final ASTShiftRightNode node, final Object data) {
493         return visitNode(node, data);
494     }
495 
496     @Override
497     protected Object visit(final ASTShiftRightUnsignedNode node, final Object data) {
498         return visitNode(node, data);
499     }
500 
501     @Override
502     protected Object visit(final ASTSizeFunction node, final Object data) {
503         return visitNode(node, data);
504     }
505 
506     @Override
507     protected Object visit(final ASTStringLiteral node, final Object data) {
508         return visitNode(node, data);
509     }
510 
511     @Override
512     protected Object visit(final ASTSubNode node, final Object data) {
513         return visitNode(node, data);
514     }
515 
516     @Override
517     protected Object visit(final ASTSWNode node, final Object data) {
518         return visitNode(node, data);
519     }
520 
521     @Override
522     protected Object visit(final ASTTernaryNode node, final Object data) {
523         return visitNode(node, data);
524     }
525 
526     @Override
527     protected Object visit(final ASTThrowStatement node, final Object data) {
528         return visitNode(node, data);
529     }
530 
531     @Override
532     protected Object visit(final ASTTrueNode node, final Object data) {
533         return visitNode(node, data);
534     }
535 
536     @Override
537     protected Object visit(final ASTTryResources node, final Object data) {
538         return visitNode(node, data);
539     }
540 
541     @Override
542     protected Object visit(final ASTTryStatement node, final Object data) {
543         return visitNode(node, data);
544     }
545 
546     @Override
547     protected Object visit(final ASTUnaryMinusNode node, final Object data) {
548         return visitNode(node, data);
549     }
550 
551     @Override
552     protected Object visit(final ASTUnaryPlusNode node, final Object data) {
553         return visitNode(node, data);
554     }
555 
556     @Override
557     protected Object visit(final ASTVar node, final Object data) {
558         return visitNode(node, data);
559     }
560 
561     @Override
562     protected Object visit(final ASTWhileStatement node, final Object data) {
563         return visitNode(node, data);
564     }
565 
566     /**
567      * Visits all AST constituents of a JEXL expression.
568      * @param jscript the expression
569      * @param data some data context
570      * @return the visit result or null if jscript was not a Script implementation
571      */
572     public Object visitExpression (final JexlExpression jscript, final Object data) {
573         if (jscript instanceof Script) {
574             return ((Script) jscript).getScript().jjtAccept(this, data);
575         }
576         return null;
577     }
578 
579     /**
580      * Visits a node.
581      * Default implementation visits all its children.
582      * @param node the node to visit
583      * @param data visitor pattern argument
584      * @return visitor pattern value
585      */
586     protected Object visitNode(final JexlNode node, final Object data) {
587         return node.childrenAccept(this, data);
588     }
589 
590     /**
591      * Visits all AST constituents of a JEXL script.
592      * @param jscript the expression
593      * @param data some data context
594      * @return the visit result or null if jscript was not a Script implementation
595      */
596     public Object visitScript(final JexlScript jscript, final Object data) {
597         if (jscript instanceof Script) {
598             return ((Script) jscript).getScript().jjtAccept(this, data);
599         }
600         return null;
601     }
602 }