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.staticinitialization;
9   
10  import org.codehaus.aspectwerkz.definition.Pointcut;
11  import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
12  import org.codehaus.aspectwerkz.joinpoint.StaticJoinPoint;
13  
14  
15  /***
16   * Aspect on staticinitialization pointcut.
17   * 
18   * @author <a href="mailto:the_mindstorm@evolva.ro">Alex Popescu</a>
19   * 
20   * @Aspect("perClass")
21   */
22  public class StaticInitializationAspect {
23  	/***
24  	 * @Expression staticinitialization(test.staticinitialization.ClinitTarget) 
25  	 */
26  	Pointcut staticInitialization;
27  	
28  	/***
29  	 * @Expression staticinitialization(@StaticInitializationService)
30  	 */
31  	Pointcut staticServiceInitialization;
32  	
33  	/***
34  	 * @Expression staticinitialization(@StaticInitializationService test.staticinitialization.*)
35  	 */
36  	Pointcut staticPatternInitialization;
37  	
38  	/***
39  	 * @Before staticInitialization
40  	 */
41  	public void beforeStaticInitializer() {
42  		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[0]);	                                                                                   
43  	}
44  	
45  	/***
46  	 * @Before staticServiceInitialization
47  	 */
48  	public void beforeStaticServiceInitialization() {
49  		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[0]);	                                                                                   
50  	}
51  	
52  	/***
53  	 * @Before staticPatternInitialization
54  	 */
55  	public void beforeStaticPatternInitialization() {
56  		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[0]);	                                                                                   
57  	}
58  	
59  	/***
60  	 * @Before staticInitialization
61  	 */
62  	public void beforeStaticInitialization(StaticJoinPoint sjp) {
63  		StaticInitializationTest.s_staticJoinPoints.add(sjp);
64  	}
65  	
66  	/***
67  	 * @Before staticServiceInitialization
68  	 */
69  	public void beforeStaticServiceInitialization(StaticJoinPoint sjp) {
70  		StaticInitializationTest.s_staticJoinPoints.add(sjp);
71  	}
72  	
73  	/***
74  	 * @Before staticPatternInitialization
75  	 */
76  	public void beforeStaticPatternInitialization(StaticJoinPoint sjp) {
77  		StaticInitializationTest.s_staticJoinPoints.add(sjp);
78  	}
79  	
80  	/***
81  	 * @Before staticInitialization
82  	 */
83  	public void beforeStaticInitialization(JoinPoint jp) {
84  		StaticInitializationTest.s_joinPoints.add(jp);
85  	}
86  	
87  	/***
88  	 * @Before staticServiceInitialization
89  	 */
90  	public void beforeStaticServiceInitialization(JoinPoint jp) {
91  		StaticInitializationTest.s_joinPoints.add(jp);
92  	}
93  	
94  	/***
95  	 * @Before staticPatternInitialization
96  	 */
97  	public void beforeStaticPatternInitialization(JoinPoint jp) {
98  		StaticInitializationTest.s_joinPoints.add(jp);
99  	}
100 	
101 	/***
102 	 * @Around staticInitialization
103 	 */
104 	public Object aroundStaticInitialization(StaticJoinPoint sjp) throws Throwable {
105 		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[1]);
106 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
107 		
108 		return sjp.proceed();
109 	}
110 	
111 	/***
112 	 * @Around staticServiceInitialization
113 	 */
114 	public Object aroundStaticServiceInitialization(StaticJoinPoint sjp) throws Throwable {
115 		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[1]);
116 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
117 		
118 		return sjp.proceed();
119 	}
120 	
121 	/***
122 	 * @Around staticPatternInitialization
123 	 */
124 	public Object aroundStaticPatternInitialization(StaticJoinPoint sjp) throws Throwable {
125 		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[1]);
126 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
127 		
128 		return sjp.proceed();
129 	}
130 	
131 	/***
132 	 * @Around staticInitialization
133 	 */
134 	public Object aroundStaticInitialization(JoinPoint jp) throws Throwable {
135 		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[2]);
136 		StaticInitializationTest.s_joinPoints.add(jp);
137 		
138 		return jp.proceed();
139 	}
140 	
141 	/***
142 	 * @Around staticServiceInitialization
143 	 */
144 	public Object aroundStaticServiceInitialization(JoinPoint jp) throws Throwable {
145 		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[2]);
146 		StaticInitializationTest.s_joinPoints.add(jp);
147 		
148 		return jp.proceed();
149 	}
150 	
151 	/***
152 	 * @Around staticPatternInitialization
153 	 */
154 	public Object aroundStaticPatternInitialization(JoinPoint jp) throws Throwable {
155 		StaticInitializationTest.s_messages.add(StaticInitializationTest.BEFORE_EXPECTED_MESSAGES[2]);
156 		StaticInitializationTest.s_joinPoints.add(jp);
157 		
158 		return jp.proceed();
159 	}
160 	
161 	/***
162 	 * @AfterReturning staticInitialization
163 	 */
164 	public void afterReturningStaticInitializer() {
165 		StaticInitializationTest.s_messages.add(StaticInitializationTest.AFTER_EXPECTED_MESSAGES[0]);
166 	}
167 
168 	/***
169 	 * @AfterReturning staticServiceInitialization
170 	 */
171 	public void afterReturningServiceInitializer() {
172 		StaticInitializationTest.s_messages.add(StaticInitializationTest.AFTER_EXPECTED_MESSAGES[0]);
173 	}
174 	
175 	/***
176 	 * @AfterReturning staticPatternInitialization
177 	 */
178 	public void afterReturningPatternInitializer() {
179 		StaticInitializationTest.s_messages.add(StaticInitializationTest.AFTER_EXPECTED_MESSAGES[0]);
180 	}
181 	
182 	/***
183 	 * @AfterReturning staticInitialization
184 	 */
185 	public void afterReturningStaticInitializer(StaticJoinPoint sjp) {
186 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
187 	}
188 	
189 	/***
190 	 * @AfterReturning staticServiceInitialization
191 	 */
192 	public void afterReturningServiceInitializer(StaticJoinPoint sjp) {
193 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
194 	}
195 	
196 	/***
197 	 * @AfterReturning staticPatternInitialization
198 	 */
199 	public void afterReturningPatternInitializer(StaticJoinPoint sjp) {
200 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
201 	}
202 	
203 	/***
204 	 * @AfterReturning staticInitialization
205 	 */
206 	public void afterReturningStaticInitializer(JoinPoint jp) {
207 		StaticInitializationTest.s_joinPoints.add(jp);
208 	}
209 	
210 	/***
211 	 * @AfterReturning staticServiceInitialization
212 	 */
213 	public void afterReturningServiceInitializer(JoinPoint jp) {
214 		StaticInitializationTest.s_joinPoints.add(jp);
215 	}
216 	
217 	/***
218 	 * @AfterReturning staticPatternInitialization
219 	 */
220 	public void afterReturningPatternInitializer(JoinPoint jp) {
221 		StaticInitializationTest.s_joinPoints.add(jp);
222 	}
223 	
224 	/***
225 	 * @After staticInitialization
226 	 */
227 	public void afterStaticInitializer() {
228 		StaticInitializationTest.s_messages.add(StaticInitializationTest.AFTER_EXPECTED_MESSAGES[1]);
229 	}
230 	
231 	/***
232 	 * @After staticServiceInitialization
233 	 */
234 	public void afterServiceInitializer() {
235 		StaticInitializationTest.s_messages.add(StaticInitializationTest.AFTER_EXPECTED_MESSAGES[1]);
236 	}
237 	
238 	/***
239 	 * @After staticPatternInitialization
240 	 */
241 	public void afterPatternInitializer() {
242 		StaticInitializationTest.s_messages.add(StaticInitializationTest.AFTER_EXPECTED_MESSAGES[1]);
243 	}
244 	
245 	/***
246 	 * @After staticInitialization
247 	 */
248 	public void afterStaticInitializer(StaticJoinPoint sjp) {
249 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
250 	}
251 	
252 	/***
253 	 * @After staticServiceInitialization
254 	 */
255 	public void afterServiceInitializer(StaticJoinPoint sjp) {
256 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
257 	}
258 	
259 	/***
260 	 * @After staticPatternInitialization
261 	 */
262 	public void afterPatternInitializer(StaticJoinPoint sjp) {
263 		StaticInitializationTest.s_staticJoinPoints.add(sjp);
264 	}
265 	
266 	/***
267 	 * @After staticInitialization
268 	 */
269 	public void afterStaticInitializer(JoinPoint jp) {
270 		StaticInitializationTest.s_joinPoints.add(jp);
271 	}
272 	
273 	/***
274 	 * @After staticServiceInitialization
275 	 */
276 	public void afterServiceInitializer(JoinPoint jp) {
277 		StaticInitializationTest.s_joinPoints.add(jp);
278 	}
279 	
280 	/***
281 	 * @After staticPatternInitialization
282 	 */
283 	public void afterPatternInitializer(JoinPoint jp) {
284 		StaticInitializationTest.s_joinPoints.add(jp);
285 	}
286 }