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.

AfterReturningParam.java 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import org.aspectj.testing.Tester;
  2. public class AfterReturningParam {
  3. public static void main(String[] args) {
  4. AfterReturningParam p = new AfterReturningParam();
  5. // Tester.checkAndClearEvents(new String[] { "constr exec as Object null" });
  6. // see pr 103157 for reason why this no longer matches
  7. p.mInt();
  8. Tester.checkAndClearEvents(new String[] { "int as Object 2" });
  9. p.mObject();
  10. Tester.checkAndClearEvents(new String[] { "Object as Object ning",
  11. "Object (that is String) as String ning" });
  12. p.mVoid();
  13. Tester.checkAndClearEvents(new String[] { "void as Object null" });
  14. }
  15. public int mInt() { return 2; }
  16. public Object mObject() { return "ning"; }
  17. public void mVoid() { return; }
  18. AfterReturningParam() {
  19. }
  20. }
  21. aspect A {
  22. private void callEvent(String s, Object o) {
  23. Tester.event(s + " " + o);
  24. }
  25. after() returning (AfterReturningParam o) : execution(AfterReturningParam.new()) { // CW 35 in 1.0.4, no match
  26. callEvent("constr exec as constd object", o);
  27. }
  28. after() returning (Object o) : execution(AfterReturningParam.new()) { // CW 38 in 1.0.4, does match
  29. // in 1.5 does not match - no return value for this jp
  30. callEvent("constr exec as Object", o);
  31. }
  32. after() returning (String o) : execution(AfterReturningParam.new()) { // CW 41 in 1.0.4, no match
  33. callEvent("constr exec as String", o);
  34. }
  35. after() returning (Object o) : execution(int AfterReturningParam.mInt()) { // match
  36. callEvent("int as Object", o);
  37. }
  38. after() returning (String o) : execution(int AfterReturningParam.mInt()) { // no match
  39. callEvent("int as String", o);
  40. }
  41. after() returning (Integer o) : execution(int AfterReturningParam.mInt()) { // no match
  42. callEvent("int as Integer", o);
  43. }
  44. after() returning (Object o) : execution(Object AfterReturningParam.mObject()) { // match
  45. callEvent("Object as Object", o);
  46. }
  47. after() returning (String o) : execution(Object AfterReturningParam.mObject()) { // match (interesting, matching by instanceof)
  48. callEvent("Object (that is String) as String", o);
  49. }
  50. after() returning (Object o) : execution(void AfterReturningParam.mVoid()) { // match
  51. callEvent("void as Object", o);
  52. }
  53. after() returning (String o) : execution(void AfterReturningParam.mVoid()) { // CW 65 warning in 1.0.4 no match
  54. callEvent("void as String", o);
  55. }
  56. }