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 }