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.afterxxx;
9   
10  import org.codehaus.aspectwerkz.joinpoint.StaticJoinPoint;
11  import org.codehaus.aspectwerkz.definition.Pointcut;
12  
13  /***
14   * @author <a href="mailto:jboner@codehaus.org">Jonas BonŽr </a>
15   */
16  public class Aspect {
17  
18      /***
19       * @Expression execution(* test.afterxxx.Test.all(..))
20       */
21      Pointcut all;
22  
23      /***
24       * @Expression execution(* test.afterxxx.Test.aroundFinally(..))
25       */
26      Pointcut aroundFinally;
27  
28      /***
29       * @Expression execution(* test.afterxxx.Test.aroundReturning(..))
30       */
31      Pointcut aroundReturning;
32  
33      /***
34       * @Expression execution(* test.afterxxx.Test.aroundFinallyReturning(..))
35       */
36      Pointcut aroundFinallyReturning;
37  
38      /***
39       * @Expression execution(* test.afterxxx.Test.aroundFinallyReturningThrowing(..))
40       */
41      Pointcut aroundFinallyReturningThrowing;
42  
43      /***
44       * @Expression execution(* test.afterxxx.Test.aroundReturningThrowing(..))
45       */
46      Pointcut aroundReturningThrowing;
47  
48      /***
49       * @Expression execution(* test.afterxxx.Test._finally(..))
50       */
51      Pointcut _finally;
52  
53      /***
54       * @Expression execution(* test.afterxxx.Test.finallyReturning(..))
55       */
56      Pointcut finallyReturning;
57  
58      /***
59       * @Expression execution(* test.afterxxx.Test.finallyReturningThrowing(..))
60       */
61      Pointcut finallyReturningThrowing;
62  
63      /***
64       * @Expression execution(* test.afterxxx.Test.returning(..))
65       */
66      Pointcut returning;
67  
68      /***
69       * @Expression execution(* test.afterxxx.Test.returningThrowing(..))
70       */
71      Pointcut returningThrowing;
72  
73      /***
74       * @Around all || aroundFinally || aroundFinallyReturning ||
75       * aroundFinallyReturningThrowing || aroundReturningThrowing || aroundReturning
76       */
77      public Object logAround(StaticJoinPoint joinPoint) throws Throwable {
78          Test.log("logAround ");
79          final Object result = joinPoint.proceed();
80          return result;
81      }
82  
83      /***
84       * @AfterReturning aroundFinallyReturning || aroundFinallyReturningThrowing ||
85       * aroundReturningThrowing || finallyReturning || finallyReturningThrowing ||
86       * returningThrowing || aroundReturning || returning
87       */
88      public void logAfterReturning(final StaticJoinPoint joinPoint) throws Throwable {
89          Test.log("logAfterReturning ");
90      }
91  
92      /***
93       * @AfterReturning(type="java.lang.String", pointcut="aroundFinallyReturning || aroundFinallyReturningThrowing ||
94       * aroundReturningThrowing || finallyReturning || finallyReturningThrowing ||
95       * returningThrowing || aroundReturning || returning")
96       */
97      public void logAfterReturningString(final StaticJoinPoint joinPoint) throws Throwable {
98          Test.log("logAfterReturningString ");
99      }
100 
101     /***
102      * @AfterThrowing(type="java.lang.RuntimeException", pointcut="aroundFinallyReturningThrowing ||
103      * aroundReturningThrowing ||
104      * finallyReturningThrowing || returningThrowing")
105      */
106     public void logAfterThrowingRTE(final StaticJoinPoint joinPoint) throws Throwable {
107         Test.log("logAfterThrowingRTE ");
108     }
109 
110     /***
111      * @AfterThrowing(type="java.lang.IllegalArgumentException", pointcut="
112      * aroundFinallyReturningThrowing || aroundReturningThrowing ||
113      * finallyReturningThrowing || returningThrowing")
114      */
115     public void logAfterThrowing(final StaticJoinPoint joinPoint) throws Throwable {
116         Test.log("logAfterThrowing ");
117     }
118 
119     /***
120      * @AfterFinally aroundFinally || aroundFinallyReturning || aroundFinallyReturningThrowing ||
121      * _finally || finallyReturning || finallyReturningThrowing
122      */
123     public void logAfterFinally(final StaticJoinPoint joinPoint) throws Throwable {
124         Test.log("logAfterFinally ");
125     }
126 
127     /***
128      * @After finallyReturning
129      */
130     public void logAfter(final StaticJoinPoint joinPoint) throws Throwable {
131         Test.log("logAfter ");
132     }
133 
134     /***
135      * @AfterReturning(type="i", pointcut="execution(* test.afterxxx.TestBinding.returnInt(..))")
136      */
137     public void logAfterBinding(int i) {
138         TestBinding.log("afterReturningInt " + i);
139     }
140 
141     /***
142      * @AfterReturning(type="s", pointcut="execution(* test.afterxxx.TestBinding.returnString(..))")
143      */
144     public void logAfterBinding(String s) {
145         TestBinding.log("afterReturningString " + s);
146     }
147 
148     /***
149      * @AfterThrowing(type="e", pointcut="execution(* test.afterxxx.TestBinding.throwChecked(..))")
150      */
151     public void logAfterBindingExact(ClassNotFoundException e) {
152         TestBinding.log("afterThrowingExact " + e.getClass().getName());
153     }
154 
155     /***
156      * @AfterThrowing(type="e", pointcut="execution(* test.afterxxx.TestBinding.throwChecked(..))")
157      */
158     public void logAfterBindingParentClass(Exception e) {
159         TestBinding.log(" afterThrowingParentClass " + e.getClass().getName());
160     }
161 }