1 /****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one *
3 * or more contributor license agreements. See the NOTICE file *
4 * distributed with this work for additional information *
5 * regarding copyright ownership. The ASF licenses this file *
6 * to you under the Apache License, Version 2.0 (the *
7 * "License"); you may not use this file except in compliance *
8 * with the License. You may obtain a copy of the License at *
9 * *
10 * http://www.apache.org/licenses/LICENSE-2.0 *
11 * *
12 * Unless required by applicable law or agreed to in writing, *
13 * software distributed under the License is distributed on an *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15 * KIND, either express or implied. See the License for the *
16 * specific language governing permissions and limitations *
17 * under the License. *
18 ****************************************************************/
19 package org.apache.jsieve.util;
20
21 import org.apache.jsieve.parser.generated.ASTargument;
22 import org.apache.jsieve.parser.generated.ASTarguments;
23 import org.apache.jsieve.parser.generated.ASTblock;
24 import org.apache.jsieve.parser.generated.ASTcommand;
25 import org.apache.jsieve.parser.generated.ASTcommands;
26 import org.apache.jsieve.parser.generated.ASTstart;
27 import org.apache.jsieve.parser.generated.ASTstring;
28 import org.apache.jsieve.parser.generated.ASTstring_list;
29 import org.apache.jsieve.parser.generated.ASTtest;
30 import org.apache.jsieve.parser.generated.ASTtest_list;
31 import org.apache.jsieve.parser.generated.SimpleNode;
32
33 /**
34 * Presents a low level reporting view of a Sieve node tree.
35 * Familiarity with the
36 * <a href='http://james.apache.org/jsieve/'>JSieve</a> implementation is assumed.
37 * Anyone requiring a high level view should see {@link SieveHandler}.
38 *
39 * @see NodeTraverser
40 * @see SieveHandler
41 */
42 public interface NodeHandler {
43
44 /**
45 * Starts a tree traversal.
46 * @throws HaltTraversalException
47 */
48 public void start() throws HaltTraversalException;
49
50 /**
51 * Ends a tree traveral.
52 * @throws HaltTraversalException
53 */
54 public void end() throws HaltTraversalException;
55
56 /**
57 * Starts traversal of given node.
58 * @param node not null
59 * @throws HaltTraversalException
60 */
61 public void start(SimpleNode node) throws HaltTraversalException;
62
63 /**
64 * Ends traversal of given node.
65 * @param node not null
66 * @throws HaltTraversalException
67 */
68 public void end(SimpleNode node) throws HaltTraversalException;
69
70 /**
71 * Starts traversal of given node.
72 * @param node not null
73 * @throws HaltTraversalException
74 */
75 public void start(ASTstart node) throws HaltTraversalException;
76
77 /**
78 * Ends traversal of given node.
79 * @param node not null
80 * @throws HaltTraversalException
81 */
82 public void end(ASTstart node) throws HaltTraversalException;
83
84 /**
85 * Starts traversal of given node.
86 * @param node not null
87 * @throws HaltTraversalException
88 */
89 public void start(ASTcommands node) throws HaltTraversalException;
90
91 /**
92 * Ends traversal of given node.
93 * @param node not null
94 * @throws HaltTraversalException
95 */
96 public void end(ASTcommands node) throws HaltTraversalException;
97
98 /**
99 * Starts traversal of given node.
100 * @param node not null
101 * @throws HaltTraversalException
102 */
103 public void start(ASTcommand node) throws HaltTraversalException;
104
105 /**
106 * Ends traversal of given node.
107 * @param node not null
108 * @throws HaltTraversalException
109 */
110 public void end(ASTcommand node) throws HaltTraversalException;
111
112 /**
113 * Starts traversal of given node.
114 * @param node not null
115 * @throws HaltTraversalException
116 */
117 public void start(ASTblock node) throws HaltTraversalException;
118
119 /**
120 * Ends traversal of given node.
121 * @param node not null
122 * @throws HaltTraversalException
123 */
124 public void end(ASTblock node) throws HaltTraversalException;
125
126 /**
127 * Starts traversal of given node.
128 * @param node not null
129 * @throws HaltTraversalException
130 */
131 public void start(ASTarguments node) throws HaltTraversalException;
132
133 /**
134 * Ends traversal of given node.
135 * @param node not null
136 * @throws HaltTraversalException
137 */
138 public void end(ASTarguments node) throws HaltTraversalException;
139
140 /**
141 * Starts traversal of given node.
142 * @param node not null
143 * @throws HaltTraversalException
144 */
145 public void start(ASTargument node) throws HaltTraversalException;
146
147 /**
148 * Ends traversal of given node.
149 * @param node not null
150 * @throws HaltTraversalException
151 */
152 public void end(ASTargument node) throws HaltTraversalException;
153
154 /**
155 * Starts traversal of given node.
156 * @param node not null
157 * @throws HaltTraversalException
158 */
159 public void start(ASTtest node) throws HaltTraversalException;
160
161 /**
162 * Ends traversal of given node.
163 * @param node not null
164 * @throws HaltTraversalException
165 */
166 public void end(ASTtest node) throws HaltTraversalException;
167
168 /**
169 * Starts traversal of given node.
170 * @param node not null
171 * @throws HaltTraversalException
172 */
173 public void start(ASTtest_list node) throws HaltTraversalException;
174
175 /**
176 * Ends traversal of given node.
177 * @param node not null
178 * @throws HaltTraversalException
179 */
180 public void end(ASTtest_list node) throws HaltTraversalException;
181
182 /**
183 * Starts traversal of given node.
184 * @param node not null
185 * @throws HaltTraversalException
186 */
187 public void start(ASTstring node) throws HaltTraversalException;
188
189 /**
190 * Ends traversal of given node.
191 * @param node not null
192 * @throws HaltTraversalException
193 */
194 public void end(ASTstring node) throws HaltTraversalException;
195
196 /**
197 * Starts traversal of given node.
198 * @param node not null
199 * @throws HaltTraversalException
200 */
201 public void start(ASTstring_list node) throws HaltTraversalException;
202
203 /**
204 * Ends traversal of given node.
205 * @param node not null
206 * @throws HaltTraversalException
207 */
208 public void end(ASTstring_list node) throws HaltTraversalException;
209 }