/* * JBoss, the OpenSource J2EE webOS * * Distributable under LGPL license. * See terms of license at gnu.org. */ import org.jboss.aop.joinpoint.Invocation; import org.jboss.aop.joinpoint.MethodInvocation; import org.jboss.aop.joinpoint.ConstructorInvocation; import org.jboss.aop.joinpoint.FieldInvocation; import org.jboss.aop.joinpoint.FieldReadInvocation; import org.jboss.aop.joinpoint.FieldWriteInvocation; import org.jboss.aop.advice.Interceptor; import org.jboss.aop.advice.Scope; import org.jboss.aop.Bind; import org.jboss.aop.Aspect; import org.jboss.aop.PointcutDef; import org.jboss.aop.pointcut.Pointcut; /** * * @author Kabir Khan * @version $Revision: 1.1 $ */ @Aspect (scope=Scope.PER_VM) public class MyAspect { @PointcutDef("execution(POJO->new(..))") public static Pointcut pojoConstructors; @PointcutDef("get(* POJO->*)") public static Pointcut pojoFieldReads; @PointcutDef("set(* POJO->*)") public static Pointcut pojoFieldWrites; @PointcutDef("execution(* POJO->*(..))") public static Pointcut pojoMethods; @PointcutDef("MyAspect.pojoFieldReads OR MyAspect.pojoFieldWrites") public static Pointcut pojoFields; @Bind(pointcut = "MyAspect.pojoFields OR MyAspect.pojoMethods OR MyAspect.pojoConstructors") public Object anotherPOJOAdvice(Invocation invocation) throws Throwable { try { if (invocation instanceof ConstructorInvocation) { System.out.println("<<< MyAspect.anotherPOJOAdvice - calling constructor"); } else if (invocation instanceof MethodInvocation) { System.out.println("<<< MyAspect.anotherPOJOAdvice - calling method"); } else if (invocation instanceof FieldReadInvocation) { System.out.println("<<< MyAspect.anotherPOJOAdvice - reading field"); } else if (invocation instanceof FieldWriteInvocation) { System.out.println("<<< MyAspect.anotherPOJOAdvice - writing field"); } return invocation.invokeNext(); } finally { System.out.println(">>> Leaving MyAspect.anotherPOJOAdvice"); } } }