I must be misunderstanding what how to use this operator.
I have the following test code…
pointcut wibble() : execution (public void Session.set*(String));
pointcut subTest(OpsBaseAttribute attr) : execution(public void setValue(String))
&& this(attr)
&& cflow(execution (public void Session.set*(String)))
&& !within(aspects.DateSub);
void around (OpsBaseAttribute attr) : subTest(attr) {
System.out.println("supposedly calling set on an attribute in the Session
object for name ..." + attr.getName() +
"...");
if (attr.getName().equals("LastLogin") ||
attr.getName().equals("Created")
||
attr.getName().equals("LastModified")) {
System.out.println("resetting for " + attr.getName());
attr.setValue("2/02/2004 2:22:22 PM");
}
}
as you can see I’m
making a call in my around advice that will re-trigger the pointcut. Hence my stating “!within(DateSub)”, where DateSub is the name of the Aspect that all this code exists
within.
My question is simple:
Why do I get infinte recursion when ‘within’
should mask out calls to setValue() from within the pointcut…
Thanks for your help.
alan