/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package test.enclosingsjp; import org.codehaus.aspectwerkz.definition.Pointcut; import org.codehaus.aspectwerkz.joinpoint.ConstructorSignature; import org.codehaus.aspectwerkz.joinpoint.EnclosingStaticJoinPoint; import org.codehaus.aspectwerkz.joinpoint.JoinPoint; import org.codehaus.aspectwerkz.joinpoint.Signature; import org.codehaus.aspectwerkz.joinpoint.StaticJoinPoint; /** * @Aspect("perClass") */ public class EnclosingStaticJoinPointAspect { /** * @Before call(test.enclosingsjp.PointcutTarget.new()) && within(test.enclosingsjp..*) */ public void ctorCtorCall(StaticJoinPoint sjp) { //System.out.println(".ctorCtorCall"); EnclosingStaticJoinPoint esjp = sjp.getEnclosingStaticJoinPoint(); EnclosingSJPTest.registerEnclosingSJP(esjp); } /** * @Before call(* test.enclosingsjp.PointcutTarget.method1()) && within(test.enclosingsjp..*) */ public void ctorMethodCall(StaticJoinPoint sjp) { //System.out.println(".ctorMethodCall"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before call(test.enclosingsjp.PointcutTarget.new()) && within(test.enclosingsjp.EnclosingTarget) * @param sjp */ public void ctorCtorWithinCall(StaticJoinPoint sjp) { //System.out.println(".ctorCtorWithinCall"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before call(test.enclosingsjp.PointcutTarget.new()) && withincode(test.enclosingsjp.EnclosingTarget.new()) * @param sjp */ public void ctorCtorWithincodeCall(StaticJoinPoint sjp) { //System.out.println(".ctorCtorWithincodeCall"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before call(test.enclosingsjp.PointcutTarget.new()) && within(test.enclosingsjp..*) && cflow(execution(test.enclosingsjp.EnclosingTarget.new())) * @param sjp */ public void ctorCtorCflow(StaticJoinPoint sjp) { //System.out.println(".ctorCtorCflow"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before call(test.enclosingsjp.PointcutTarget.new()) && within(test.enclosingsjp..*) && cflowbelow(execution(test.enclosingsjp.EnclosingTarget.new())) * @param sjp */ public void ctorCtorCflowbelowExecution(StaticJoinPoint sjp) { //System.out.println(".ctorCtorCflowbelowExecution"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before within(test.enclosingsjp..*) && call(test.enclosingsjp.PointcutTarget.new()) && cflowbelow(call(test.enclosingsjp.EnclosingTarget.new()) && within(test.enclosingsjp..*)) * @param sjp */ public void ctorCtorCflowbelowCall(StaticJoinPoint sjp) { //System.out.println(".ctorCtorCflowbelowCall"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before within(test.enclosingsjp..*) && call(test.enclosingsjp.PointcutTarget.new()) && cflowbelow(execution(* test.enclosingsjp.EnclosingSJPTest.testConstructorEnclosing())) * @param sjp */ public void testCtorCflowbelow(StaticJoinPoint sjp) { //System.out.println(".testCtorCflowbelow"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before handler(java.lang.IllegalAccessException) AND within(test.enclosingsjp.*) */ public void simpleHandler(StaticJoinPoint sjp) { //System.out.println(".simpleHandler"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before handler(java.lang.IllegalAccessException) AND within(test.enclosingsjp.*) AND args(iae) */ public void parameterHandler(StaticJoinPoint sjp, IllegalAccessException iae) { //System.out.println(".parameterHandler"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Expression set(java.lang.Object test.enclosingsjp.EnclosingTarget.m_field) && within(test.enclosingsjp..*) */ private Pointcut enclosingSet; /** * @Before enclosingSet */ public void enclosingConstructorSet(StaticJoinPoint sjp) { //System.out.println(".enclosingConstructorSet"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before enclosingSet && cflow(call(test.enclosingsjp.EnclosingTarget.new(java.lang.Object)) && within(test.enclosingsjp..*)) * @param sjp */ public void cflowCallSet(StaticJoinPoint sjp) { //System.out.println(".cflowCallSet"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before enclosingSet && cflow(execution(test.enclosingsjp.EnclosingTarget.new(java.lang.Object))) * @param sjp */ public void cflowExecuteSet(StaticJoinPoint sjp) { //System.out.println(".cflowExecuteSet"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Expression("(set(java.lang.Object test.enclosingsjp.PointcutTarget.m_field) || get(java.lang.Object test.enclosingsjp.PointcutTarget.m_field)) && within(test.enclosingsjp..*)") */ private Pointcut getset; /** * @Before getset */ public void methodGetSet(StaticJoinPoint sjp) { //System.out.println(".methodGetSet"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before getset && cflow(execution(test.enclosingsjp.EnclosingTarget.new(*))) */ public void methodCflowGetSet(StaticJoinPoint sjp) { //System.out.println(".methodCflowGetSet"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } /** * @Before getset && cflowbelow(call(test.enclosingsjp.EnclosingTarget.new(*)) && within(test.enclosingsjp..*)) */ public void methodCflowbelowGetSet(StaticJoinPoint sjp) { //System.out.println(".methodCflowbelowGetSet"); EnclosingSJPTest.registerEnclosingSJP(sjp.getEnclosingStaticJoinPoint()); } }