[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] newbie question on within pointcut
|
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
<javadba@xxxxxxxxx>
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
<ramnivas@xxxxxxxxxxxxxxx>
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
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)
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@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users