1 8 package test.aspect; 9 10 import test.Loggable; 11 import org.codehaus.aspectwerkz.definition.Pointcut; 12 import org.codehaus.aspectwerkz.definition.Pointcut; 13 import org.codehaus.aspectwerkz.joinpoint.JoinPoint; 14 import org.codehaus.aspectwerkz.joinpoint.MethodRtti; 15 import org.codehaus.aspectwerkz.joinpoint.Rtti; 16 17 import java.io.File ; 18 import java.io.FileInputStream ; 19 import java.io.FileOutputStream ; 20 import java.io.ObjectInputStream ; 21 import java.io.ObjectOutput ; 22 import java.io.ObjectOutputStream ; 23 24 29 public class MemberMethodTestAspect { 30 32 35 Pointcut member_pc1; 36 37 40 Pointcut member_pc2; 41 42 45 Pointcut member_pc3; 46 47 50 Pointcut member_pc4; 51 52 55 Pointcut member_pc5; 56 57 60 Pointcut member_pc6; 61 62 65 Pointcut member_pc7; 66 67 70 Pointcut member_pc8; 71 72 75 Pointcut member_pc9; 76 77 80 Pointcut member_pc10; 81 82 85 Pointcut member_pc11; 86 87 90 Pointcut member_pc12; 91 92 95 Pointcut member_pc13; 96 97 100 Pointcut member_pc14; 101 102 105 Pointcut member_pc15; 106 107 110 Pointcut member_pc16; 111 112 115 Pointcut member_pc17; 116 117 120 Pointcut member_pc18; 121 122 125 Pointcut member_pc19; 126 127 130 Pointcut noAroundAdvice; 131 132 134 137 public Object advice1(final JoinPoint joinPoint) throws Throwable { 138 return joinPoint.proceed(); 139 } 140 141 144 public Object advice2(final JoinPoint joinPoint) throws Throwable { 145 ((Loggable) joinPoint.getTarget()).log("before1 "); 146 final Object result = joinPoint.proceed(); 147 ((Loggable) joinPoint.getTarget()).log("after1 "); 148 return result; 149 } 150 151 154 public Object advice3(final JoinPoint joinPoint) throws Throwable { 155 ((Loggable) joinPoint.getTarget()).log("before2 "); 156 final Object result = joinPoint.proceed(); 157 ((Loggable) joinPoint.getTarget()).log("after2 "); 158 return result; 159 } 160 161 164 public Object advice4(JoinPoint joinPoint) throws Throwable { 165 final Object result = joinPoint.proceed(); 166 MethodRtti mrtti = (MethodRtti) joinPoint.getRtti(); 167 String metadata = joinPoint.getCalleeClass().getName() 168 + mrtti.getMethod().getName() 169 + joinPoint.getTarget().hashCode() 170 + mrtti.getParameterValues()[0] 171 + mrtti.getParameterTypes()[0].getName() 172 + mrtti.getReturnType().getName() 173 + mrtti.getReturnValue(); 174 return metadata; 175 } 176 177 180 public Object advice5(final JoinPoint joinPoint) throws Throwable { 181 ((Loggable) joinPoint.getTarget()).log("before "); 182 final Object result = joinPoint.proceed(); 183 ((Loggable) joinPoint.getTarget()).log("after "); 184 return result; 185 } 186 187 190 public Object advice6(JoinPoint joinPoint) throws Throwable { 191 try { 193 ObjectOutput out = new ObjectOutputStream (new FileOutputStream ("joinpoint.ser")); 194 out.writeObject(joinPoint); 195 out.close(); 196 File file = new File ("joinpoint.ser"); 197 ObjectInputStream in = new ObjectInputStream (new FileInputStream (file)); 198 joinPoint = (JoinPoint) in.readObject(); 199 in.close(); 200 } catch (Exception e) { 201 System.err.println("FIXME: serialization for JIT compiled join points"); 202 } 203 return null; 204 } 205 206 209 public void before(final JoinPoint joinPoint) throws Throwable { 210 ((Loggable) joinPoint.getTarget()).log("pre "); 211 } 212 213 216 public void after(final JoinPoint joinPoint) throws Throwable { 217 ((Loggable) joinPoint.getTarget()).log("post "); 218 } 219 220 224 public void afterWithinCtor(final JoinPoint joinPoint) { 225 ((Loggable) joinPoint.getTarget()).log("post "); 226 } 227 228 } | Popular Tags |