You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AfterReturningParamMatching.java 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import org.aspectj.testing.Tester;
  2. // this test verifies the matching behaivor for after returning with a typed parameter.
  3. public class AfterReturningParamMatching {
  4. public static void main(String[] args) {
  5. goBoolean(false);
  6. Tester.checkAndClearEvents(new String[] { "boolean", "Object" });
  7. goByte(1);
  8. Tester.checkAndClearEvents(new String[] { "byte", "int", "long", "Object"});
  9. goInt(2);
  10. Tester.checkAndClearEvents(new String[] { "int", "long", "Object" });
  11. goLong(3);
  12. Tester.checkAndClearEvents(new String[] { "long", "Object" });
  13. goObject(new Object());
  14. Tester.checkAndClearEvents(new String[] { "Object" });
  15. goObject(new Integer(4));
  16. Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
  17. goObject(null);
  18. Tester.checkAndClearEvents(new String[] { "Object" });
  19. goNumber(new Long(5));
  20. Tester.checkAndClearEvents(new String[] { "Object", "Number" });
  21. goNumber(new Integer(6));
  22. Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
  23. goNumber(null);
  24. Tester.checkAndClearEvents(new String[] { "Object", "Number" });
  25. goInteger(new Integer(7));
  26. Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
  27. goInteger(null);
  28. Tester.checkAndClearEvents(new String[] { "Object", "Number", "Integer" });
  29. }
  30. static boolean goBoolean(boolean b) { return b; }
  31. static byte goByte(int i) { return (byte) i; }
  32. static int goInt(int i) { return i; }
  33. static long goLong(int i) { return (long) i; }
  34. static Object goObject(Object o) { return o; }
  35. static Number goNumber(Number o) { return o; }
  36. static Integer goInteger(Integer o) { return o; }
  37. }
  38. aspect A {
  39. pointcut methodsInQuestion():
  40. call(* goBoolean(*)) ||
  41. call(* goByte(*)) ||
  42. call(* goInt(*)) ||
  43. call(* goLong(*)) ||
  44. call(* goObject(*)) ||
  45. call(* goNumber(*)) ||
  46. call(* goInteger(*));
  47. after() returning(boolean b): methodsInQuestion() { Tester.event("boolean"); }
  48. after() returning(byte b): methodsInQuestion() { Tester.event("byte"); }
  49. after() returning(int b): methodsInQuestion() { Tester.event("int"); }
  50. after() returning(long b): methodsInQuestion() { Tester.event("long"); }
  51. after() returning(Object b): methodsInQuestion() { Tester.event("Object"); }
  52. after() returning(Number b): methodsInQuestion() { Tester.event("Number"); }
  53. after() returning(Integer b): methodsInQuestion() { Tester.event("Integer"); }
  54. }