1 22 package org.jboss.test.aop.jdk15.annotated; 23 24 import org.jboss.aop.*; 25 import org.jboss.aop.Prepare; 26 import org.jboss.aop.pointcut.Pointcut; 27 import org.jboss.aop.pointcut.CFlowStack; 28 import org.jboss.aop.advice.Scope; 29 import org.jboss.aop.joinpoint.*; 30 31 35 @Aspect(scope = Scope.PER_VM) 36 public class AspectPerVM 37 { 38 public int constructorCalled; 39 public int methodCalled; 40 public int fieldRead; 41 public int fieldWrite; 42 public int anotherPOJOAccess; 43 44 @PointcutDef("execution(org.jboss.test.aop.jdk15.annotated.AnotherPOJO->new(..))") 45 public static Pointcut anotherPOJOConstructors; 46 47 @PointcutDef("get(* org.jboss.test.aop.jdk15.annotated.AnotherPOJO->field)") 48 public static Pointcut anotherPOJOFieldReads; 49 50 @PointcutDef("set(* org.jboss.test.aop.jdk15.annotated.AnotherPOJO->field)") 51 public static Pointcut anotherPOJOFieldWrites; 52 53 @PointcutDef("execution(* org.jboss.test.aop.jdk15.annotated.AnotherPOJO->*(..))") 54 public static Pointcut anotherPOJOPublicMethods; 55 56 @PointcutDef("org.jboss.test.aop.jdk15.annotated.AspectPerVM.anotherPOJOFieldWrites OR org.jboss.test.aop.jdk15.annotated.AspectPerVM.anotherPOJOFieldReads") 57 public static Pointcut anotherPOJOFields; 58 59 @Prepare ("all(org.jboss.test.aop.jdk15.annotated.PreparePOJO)") 60 public static Pointcut preparePOJO; 61 62 63 @Bind(pointcut = "execution(org.jboss.test.aop.jdk15.annotated.POJO*->new())") 64 public Object constructorAdvice(ConstructorInvocation invocation) throws Throwable 65 { 66 System.out.println("AspectPerVM.constructorAdvice accessing: " + invocation.getConstructor().toString()); 67 constructorCalled++; 68 return invocation.invokeNext(); 69 } 70 71 @Bind(pointcut = "execution(void org.jboss.test.aop.jdk15.annotated.POJO*->someMethod())") 72 public Object methodAdvice(MethodInvocation invocation) throws Throwable 73 { 74 System.out.println("AspectPerVM.methodAdvice accessing: " + invocation.getMethod().toString()); 75 methodCalled++; 76 return invocation.invokeNext(); 77 } 78 79 @Bind(pointcut = "set(* org.jboss.test.aop.jdk15.annotated.POJO*->field)") 80 public Object fieldAdvice(FieldWriteInvocation invocation) throws Throwable 81 { 82 System.out.println("AspectPerVM.fieldAdvice writing to field: " + invocation.getField().getName()); 83 fieldWrite++; 84 return invocation.invokeNext(); 85 } 86 87 @Bind(pointcut = "get(* org.jboss.test.aop.jdk15.annotated.POJO*->field)") 88 public Object fieldAdvice(FieldReadInvocation invocation) throws Throwable 89 { 90 System.out.println("AspectPerVM.fieldAdvice reading field: " + invocation.getField().getName()); 91 fieldRead++; 92 return invocation.invokeNext(); 93 } 94 95 @Bind(pointcut = "org.jboss.test.aop.jdk15.annotated.AspectPerVM.anotherPOJOFields OR org.jboss.test.aop.jdk15.annotated.AspectPerVM.anotherPOJOConstructors OR org.jboss.test.aop.jdk15.annotated.AspectPerVM.anotherPOJOPublicMethods") 96 public Object anotherPOJOAdvice(Invocation invocation) throws Throwable 97 { 98 System.out.println("AspectPerVM.anotherPOJOAdvice"); 99 anotherPOJOAccess++; 100 return invocation.invokeNext(); 101 } 102 103 public void reset() 104 { 105 constructorCalled = 0; 106 methodCalled = 0; 107 fieldRead = 0; 108 fieldWrite = 0; 109 anotherPOJOAccess = 0; 110 } 111 112 } 113 | Popular Tags |