1 package test.crispy;
2
3 import java.lang.reflect.Method;
4
5 import junit.framework.TestCase;
6 import net.sf.crispy.InterceptorFilterContext;
7 import net.sf.crispy.InvocationException;
8 import net.sf.crispy.filter.NamePatternInterceptorFilter;
9 import net.sf.crispy.filter.SimpleNameInterceptorFilter;
10 import test.crispy.example.service.Calculator;
11 import test.crispy.example.service.Echo;
12
13 public class InterceptorFilterTest extends TestCase {
14
15 public void testInterceptorFilterContext () throws Exception {
16 InterceptorFilterContext lvContext = new InterceptorFilterContext ();
17 Object args[] = new Object[] { new Integer(1), new Long(2) };
18 lvContext.setArgs(args);
19 assertEquals(lvContext.getArgs(), args);
20
21 assertNull(lvContext.getInvocationClass());
22 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
23 lvContext.setMethod(lvMethodAdd);
24 assertEquals(lvContext.getInvocationClass(), Calculator.class);
25
26 lvContext.setInvocationClass(Echo.class);
27 assertEquals(lvContext.getInvocationClass(), Echo.class);
28
29 }
30 public void testSimpleInterceptorFilterForClass() throws Exception {
31 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(Calculator.class);
32 lvFilter.setNegate(false);
33 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
34 boolean lvAccept = lvFilter.accept(lvContext);
35 assertTrue(lvAccept);
36
37 lvContext = new InterceptorFilterContext(Echo.class);
38 lvAccept = lvFilter.accept(lvContext);
39 assertFalse(lvAccept);
40 }
41
42 public void testSimpleInterceptorFilterForClassNegate() throws Exception {
43 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(Calculator.class);
44 lvFilter.setNegate(true);
45 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
46 boolean lvAccept = lvFilter.accept(lvContext);
47 assertFalse(lvAccept);
48
49 lvContext = new InterceptorFilterContext(Echo.class);
50 lvAccept = lvFilter.accept(lvContext);
51 assertTrue(lvAccept);
52 }
53
54 public void testSimpleInterceptorFilterForClassName() throws Exception {
55 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(Calculator.class.getName(), SimpleNameInterceptorFilter.FILTER_TYPE_CLASS);
56 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
57 boolean lvAccept = lvFilter.accept(lvContext);
58 assertTrue(lvAccept);
59
60 lvContext = new InterceptorFilterContext(Echo.class);
61 lvAccept = lvFilter.accept(lvContext);
62 assertFalse(lvAccept);
63 }
64
65 public void testSimpleInterceptorFilterForClassNameNegate() throws Exception {
66 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(Calculator.class.getName(), SimpleNameInterceptorFilter.FILTER_TYPE_CLASS);
67 lvFilter.setNegate(true);
68 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
69 boolean lvAccept = lvFilter.accept(lvContext);
70 assertFalse(lvAccept);
71
72 lvContext = new InterceptorFilterContext(Echo.class);
73 lvAccept = lvFilter.accept(lvContext);
74 assertTrue(lvAccept);
75 }
76
77 public void testSimpleInterceptorFilterForClassArray() throws Exception {
78 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new Class[] {Calculator.class, Echo.class});
79 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
80 boolean lvAccept = lvFilter.accept(lvContext);
81 assertTrue(lvAccept);
82
83 lvContext = new InterceptorFilterContext(Echo.class);
84 lvAccept = lvFilter.accept(lvContext);
85 assertTrue(lvAccept);
86
87 lvContext = new InterceptorFilterContext(Object.class);
88 lvAccept = lvFilter.accept(lvContext);
89 assertFalse(lvAccept);
90 }
91
92 public void testSimpleInterceptorFilterForClassArrayNegate() throws Exception {
93 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new Class[] {Calculator.class, Echo.class});
94 lvFilter.setNegate(true);
95 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
96 boolean lvAccept = lvFilter.accept(lvContext);
97 assertFalse(lvAccept);
98
99 lvContext = new InterceptorFilterContext(Echo.class);
100 lvAccept = lvFilter.accept(lvContext);
101 assertFalse(lvAccept);
102
103 lvContext = new InterceptorFilterContext(Object.class);
104 lvAccept = lvFilter.accept(lvContext);
105 assertTrue(lvAccept);
106 }
107
108 public void testSimpleInterceptorFilterForMethod() throws Exception {
109 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
110 Method lvMethodEcho = Echo.class.getMethod("echo", new Class[] { String.class });
111 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(lvMethodAdd);
112 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
113 lvContext.setMethod(lvMethodAdd);
114 boolean lvAccept = lvFilter.accept(lvContext);
115 assertTrue(lvAccept);
116
117 lvContext = new InterceptorFilterContext(Echo.class);
118 lvContext.setMethod(lvMethodEcho);
119 lvAccept = lvFilter.accept(lvContext);
120 assertFalse(lvAccept);
121 }
122
123 public void testSimpleInterceptorFilterForMethodName() throws Exception {
124 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
125 Method lvMethodEcho = Echo.class.getMethod("echo", new Class[] { String.class });
126
127 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter("add", SimpleNameInterceptorFilter.FILTER_TYPE_METHOD);
128 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
129 lvContext.setMethod(lvMethodAdd);
130 boolean lvAccept = lvFilter.accept(lvContext);
131 assertTrue(lvAccept);
132
133 lvContext = new InterceptorFilterContext(Echo.class);
134 lvContext.setMethod(lvMethodEcho);
135 lvAccept = lvFilter.accept(lvContext);
136 assertFalse(lvAccept);
137 }
138
139 public void testSimpleInterceptorFilterForMethodArray() throws Exception {
140 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
141 Method lvMethodEcho = Echo.class.getMethod("echo", new Class[] { String.class });
142 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new Method[] {lvMethodAdd, lvMethodEcho});
143 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
144 lvContext.setMethod(lvMethodAdd);
145 boolean lvAccept = lvFilter.accept(lvContext);
146 assertTrue(lvAccept);
147
148 lvContext = new InterceptorFilterContext(Echo.class);
149 lvContext.setMethod(lvMethodEcho);
150 lvAccept = lvFilter.accept(lvContext);
151 assertTrue(lvAccept);
152
153 Method lvMethodSubtract = Calculator.class.getMethod("subtract", new Class[] {int.class, int.class});
154 lvContext = new InterceptorFilterContext(Echo.class);
155 lvContext.setMethod(lvMethodSubtract);
156 lvAccept = lvFilter.accept(lvContext);
157 assertFalse(lvAccept);
158 }
159
160 public void testSimpleInterceptorFilterForMethodNameArray() throws Exception {
161 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
162 Method lvMethodEcho = Echo.class.getMethod("echo", new Class[] { String.class });
163 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new String[] {"add", "echo"}, SimpleNameInterceptorFilter.FILTER_TYPE_METHOD);
164 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
165 lvContext.setMethod(lvMethodAdd);
166 boolean lvAccept = lvFilter.accept(lvContext);
167 assertTrue(lvAccept);
168
169 lvContext = new InterceptorFilterContext(Echo.class);
170 lvContext.setMethod(lvMethodEcho);
171 lvAccept = lvFilter.accept(lvContext);
172 assertTrue(lvAccept);
173
174 Method lvMethodSubtract = Calculator.class.getMethod("subtract", new Class[] {int.class, int.class});
175 lvContext = new InterceptorFilterContext(Echo.class);
176 lvContext.setMethod(lvMethodSubtract);
177 lvAccept = lvFilter.accept(lvContext);
178 assertFalse(lvAccept);
179 }
180
181 public void testSimpleInterceptorFilterForThrowable() throws Exception {
182 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new InvocationException("Test-Exception"));
183 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
184 lvContext.setThrowable(new InvocationException("Test-Exception"));
185 boolean lvAccept = lvFilter.accept(lvContext);
186 assertTrue(lvAccept);
187
188 lvContext = new InterceptorFilterContext(Echo.class);
189 lvContext.setThrowable(new NullPointerException("Test-Exception"));
190 lvAccept = lvFilter.accept(lvContext);
191 assertFalse(lvAccept);
192 }
193
194 public void testSimpleInterceptorFilterForThrowableName() throws Exception {
195 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(InvocationException.class.getName(), SimpleNameInterceptorFilter.FILTER_TYPE_THROWABLE);
196 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
197 lvContext.setThrowable(new InvocationException("Test-Exception"));
198 boolean lvAccept = lvFilter.accept(lvContext);
199 assertTrue(lvAccept);
200
201 lvContext = new InterceptorFilterContext(Echo.class);
202 lvContext.setThrowable(new NullPointerException("Test-Exception"));
203 lvAccept = lvFilter.accept(lvContext);
204 assertFalse(lvAccept);
205 }
206
207 public void testSimpleInterceptorFilterForThrowableName2() throws Exception {
208 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(InvocationException.class.getName(), SimpleNameInterceptorFilter.FILTER_TYPE_THROWABLE);
209 InterceptorFilterContext lvContext = new InterceptorFilterContext();
210 lvContext.setThrowable(new InvocationException("Test-Exception"));
211 boolean lvAccept = lvFilter.accept(lvContext);
212 assertTrue(lvAccept);
213
214 lvContext = new InterceptorFilterContext(Echo.class);
215 lvContext.setThrowable(new NullPointerException("Test-Exception"));
216 lvAccept = lvFilter.accept(lvContext);
217 assertFalse(lvAccept);
218 }
219
220
221 public void testSimpleInterceptorFilterForThrowableArray() throws Exception {
222 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new Exception [] {new InvocationException("Test-Exception")});
223 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
224 lvContext.setThrowable(new InvocationException("Test-Exception"));
225 boolean lvAccept = lvFilter.accept(lvContext);
226 assertTrue(lvAccept);
227
228 lvContext = new InterceptorFilterContext(Echo.class);
229 lvContext.setThrowable(new NullPointerException("Test-Exception"));
230 lvAccept = lvFilter.accept(lvContext);
231 assertFalse(lvAccept);
232 }
233
234 public void testSimpleInterceptorFilterForThrowableEqualsNull() throws Exception {
235 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(".*InvocationException", SimpleNameInterceptorFilter.FILTER_TYPE_THROWABLE);
236 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
237 boolean lvAccept = lvFilter.accept(lvContext);
238 assertFalse(lvAccept);
239 }
240
241
242 public void testName() throws Exception {
243 SimpleNameInterceptorFilter lvFilter = new SimpleNameInterceptorFilter(new String[] {"add", "echo"}, -99);
244 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
245 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
246 lvContext.setMethod(lvMethodAdd);
247 boolean lvAccept = lvFilter.accept(lvContext);
248 assertFalse(lvAccept);
249 }
250
251
252 public void testNamePatternInterceptorFilterFilterForClass() throws Exception {
253 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(".*C.*", NamePatternInterceptorFilter.FILTER_TYPE_CLASS);
254 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
255 boolean lvAccept = lvFilter.accept(lvContext);
256 assertTrue(lvAccept);
257
258 lvContext = new InterceptorFilterContext(Echo.class);
259 lvAccept = lvFilter.accept(lvContext);
260 assertFalse(lvAccept);
261 }
262
263 public void testNamePatternInterceptorFilterFilterForClassNegate() throws Exception {
264 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(".*C.*", NamePatternInterceptorFilter.FILTER_TYPE_CLASS);
265 lvFilter.setNegate(true);
266 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
267 boolean lvAccept = lvFilter.accept(lvContext);
268 assertFalse(lvAccept);
269
270 lvContext = new InterceptorFilterContext(Echo.class);
271 lvAccept = lvFilter.accept(lvContext);
272 assertTrue(lvAccept);
273 }
274
275 public void testNamePatternInterceptorFilterForMethodName() throws Exception {
276 Method lvMethodAdd = Calculator.class.getMethod("add", new Class[] {int.class, int.class});
277 Method lvMethodEcho = Echo.class.getMethod("echo", new Class[] { String.class });
278
279 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter("a.*", NamePatternInterceptorFilter.FILTER_TYPE_METHOD);
280 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
281 lvContext.setMethod(lvMethodAdd);
282 boolean lvAccept = lvFilter.accept(lvContext);
283 assertTrue(lvAccept);
284
285 lvContext = new InterceptorFilterContext(Echo.class);
286 lvContext.setMethod(lvMethodEcho);
287 lvAccept = lvFilter.accept(lvContext);
288 assertFalse(lvAccept);
289 }
290
291 public void testNamePatternInterceptorFilterForThrowableName() throws Exception {
292 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(".*InvocationException", NamePatternInterceptorFilter.FILTER_TYPE_THROWABLE);
293 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
294 lvContext.setThrowable(new InvocationException("Test-Exception"));
295 boolean lvAccept = lvFilter.accept(lvContext);
296 assertTrue(lvAccept);
297
298 lvContext = new InterceptorFilterContext(Echo.class);
299 lvContext.setThrowable(new NullPointerException("Test-Exception"));
300 lvAccept = lvFilter.accept(lvContext);
301 assertFalse(lvAccept);
302 }
303
304 public void testNamePatternInterceptorFilterForThrowableEqualsNull() throws Exception {
305 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(".*InvocationException", NamePatternInterceptorFilter.FILTER_TYPE_THROWABLE);
306 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
307 boolean lvAccept = lvFilter.accept(lvContext);
308 assertFalse(lvAccept);
309 }
310
311 public void testNamePatternInterceptorFilterNullPatter() throws Exception {
312 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(null, NamePatternInterceptorFilter.FILTER_TYPE_THROWABLE);
313 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
314 lvContext.setThrowable(new InvocationException("Test-Exception"));
315 boolean lvAccept = lvFilter.accept(lvContext);
316 assertTrue(lvAccept);
317
318 lvContext = new InterceptorFilterContext(Echo.class);
319 lvContext.setThrowable(new NullPointerException("Test-Exception"));
320 lvAccept = lvFilter.accept(lvContext);
321 assertTrue(lvAccept);
322 }
323
324 public void testNamePatternInterceptorFilterEverFalse() throws Exception {
325 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(".*", NamePatternInterceptorFilter.FILTER_TYPE_NO);
326 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
327 lvContext.setThrowable(new InvocationException("Test-Exception"));
328 boolean lvAccept = lvFilter.accept(lvContext);
329 assertFalse(lvAccept);
330
331 lvContext = new InterceptorFilterContext(Echo.class);
332 lvContext.setThrowable(new NullPointerException("Test-Exception"));
333 lvAccept = lvFilter.accept(lvContext);
334 assertFalse(lvAccept);
335 }
336
337 public void testNamePatternInterceptorFilterEverMethodFalse() throws Exception {
338 NamePatternInterceptorFilter lvFilter = new NamePatternInterceptorFilter(".*", NamePatternInterceptorFilter.FILTER_TYPE_METHOD);
339 InterceptorFilterContext lvContext = new InterceptorFilterContext(Calculator.class);
340 boolean lvAccept = lvFilter.accept(lvContext);
341 assertFalse(lvAccept);
342 }
343
344 }