Hello list members, I have two aspects each of which modify method arguments. When both aspects are applied to the same method, I would expect execution of the aspects to be chained and I would expect that the arguments modified in the first aspect to be available to the second aspect via joinPoint.getArgs(); However, it appears that each aspect gets only the original arguments; the second aspect never sees the modified values. I've contrived an example:
The test class: public class AspectTest extends TestCase { @Moo private void foo(String boo, String foo) { System.out.println(boo + foo); } public void testAspect() { foo("You should", " never see this"); } } The method foo() is advised by two aspects: @Aspect public class MooImpl { @Pointcut("execution(@Moo * *(..))") public void methodPointcut() {} @Around("methodPointcut()") public Object afterMethodInControllerClass(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("MooImpl is being called"); Object[] args = joinPoint.getArgs(); args[0] = "don't"; return joinPoint.proceed(args); } } and... @Aspect public class DoubleMooImpl { @Pointcut("execution(@Moo * *(..))") public void methodPointcut() {} @Around("methodPointcut()") public Object afterMethodInControllerClass(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("DoubleMooImpl is being called"); Object[] args = joinPoint.getArgs(); args[1] = " run and hide"; return joinPoint.proceed(args); } } I would expect the output to be: MooImpl is being called DoubleMooImpl is being called don't run and hide ...but is: MooImpl is being called DoubleMooImpl is being called You should run and hide Am I using the correct approach to modify arguments via around advice? Note I have asked this question on Stack Overflow. Interested peeps can find it here: http://stackoverflow.com/questions/12843998/modifying-parameters-in-more-than-one-aspect-providing-around-advice Thanks for taking the time to read this! _______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users