|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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"); }
-
- }
|