org.aspectj/tests/new/NonstaticInnerClassesInAspects.java

86 lines
3.1 KiB
Java
Raw Normal View History

2002-12-16 19:51:06 +01:00
import org.aspectj.testing.Tester;
public class NonstaticInnerClassesInAspects {
public static void main(String[] args) {
new NonstaticInnerClassesInAspects().realMain(args);
}
public void realMain(String[] args) {
new C().c();
Tester.checkAllEvents();
}
static {
Tester.expectEvent("A$Inner-before-c");
Tester.expectEvent("A$Inner$InnerInner-before-c");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-before-c");
Tester.expectEvent("A$Inner-after-c");
Tester.expectEvent("A$Inner$InnerInner-after-c");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-after-c");
Tester.expectEvent("A$Inner-around-c");
Tester.expectEvent("A$Inner$InnerInner-around-c");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-around-c");
Tester.expectEvent("A$Inner-before-d");
Tester.expectEvent("A$Inner$InnerInner-before-d");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-before-d");
Tester.expectEvent("A$Inner-after-d");
Tester.expectEvent("A$Inner$InnerInner-after-d");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-after-d");
Tester.expectEvent("A$Inner-around-d");
Tester.expectEvent("A$Inner$InnerInner-around-d");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-around-d");
Tester.expectEvent("A$Inner-before-x");
Tester.expectEvent("A$Inner$InnerInner-before-x");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-before-x");
Tester.expectEvent("A$Inner-after-x");
Tester.expectEvent("A$Inner$InnerInner-after-x");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-after-x");
Tester.expectEvent("A$Inner-around-x");
Tester.expectEvent("A$Inner$InnerInner-around-x");
Tester.expectEvent("A$Inner$InnerInner$InnerInnerInner-around-x");
}
}
class C {
public void c() { d(); }
public void d() { }
}
aspect A {
pointcut c(): target(C) && call(void c());
pointcut d(): call(void C.d());
pointcut x(): target(C) && execution(void c());
after() : c() { new Inner().i("after-c"); }
after() : d() { new Inner().i("after-d"); }
after() : x() { new Inner().i("after-x"); }
before() : c() { new Inner().i("before-c"); }
before() : d() { new Inner().i("before-d"); }
before() : x() { new Inner().i("before-x"); }
void around(): c() { new Inner().i("around-c"); proceed(); }
void around(): d() { new Inner().i("around-d"); proceed(); }
void around(): x() { new Inner().i("around-x"); proceed(); }
class Inner {
void i(String s) {
a(s,this);
new InnerInner().i(s);
}
class InnerInner {
void i(String s) {
a(s,this);
new InnerInnerInner().i(s);
}
class InnerInnerInner {
void i(String s) {
a(s,this);
}
}
}
}
public static void a(String s, Object o) {
Tester.event(o.getClass().getName() + "-" + s);
}
}