What you show below is happening, but should have been avoided by the !within(*ApplyStatisticsDaoAllPublicMethodsAspect). *
**So my original (and present) question was not really answered. Here again is what I have, which mimics many examples out there. @Around (value="execution(public * *(..)) && * !within(ApplyStatisticsDaoAllPublicMethodsAspect)* && this(dao)", argNames="thisJoinPoint, dao") But it does have the recursion. 2010/7/13 Stephen Boesch <java...@gmail.com> > Funny I had seen examples using !within(<AspectClass>). So I coded > !within(ApplyStatisicsDaoAllPublicMethodsAspect). > > Is the !clowbelow(within<AspectClass>)) required then? I wonder why those > other examples worked in that case. > > 2010/7/13 Ramnivas Laddad <ramni...@aspectivity.com> > > 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 >> >> >
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users