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.optimizations;
9
10 import org.codehaus.aspectwerkz.joinpoint.StaticJoinPoint;
11 import org.codehaus.aspectwerkz.joinpoint.JoinPoint;
12 import org.codehaus.aspectwerkz.joinpoint.Rtti;
13 import org.codehaus.aspectwerkz.joinpoint.MethodRtti;
14 import org.codehaus.aspectwerkz.definition.Pointcut;
15
16 /***
17 * @author <a href="mailto:alex@gnilux.com">Alexandre Vasseur</a>
18 */
19 public class OptimizeAspect {
20
21
22
23 /*** @Before execution(* test.optimizations.OptimizeTest$OptimizeNothing.before())
24 * || execution(* test.optimizations.OptimizeTest$OptimizeNothing.beforeAround())*/
25 public void beforeNothing() {
26 OptimizeTest.log("before");
27 }
28 /*** @Around execution(* test.optimizations.OptimizeTest$OptimizeNothing.around())
29 * || execution(* test.optimizations.OptimizeTest$OptimizeNothing.beforeAround()) */
30 public Object aroundNothing() {
31 OptimizeTest.log("around");
32 return null;
33 }
34 /*** @Before execution(* test.optimizations.OptimizeTest$OptimizeNothing.before(int)) && args(i) */
35 public void beforeNothing(int i) {
36 OptimizeTest.log("before"+i);
37 }
38 /*** @Around execution(* test.optimizations.OptimizeTest$OptimizeNothing.around(int)) && args(i) */
39 public Object aroundNothing(int i) {
40 OptimizeTest.log("around"+i);
41 return null;
42 }
43
44
45
46
47 /*** @Before execution(* test.optimizations.OptimizeTest$OptimizeStaticJoinPoint.before())
48 * || execution(* test.optimizations.OptimizeTest$OptimizeStaticJoinPoint.beforeAround())*/
49 public void beforeStaticJoinPoint(StaticJoinPoint sjp) {
50 OptimizeTest.log("beforeSJP-" + sjp.getSignature().getName());
51 }
52 /*** @Around execution(* test.optimizations.OptimizeTest$OptimizeStaticJoinPoint.around())
53 * || execution(* test.optimizations.OptimizeTest$OptimizeStaticJoinPoint.beforeAround()) */
54 public Object aroundStaticJoinPoint(StaticJoinPoint sjp) throws Throwable {
55 OptimizeTest.log("aroundSJP-" + sjp.getSignature().getName());
56 return sjp.proceed();
57 }
58 /*** @Before execution(* test.optimizations.OptimizeTest$OptimizeStaticJoinPoint.before(int)) && args(i) */
59 public void beforeStaticJoinPoint(StaticJoinPoint sjp, int i) {
60 OptimizeTest.log("beforeSJP"+i);
61 }
62 /*** @Around execution(* test.optimizations.OptimizeTest$OptimizeStaticJoinPoint.around(int)) && args(i) */
63 public Object aroundStaticJoinPoint(int i, StaticJoinPoint sjp) throws Throwable {
64 OptimizeTest.log("aroundSJP"+i);
65 return sjp.proceed();
66 }
67
68
69
70 /*** @Expression withincode(* test.optimizations.OptimizeTest.testJoinPoint(..)) && target(test.optimizations.OptimizeTest$OptimizeJoinPoint) */
71 Pointcut pc_in;
72
73 /*** @Before (call(* test.optimizations.OptimizeTest$IOptimize.before())
74 * || call(* test.optimizations.OptimizeTest$IOptimize.beforeAround())
75 * ) && pc_in
76 */
77 public void beforeJoinPoint(JoinPoint jp) {
78 OptimizeTest.log("beforeJP-" + jp.getSignature().getName() + "-" + jp.getCallee().toString() + "-" + jp.getCaller().toString());
79 }
80 /*** @Around (call(* test.optimizations.OptimizeTest$IOptimize.around())
81 * || call(* test.optimizations.OptimizeTest$IOptimize.beforeAround())
82 * ) && pc_in
83 */
84 public Object aroundJoinPoint(JoinPoint jp) throws Throwable {
85 OptimizeTest.log("aroundJP-" + jp.getSignature().getName() + "-" + jp.getCallee().toString() + "-" + jp.getCaller().toString());
86 return jp.proceed();
87 }
88 /*** @Before call(* test.optimizations.OptimizeTest$IOptimize.before(int)) && args(i) && pc_in */
89 public void beforeJoinPoint(JoinPoint jp, int i) {
90 OptimizeTest.log("beforeJP"+i);
91 }
92 /*** @Around call(* test.optimizations.OptimizeTest$IOptimize.around(int)) && args(i) && pc_in */
93 public Object aroundJoinPoint(int i, JoinPoint jp) throws Throwable {
94 OptimizeTest.log("aroundJP"+i);
95 return jp.proceed();
96 }
97
98
99
100 /***
101 * @Before execution(* test.optimizations.OptimizeTest$OptimizeRtti.before())
102 * || execution(* test.optimizations.OptimizeTest$OptimizeRtti.beforeAround())
103 */
104 public void beforeRtti(JoinPoint jp) {
105 OptimizeTest.log("beforeRTTI-" + jp.getRtti().getName() + jp.getRtti().getThis() + jp.getRtti().getTarget());
106 }
107
108 /***
109 * @Around execution(* test.optimizations.OptimizeTest$OptimizeRtti.around())
110 * || execution(* test.optimizations.OptimizeTest$OptimizeRtti.beforeAround())
111 */
112 public Object aroundRtti(JoinPoint jp) throws Throwable {
113 OptimizeTest.log("aroundRTTI-" + jp.getRtti().getName() + jp.getRtti().getThis() + jp.getRtti().getTarget());
114 return jp.proceed();
115 }
116
117 /***
118 * @Before execution(* test.optimizations.OptimizeTest$OptimizeRtti.before(int))
119 */
120 public void beforeRttiInt(JoinPoint jp) {
121 OptimizeTest.log("beforeRTTI-" + jp.getRtti().getName() + jp.getRtti().getThis() + jp.getRtti().getTarget());
122 Integer param = (Integer) ((MethodRtti) jp.getRtti()).getParameterValues()[0];
123
124 }
125
126 /***
127 * @Around execution(* test.optimizations.OptimizeTest$OptimizeRtti.around(int))
128 */
129 public Object aroundRtti(StaticJoinPoint sjp, JoinPoint jp
130 OptimizeTest.log("aroundRTTI-"
131 return sjp.proceed();
132 }
133 }