镜像自地址
https://github.com/eclipse-aspectj/aspectj.git
已同步 2024-09-03 17:56:34 +02:00
73 行
2.4 KiB
Java
73 行
2.4 KiB
Java
import org.aspectj.testing.Tester;
|
|
|
|
// this test verifies the matching behaivor for after returning with a typed parameter.
|
|
|
|
public class AfterReturningParamMatching {
|
|
public static void main(String[] args) {
|
|
goBoolean(false);
|
|
Tester.checkAndClearEvents(new String[] { "boolean", "Object" });
|
|
|
|
goByte(1);
|
|
Tester.checkAndClearEvents(new String[] { "byte", "int", "long", "Object"});
|
|
|
|
goInt(2);
|
|
Tester.checkAndClearEvents(new String[] { "int", "long", "Object" });
|
|
|
|
goLong(3);
|
|
Tester.checkAndClearEvents(new String[] { "long", "Object" });
|
|
|
|
goObject(new Object());
|
|
Tester.checkAndClearEvents(new String[] { "Object" });
|
|
|
|
goObject(new Integer(4));
|
|
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
|
|
|
|
goObject(null);
|
|
Tester.checkAndClearEvents(new String[] { "Object" });
|
|
|
|
goNumber(new Long(5));
|
|
Tester.checkAndClearEvents(new String[] { "Object", "Number" });
|
|
|
|
goNumber(new Integer(6));
|
|
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
|
|
|
|
goNumber(null);
|
|
Tester.checkAndClearEvents(new String[] { "Object", "Number" });
|
|
|
|
goInteger(new Integer(7));
|
|
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
|
|
|
|
goInteger(null);
|
|
Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
|
|
|
|
}
|
|
static boolean goBoolean(boolean b) { return b; }
|
|
static byte goByte(int i) { return (byte) i; }
|
|
static int goInt(int i) { return i; }
|
|
static long goLong(int i) { return (long) i; }
|
|
|
|
static Object goObject(Object o) { return o; }
|
|
static Number goNumber(Number o) { return o; }
|
|
static Integer goInteger(Integer o) { return o; }
|
|
}
|
|
|
|
aspect A {
|
|
|
|
pointcut methodsInQuestion():
|
|
call(* goBoolean(*)) ||
|
|
call(* goByte(*)) ||
|
|
call(* goInt(*)) ||
|
|
call(* goLong(*)) ||
|
|
call(* goObject(*)) ||
|
|
call(* goNumber(*)) ||
|
|
call(* goInteger(*));
|
|
|
|
after() returning(boolean b): methodsInQuestion() { Tester.event("boolean"); }
|
|
after() returning(byte b): methodsInQuestion() { Tester.event("byte"); }
|
|
after() returning(int b): methodsInQuestion() { Tester.event("int"); }
|
|
after() returning(long b): methodsInQuestion() { Tester.event("long"); }
|
|
after() returning(Object b): methodsInQuestion() { Tester.event("Object"); }
|
|
after() returning(Number b): methodsInQuestion() { Tester.event("Number"); }
|
|
after() returning(Integer b): methodsInQuestion() { Tester.event("Integer"); }
|
|
|
|
} |