KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > DynamicDeploymentTest


1 /**************************************************************************************
2  * Copyright (c) Jonas BonŽr, Alexandre Vasseur. All rights reserved. *
3  * http://aspectwerkz.codehaus.org *
4  * ---------------------------------------------------------------------------------- *
5  * The software in this package is published under the terms of the LGPL license *
6  * a copy of which has been included with this distribution in the license.txt file. *
7  **************************************************************************************/

8 package test;
9
10 import junit.framework.TestCase;
11 import org.codehaus.aspectwerkz.reflect.ClassInfo;
12 import org.codehaus.aspectwerkz.reflect.impl.java.JavaClassInfo;
13
14
15 /**
16  * @author <a HREF="mailto:jboner@codehaus.org">Jonas BonŽr </a>
17  * @TODO: this test is deprecated - need a better way of handling dynamic stuff
18  */

19 public class DynamicDeploymentTest extends TestCase implements Loggable {
20     private static final String JavaDoc ASPECT_NAME = "test.aspect.DynamicDeploymentTestAspect";
21
22     private static final String JavaDoc NEW_ASPECT_NAME = "test.aspect.DynamicallyCreatedAspect";
23
24     private String JavaDoc m_logString = "";
25
26     private ClassInfo m_classMetaData = JavaClassInfo.getClassInfo(DynamicDeploymentTest.class);
27
28     public DynamicDeploymentTest(String JavaDoc name) {
29         super(name);
30     }
31
32     // FIXME XXX implement dynamic deployment and comment out tests
33

34 // public void testReorderAdvicesAtRuntime1() {
35
// m_logString = "";
36
// reorderAdvicesTestMethod();
37
// assertEquals("before1 before2 invocation after2 after1 ", m_logString);
38
//
39
// // get the pointcut by name (can also be retrieved by method meta-data)
40
// Pointcut pointcut = SystemLoader.getCflowStack(this.getClass()).getAspectManager("tests")
41
// .getPointcutManager(ASPECT_NAME).getPointcut("pc1 || pc2 || pc3");
42
//
43
// // get the advices
44
// List advices = pointcut.getAroundAdviceIndexTuples();
45
// NameIndexTuple tuple1 = (NameIndexTuple) advices.get(0);
46
// NameIndexTuple tuple2 = (NameIndexTuple) advices.get(1);
47
//
48
// // reorder the advices
49
// advices.set(0, tuple2);
50
// advices.set(1, tuple1);
51
//
52
// // set the reordered advices
53
// pointcut.setAroundAdviceIndexTuples(advices);
54
// }
55
//
56
// public void testAddAdviceAtRuntime() {
57
// m_logString = "";
58
// addAdviceTestMethod();
59
// assertEquals("before1 invocation after1 ", m_logString);
60
// MethodInfo methodMetaData = null;
61
// try {
62
// methodMetaData = JavaMethodInfo.getMethodInfo(getClass().getMethodInfo(
63
// "addAdviceTestMethod",
64
// new Class[] {}));
65
// } catch (NoSuchMethodException e) {
66
// e.printStackTrace(); //To change body of catch statement use File | Settings | File
67
// // Templates.
68
// }
69
// Pointcut methodPointcut = (Pointcut) SystemLoader.getCflowStack(this.getClass())
70
// .getAspectManager("tests").getPointcutManager(ASPECT_NAME).getPointcuts(
71
// new ExpressionContext(PointcutType.EXECUTION, methodMetaData, null)).get(0);
72
// methodPointcut.addAroundAdvice("test.aspect.DynamicDeploymentTestAspect.advice2");
73
// m_logString = "";
74
// addAdviceTestMethod();
75
// assertEquals("before1 before2 invocation after2 after1 ", m_logString);
76
//
77
// // remove it for other tests
78
// methodPointcut.removeAroundAdvice("test.aspect.DynamicDeploymentTestAspect.advice2");
79
// }
80
//
81
// public void testRemoveAdviceAtRuntime() {
82
// m_logString = "";
83
// removeAdviceTestMethod();
84
// assertEquals("before1 before2 invocation after2 after1 ", m_logString);
85
// MethodInfo methodMetaData = null;
86
// try {
87
// methodMetaData = JavaMethodInfo.getMethodInfo(getClass().getMethodInfo(
88
// "removeAdviceTestMethod",
89
// new Class[] {}));
90
// } catch (NoSuchMethodException e) {
91
// e.printStackTrace(); //To change body of catch statement use File | Settings | File
92
// // Templates.
93
// }
94
// Pointcut methodPointcut = (Pointcut) SystemLoader.getCflowStack(this).getAspectManager("tests")
95
// .getPointcutManager(ASPECT_NAME).getPointcuts(
96
// new ExpressionContext(PointcutType.EXECUTION, methodMetaData, null)).get(0);
97
// List advices = methodPointcut.getAroundAdviceIndexTuples();
98
// NameIndexTuple adviceTuple = (NameIndexTuple) advices.remove(0);
99
// methodPointcut.setAroundAdviceIndexTuples(advices);
100
// m_logString = "";
101
// removeAdviceTestMethod();
102
// assertEquals("before2 invocation after2 ", m_logString);
103
//
104
// // restore it for other tests
105
// advices.add(0, adviceTuple);
106
// methodPointcut.setAroundAdviceIndexTuples(advices);
107
// }
108
//
109
// public void testCreateAspectAtRuntime() {
110
// try {
111
// // check that we have a pointcut at the createAspectTestMethod method
112
// m_logString = "";
113
// createAspectTestMethod();
114
// assertEquals("before2 invocation after2 ", m_logString);
115
//
116
// // create a new advice
117
// SystemLoader.getCflowStack(this).getAspectManager("tests").createAspect(
118
// NEW_ASPECT_NAME,
119
// NEW_ASPECT_NAME,
120
// DeploymentModel.PER_INSTANCE,
121
// null);
122
//
123
// // test the some stuff for the aspect
124
// assertNotNull(SystemLoader.getCflowStack(this).getAspectManager("tests")
125
// .getPointcutManager(NEW_ASPECT_NAME));
126
// assertEquals(DeploymentModel.PER_INSTANCE, SystemLoader.getCflowStack(this)
127
// .getAspectManager("tests").getPointcutManager(NEW_ASPECT_NAME)
128
// .getDeploymentModel());
129
// assertEquals(NEW_ASPECT_NAME, SystemLoader.getCflowStack(this).getAspectManager("tests")
130
// .getPointcutManager(NEW_ASPECT_NAME).getName());
131
// MethodInfo methodMetaData = null;
132
// try {
133
// methodMetaData = JavaMethodInfo.getMethodInfo(getClass().getMethodInfo(
134
// "createAspectTestMethod",
135
// new Class[] {}));
136
// } catch (NoSuchMethodException e) {
137
// e.printStackTrace(); //To change body of catch statement use File | Settings | File
138
// // Templates.
139
// }
140
//
141
// // get an existing pointcut
142
// Pointcut methodPointcut = (Pointcut) SystemLoader.getCflowStack(this).getAspectManager(
143
// "tests").getPointcutManager(ASPECT_NAME).getPointcuts(
144
// new ExpressionContext(PointcutType.EXECUTION, methodMetaData, null)).get(0);
145
//
146
// // add the new advice to the pointcut
147
// methodPointcut.addAroundAdvice("test.aspects.DynamicallyCreatedAspect.advice1");
148
//
149
// // check that it is executed
150
// m_logString = "";
151
// createAspectTestMethod();
152
// assertEquals("before2 beforeNew invocation afterNew after2 ", m_logString);
153
//
154
// //remove it for other tests
155
// methodPointcut.removeAroundAdvice("test.aspects.DynamicallyCreatedAspect.advice1");
156
// } catch (Exception e) {
157
// e.printStackTrace();
158
// fail(e.getMessage());
159
// }
160
// }
161

162     public static void main(String JavaDoc[] args) {
163         junit.textui.TestRunner.run(suite());
164     }
165
166     public static junit.framework.Test suite() {
167         return new junit.framework.TestSuite(DynamicDeploymentTest.class);
168     }
169
170     public void log(final String JavaDoc wasHere) {
171         m_logString += wasHere;
172     }
173
174     public void reorderAdvicesTestMethod() {
175         log("invocation ");
176     }
177
178     public void removeAdviceTestMethod() {
179         log("invocation ");
180     }
181
182     public void addAdviceTestMethod() {
183         log("invocation ");
184     }
185
186     public void createAspectTestMethod() {
187         log("invocation ");
188     }
189 }
Popular Tags