123456789101112131415161718192021222324252627282930 |
-
- import org.aspectj.testing.Tester;
- import org.aspectj.testing.Tester;
-
- public class CflowAlone {
- public static void main(String[] args){
- new testclass1();
- Tester.check(0 < Filteraspect.i,
- "0 < Filteraspect.i: " + Filteraspect.i);
- }
- }
- class testclass1 {}
- class testclass2 {}
- aspect Filteraspect {
- static int i;
- // all these variants fail
- //pointcut goCut(): cflow(this(testclass2));
- //pointcut goCut(): cflow(target(testclass2));
- //pointcut goCut(): cflow(args(testclass2));
- //pointcut goCut(): cflow(!within(FilterAspect));
- //pointcut goCut(): cflow(within(FilterAspect));
- //pointcut goCut(): cflow(within(testclass1));
- pointcut goCut(): !within(Filteraspect) && cflow(within(testclass1))
- && !preinitialization(new(..)) && !initialization(new(..));
- // works ok
- //pointcut goCut(): within(Filteraspect);
- Object around(): goCut() { i++; return proceed(); }
- // no bug when using before or after
- //after(): goCut() { int i = 1; System.getProperties().put("foo", "bar");}
- }
|