You will need to exclude *getStatisticsSource() *from being advised (or add !cflowbelow(within(ApplyStatisticsDaoAllPublicMethodsAspect))
The reason you get infinite recursion is the following call sequence: 1. A method executed on dao 2. Advice executes 3. Advice calls *getStatisticsSource* 4. Since that is a method on dao (and its execution is not within the aspect)... go to 1 -Ramnivas On Tue, Jul 13, 2010 at 1:40 PM, Stephen Boesch <java...@gmail.com> wrote: > In the following aspect, the bolded methods cause infinite recursion due to > re-invocation of the pointcut. I don't get it: the pointcut conditions > include > > > * !within(ApplyStatisticsDaoAllPublicMethodsAspect) * > > So why did that not avoid the recursion? > > > @Aspect > public class ApplyStatisticsDaoAllPublicMethodsAspect { > > @Aspect > public class ApplyStatisticsDaoAllPublicMethodsAspect { > > @Around(value = "execution(public * WaterfallOrmDao+.find* (..)) && > !within(ApplyStatisticsDaoAllPublicMethodsAspect) && this(dao)", argNames = > "thisJoinPoint, dao") > public Object aroundApplyStatisticsMethod (ProceedingJoinPoint > thisJoinPoint, WaterfallORMDao dao) > throws Throwable { > > .. > executedMethod = > ((MethodSignature)thisJoinPoint.getSignature()).getMethod(); > > STATISTICS_FACTORY.getStatistics().addStatLine(dao.getManagedClass(), > executedMethod, *dao.getStatisticsSource(),* stop - start); > LOG.warn(dao.getManagedClass()+" "+ executedMethod+" "+ * > dao.getStatisticsSource()*+" " + (stop - start)); > .. > > > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > >
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users