/************************************************************************************** * 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.aspect; import test.FieldAdviceTest; import org.codehaus.aspectwerkz.definition.Pointcut; import org.codehaus.aspectwerkz.definition.Pointcut; import org.codehaus.aspectwerkz.joinpoint.FieldRtti; import org.codehaus.aspectwerkz.joinpoint.JoinPoint; /** * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> * @Aspect perJVM */ public class FieldTestAspect { // ============ Pointcuts ============ /** * @Expression set(* test.FieldAdviceTest.m_setFieldPreAdvice*) */ Pointcut pc1; /** * @Expression set(int test.FieldAdviceTest.m_setFieldPreAdvi*) */ Pointcut pc2; /** * @Expression set(* test.FieldAdviceTest.m_setFie*dPostAdviced) */ Pointcut pc3; /** * @Expression set(* test.FieldAdviceTest.m_se*FieldPostAdviced) */ Pointcut pc4; /** * @Expression set(* test.FieldAdviceTest.m_setFieldPrePostAdviced) */ Pointcut pc5; /** * @Expression get(* test.FieldAdviceTest.m_getFieldPreAdvic*) */ Pointcut pc6; /** * @Expression get(* test.FieldAdviceTest.m_getFieldPreAdvice*) */ Pointcut pc7; /** * @Expression get(* test.FieldAdviceTest.m_getFieldPostAdviced) */ Pointcut pc8; /** * @Expression get(* test.FieldAdviceTest.m_getFieldPrePostAdviced) */ Pointcut pc9; /** * @Expression set(* test.FieldAdviceTest.s_setStaticFieldPreAdvic*) */ Pointcut pc10; /** * @Expression set(* test.FieldAdviceTest.s_setStaticFieldPreAdvice*) */ Pointcut pc11; /** * @Expression set(* test.FieldAdviceTest.s_setStaticFieldPostAdviced) */ Pointcut pc12; /** * @Expression set(* test.FieldAdviceTest.s_setStaticFieldPrePostAdviced) */ Pointcut pc13; /** * @Expression get(* test.FieldAdviceTest.s_getStaticFieldPreAdvice*) */ Pointcut pc14; /** * @Expression get(* test.FieldAdviceTest.s_getStaticFieldPreAdvic*) */ Pointcut pc15; /** * @Expression get(* test.FieldAdviceTest.s_getStaticFieldPostAdviced) */ Pointcut pc16; /** * @Expression get(* test.FieldAdviceTest.s_getStaticFieldPrePostAdviced) */ Pointcut pc17; /** * @Expression set(* test.FieldAdviceTest.m_setFieldAroundAdviced) */ Pointcut pc18; /** * @Expression set(* test.FieldAdviceTest.s_setStaticFieldAroundAdviced) */ Pointcut pc19; /** * @Expression get(* test.FieldAdviceTest.m_getFieldAroundAdviced) */ Pointcut pc20; /** * @Expression get(* test.FieldAdviceTest.s_getStaticFieldAroundAdviced) */ Pointcut pc21; /** * @Expression set(* test.FieldAdviceTest.m_setFieldAroundAdviced*WithNullAdvice) */ Pointcut pc22; /** * @Expression get(* test.FieldAdviceTest.m_getFieldAroundAdvicedWithNullAdvice) */ Pointcut pc23; /** * @Expression set(* test.FieldAdviceTest.m_setFieldAroundAdvicedObjectWithAPI) */ Pointcut pc24; /** * @Expression set(* test.FieldAdviceTest.m_setFieldAroundAdvicedWithAPI) */ Pointcut pc25; /** * @Expression within(test.FieldAdviceTest) */ Pointcut filter; // ============ Advices ============ /** * @Before filter && (pc2 || pc5 || pc10 || pc13 || pc6 || pc9 || pc14 || pc17) */ public void preAdvice1(final JoinPoint joinPoint) throws Throwable { FieldAdviceTest.log("pre1 "); } /** * @Before filter && (pc1 || pc5 || pc11 || pc13 || pc7 || pc9 || pc15 || pc17) */ public void preAdvice2(final JoinPoint joinPoint) throws Throwable { FieldAdviceTest.log("pre2 "); } /** * @After filter && (pc4 || pc5 || pc12 || pc13 || pc8 || pc9 || pc16 || pc17) */ public void postAdvice1(final JoinPoint joinPoint) throws Throwable { FieldAdviceTest.log("post1 "); } /** * @After filter && (pc3 || pc5 || pc12 || pc13 || pc8 || pc9 || pc16 || pc17) */ public void postAdvice2(final JoinPoint joinPoint) throws Throwable { FieldAdviceTest.log("post2 "); } /** * @Around filter && (pc18 || pc19 || pc20 || pc21) */ public Object around(final JoinPoint joinPoint) throws Throwable { FieldAdviceTest.log("before "); final Object result = joinPoint.proceed(); FieldAdviceTest.log("after "); return result; } /** * @Around filter && (pc22 || pc23) */ public Object aroundNullAdvice(final JoinPoint joinPoint) throws Throwable { FieldAdviceTest.log("before "); final Object result = joinPoint.proceed(); FieldAdviceTest.log("after "); return null; } /** * @Before get(java.io.PrintStream out) && withincode(* test.FieldAdviceTest.testPublicFieldOutOfWeaverScope()) */ public void beforePublicFieldOutOfWeaverScope() { FieldAdviceTest.log("adviceOnPublicField "); } //TODO - activate when proceed(args) will be supported // /** // * @Around pc24 // */ // public Object aroundAdviceAltering(final JoinPoint joinPoint) throws Throwable { // FieldAdviceTest.log("before "); // FieldRtti rtti = (FieldRtti) joinPoint.getRtti(); // rtti.setFieldValue(new String("byAdvice")); // joinPoint.proceed(); // FieldAdviceTest.log("after "); // return null; // } // // /** // * @Around pc25 // */ // public Object aroundAdviceAlteringPrimitive(final JoinPoint joinPoint) throws Throwable { // FieldAdviceTest.log("before "); // FieldRtti rtti = (FieldRtti) joinPoint.getRtti(); // rtti.setFieldValue(new Integer(3)); // joinPoint.proceed(); // FieldAdviceTest.log("after "); // return null; // } }