/************************************************************************************** * 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.withincode; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import org.codehaus.aspectwerkz.definition.Pointcut; import org.codehaus.aspectwerkz.joinpoint.EnclosingStaticJoinPoint; import org.codehaus.aspectwerkz.joinpoint.FieldRtti; import org.codehaus.aspectwerkz.joinpoint.JoinPoint; import org.codehaus.aspectwerkz.joinpoint.Rtti; import org.codehaus.aspectwerkz.joinpoint.StaticJoinPoint; import test.handler.HandlerTestBeforeException; /** * Withincode(clinit) aspect. * * @author <a href="mailto:the_mindstorm@evolva.ro">Alex Popescu</a> * * @Aspect("perClass") */ public class WithincodeStaticinitializationAspect { /** * @Expression withincode(staticinitialization(test.withincode.Target)) */ Pointcut withincodeTarget; /** * @Expression withincode(staticinitialization(@test.withincode.WithincodeClinit)) */ Pointcut withincodeClinit; /** * @Expression withincode(staticinitialization(@test.withincode.WithincodeClinit test.withincode.*)) */ Pointcut withincodeClinitPattern; /** * @Expression set(test.withincode.Target$CtorCallTarget test.withincode.Target.s_field) */ Pointcut set; /** * @Expression get(test.withincode.Target$CtorCallTarget test.withincode.Target.s_field) */ Pointcut get; /** * @Expression set || get */ Pointcut getset; /** * @Expression call(test.withincode.Target$CtorCallTarget.new()) */ Pointcut ctorCall; /** * @Expression call(void test.withincode.Target.staticMethod()) */ Pointcut methodCall; /** * @Before ctorCall && withincode(staticinitialization(test.withincode.Target)) */ public void beforeCtorCall() { WithincodeClinitTest.addMessage("beforeCtorCall"); } /** * @Before ctorCall && withincodeClinit */ public void beforeWithincodeClinitCtorCall() { WithincodeClinitTest.addMessage("beforeWithincodeClinitCtorCall"); } /** * @Before ctorCall && withincodeClinitPattern */ public void beforeWithincodeClinitPatternCtorCall() { WithincodeClinitTest.addMessage("beforeWithincodeClinitPatternCtorCall"); } /** * @After ctorCall && withincodeClinitPattern */ public void afterWithincodeClinitPatternCtorCall() { WithincodeClinitTest.addMessage("afterWithincodeClinitPatternCtorCall"); } /** * @After ctorCall && withincodeClinit */ public void afterWithincodeClinitCtorCall() { WithincodeClinitTest.addMessage("afterWithincodeClinitCtorCall"); } /** * @After ctorCall && withincode(staticinitialization(test.withincode.Target)) */ public void afterCtorCall() { WithincodeClinitTest.addMessage("afterCtorCall"); } /** * @AfterReturning ctorCall && withincode(staticinitialization(test.withincode.Target)) */ public void afterReturningCtorCall() { WithincodeClinitTest.addMessage("afterReturningCtorCall"); } /** * @Before getset && withincode(staticinitialization(test.withincode.Target)) */ public void beforeGetSet() { WithincodeClinitTest.addMessage("beforeGetSet"); } /** * @After getset && withincode(staticinitialization(test.withincode.Target)) */ public void afterGetSet() { WithincodeClinitTest.addMessage("afterGetSet"); } /** * @AfterReturning getset && withincode(staticinitialization(test.withincode.Target)) */ public void afterReturningGetSet() { WithincodeClinitTest.addMessage("afterReturningGetSet"); } /** * @Before methodCall && withincode(staticinitialization(test.withincode.Target)) */ public void beforeMethodCall() { WithincodeClinitTest.addMessage("beforeMethodCall"); } /** * @AfterFinally methodCall && withincode(staticinitialization(test.withincode.Target)) */ public void afterFinallyMethodCall() { WithincodeClinitTest.addMessage("afterFinallyMethodCall"); } /** * @AfterReturning methodCall && withincode(staticinitialization(test.withincode.Target)) */ public void afterReturningMethodCall() { // should neven occur WithincodeClinitTest.addMessage("afterReturningMethodCall"); } /** * @AfterThrowing methodCall && withincode(staticinitialization(test.withincode.Target)) */ public void afterThrowingMethodCall() { WithincodeClinitTest.addMessage("afterThrowingMethodCall"); } /** * @AfterThrowing(type="test.handler.HandlerTestBeforeException", pointcut="methodCall && withincode(staticinitialization(test.withincode.Target))") */ public void afterThrowingTypeMethodCall() { WithincodeClinitTest.addMessage("afterThrowingTypeMethodCall"); } /** * @Before handler(test.handler.HandlerTestBeforeException) && withincode(staticinitialization(test.withincode.Target)) */ public void beforeHandler() { WithincodeClinitTest.addMessage("beforeHandler"); } // SJP /** * @Before ctorCall && withincodeTarget */ public void beforeCtorCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Around ctorCall && withincodeTarget */ public Object aroundCtorCall(StaticJoinPoint sjp) throws Throwable { WithincodeClinitTest.addSJP(sjp); return sjp.proceed(); } /** * @After ctorCall && withincodeTarget */ public void afterCtorCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @AfterReturning ctorCall && withincodeTarget */ public void afterReturningCtorCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Before getset && withincodeTarget */ public void beforeGetSet(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Around getset && withincodeTarget */ public Object aroundGetSet(StaticJoinPoint sjp) throws Throwable { WithincodeClinitTest.addSJP(sjp); return sjp.proceed(); } /** * @After getset && withincodeTarget */ public void afterGetSet(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @AfterReturning getset && withincodeTarget */ public void afterReturningGetSet(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Before methodCall && withincodeTarget */ public void beforeMethodCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Around methodCall && withincodeTarget */ public Object aroundMethodCall(StaticJoinPoint sjp) throws Throwable { WithincodeClinitTest.addSJP(sjp); return sjp.proceed(); } /** * @AfterThrowing(type="test.handler.HandlerTestBeforeException", pointcut="methodCall && withincodeTarget") */ public void afterThrowingTypeMethodCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @AfterThrowing methodCall && withincodeTarget */ public void afterThrowingMethodCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @AfterFinally methodCall && withincodeTarget */ public void afterFinallyMethodCall(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Before handler(test.handler.HandlerTestBeforeException) && withincodeTarget */ public void beforeHandler(StaticJoinPoint sjp) { WithincodeClinitTest.addSJP(sjp); } /** * @Before handler(test.handler.HandlerTestBeforeException) && withincodeTarget && args(htbe) */ public void beforeArgsHandler(StaticJoinPoint sjp, HandlerTestBeforeException htbe) { WithincodeClinitTest.addSJP(sjp); } // JoinPoints /** * @Before ctorCall && withincodeTarget */ public void beforeCtorCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Around ctorCall && withincodeTarget */ public Object aroundCtorCall(JoinPoint sjp) throws Throwable { WithincodeClinitTest.addJP(sjp); return sjp.proceed(); } /** * @After ctorCall && withincodeTarget */ public void afterCtorCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @AfterReturning ctorCall && withincodeTarget */ public void afterReturningCtorCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Before getset && withincodeTarget */ public void beforeGetSet(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Around getset && withincodeTarget */ public Object aroundGetSet(JoinPoint sjp) throws Throwable { WithincodeClinitTest.addJP(sjp); return sjp.proceed(); } /** * @After getset && withincodeTarget */ public void afterGetSet(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @AfterReturning getset && withincodeTarget */ public void afterReturningGetSet(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Before methodCall && withincodeTarget */ public void beforeMethodCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Around methodCall && withincodeTarget */ public Object aroundMethodCall(JoinPoint sjp) throws Throwable { WithincodeClinitTest.addJP(sjp); return sjp.proceed(); } /** * @AfterThrowing(type="test.handler.HandlerTestBeforeException", pointcut="methodCall && withincodeTarget") */ public void afterThrowingTypeMethodCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @AfterThrowing methodCall && withincodeTarget */ public void afterThrowingMethodCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @AfterFinally methodCall && withincodeTarget */ public void afterFinallyMethodCall(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Before handler(test.handler.HandlerTestBeforeException) && withincodeTarget */ public void beforeHandler(JoinPoint sjp) { WithincodeClinitTest.addJP(sjp); } /** * @Before handler(test.handler.HandlerTestBeforeException) && withincodeTarget && args(htbe) */ public void beforeArgsHandler(JoinPoint sjp, HandlerTestBeforeException htbe) { WithincodeClinitTest.addJP(sjp); } }