KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tirsen > nanning > config > InterceptorAspectTest


1 package com.tirsen.nanning.config;
2
3 import com.tirsen.nanning.AspectInstance;
4 import com.tirsen.nanning.MixinInstance;
5 import com.tirsen.nanning.MethodInterceptor;
6 import com.tirsen.nanning.Invocation;
7 import junit.framework.TestCase;
8
9 import java.lang.reflect.Method JavaDoc;
10 import java.util.Collections JavaDoc;
11
12 public class InterceptorAspectTest extends TestCase {
13     private AspectInstance instance;
14     private MixinInstance mixin;
15     private NOPInterceptor interceptor;
16     private Method JavaDoc method;
17     private Method JavaDoc method2;
18
19     public static interface Interface {
20         void method();
21
22         void method2();
23     }
24
25     public static class NOPInterceptor implements MethodInterceptor {
26         public Object JavaDoc invoke(Invocation invocation) throws Throwable JavaDoc {
27             return null;
28         }
29     }
30
31     protected void setUp() throws Exception JavaDoc {
32         super.setUp();
33
34         instance = new AspectInstance();
35         mixin = new MixinInstance(Interface.class, null);
36         instance.addMixin(mixin);
37
38         interceptor = new NOPInterceptor();
39
40         method = Interface.class.getMethod("method", null);
41         method2 = Interface.class.getMethod("method2", null);
42     }
43
44     public void testSingleton() {
45         InterceptorAspect interceptorAspect = new InterceptorAspect(interceptor);
46         assertEquals(InterceptorAspect.SINGLETON, interceptorAspect.getStateManagement());
47         interceptorAspect.advise(instance);
48         assertEquals(Collections.singleton(interceptor), mixin.getAllInterceptors());
49         assertEquals(Collections.singletonList(interceptor), mixin.getInterceptorsForMethod(method));
50         assertEquals(Collections.singletonList(interceptor), mixin.getInterceptorsForMethod(method2));
51     }
52
53     public void testPerMethod() {
54         InterceptorAspect interceptorAspect = new InterceptorAspect(NOPInterceptor.class, InterceptorAspect.PER_METHOD);
55         assertEquals(InterceptorAspect.PER_METHOD, interceptorAspect.getStateManagement());
56         interceptorAspect.advise(instance);
57         assertEquals(2, mixin.getAllInterceptors().size());
58         NOPInterceptor interceptor = (NOPInterceptor) mixin.getInterceptorsForMethod(method).get(0);
59         NOPInterceptor interceptor2 = (NOPInterceptor) mixin.getInterceptorsForMethod(method2).get(0);
60         assertTrue(interceptor != interceptor2);
61     }
62
63     public void testPerInstance() {
64         AspectInstance instance2 = new AspectInstance();
65         instance2.addMixin(new MixinInstance(Interface.class, null));
66
67         InterceptorAspect interceptorAspect = new InterceptorAspect(NOPInterceptor.class, InterceptorAspect.PER_INSTANCE);
68         assertEquals(InterceptorAspect.PER_INSTANCE, interceptorAspect.getStateManagement());
69
70         interceptorAspect.advise(instance);
71         interceptorAspect.advise(instance2);
72
73         assertEquals(1, instance.getAllInterceptors().size());
74         assertEquals(1, instance2.getAllInterceptors().size());
75         NOPInterceptor interceptor = (NOPInterceptor) instance.getInterceptorsForMethod(method).get(0);
76         NOPInterceptor interceptor2 = (NOPInterceptor) instance2.getInterceptorsForMethod(method2).get(0);
77         assertTrue(interceptor != interceptor2);
78     }
79
80     public void testFalsePointcut() {
81         InterceptorAspect interceptorAspect = new InterceptorAspect(new AbstractPointcut() {
82             public boolean adviseMethod(Method JavaDoc method) {
83                 return false;
84             }
85         }, interceptor);
86         assertEquals(0, interceptorAspect.getMethodsToAdvise(instance, mixin).length);
87         interceptorAspect.advise(instance);
88         assertEquals(0, mixin.getAllInterceptors().size());
89     }
90
91     public void testIntroduce() {
92         new InterceptorAspect(null).introduce(instance);
93         assertEquals(1, instance.getMixins().size());
94     }
95 }
96
Popular Tags