org.aspectj/tests/new/AfterReturningConstructor.java
jhugunin 6cceb1b9c3 fix for Bugzilla Bug 49295
duplicate warning or second join point for constructor-execution
2004-01-28 00:36:05 +00:00

61 lines
1.5 KiB
Java

import org.aspectj.testing.Tester;
/** @testcase PR#827 after returning advice on interface and implementation constructor */
public class AfterReturningConstructor {
public static void main(String[] args) {
U.ee(U.before + U.ijp);
U.ee(U.afterReturning + U.ijp);
U.ee(U.before + U.cjp);
U.ee(U.c);
U.ee(U.afterReturning + U.cjp);
U.ee("done");
new C();
U.e("done");
Tester.checkAllEvents();
}
}
class C implements I {
C() { U.e("C()"); }
public void run() { }
}
interface I {
void run();
}
class U {
static final String before = "before(): ";
static final String after = "after(): ";
static final String afterReturning = "after() returning(): ";
static final String afterThrowing = "after() throwing(): ";
static final String c = "C()";
static final String i = "I()";
static final String cjp = "initialization(" + c + ")";
static final String ijp = "initialization(" + i + ")";
static void e(String event) {
//System.err.println("act event: " + event); // XXX
Tester.event(event);
}
static void ee(String event) {
//System.err.println("exp event: " + event); // XXX
Tester.expectEvent(event);
}
}
aspect A {
/** must pick out both interface and implementor initializers */
pointcut pc(): initialization(new(..)) && !within(A);
before(): pc() {
U.e(U.before + thisJoinPoint);
}
after() returning(): pc() {
U.e(U.afterReturning + thisJoinPoint);
}
}