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.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. p.mInt();
  7. Tester.checkAndClearEvents(new String[] { "int as Object 2" });
  8. p.mObject();
  9. Tester.checkAndClearEvents(new String[] { "Object as Object ning",
  10. "Object (that is String) as String ning" });
  11. p.mVoid();
  12. Tester.checkAndClearEvents(new String[] { "void as Object null" });
  13. }
  14. public int mInt() { return 2; }
  15. public Object mObject() { return "ning"; }
  16. public void mVoid() { return; }
  17. AfterReturningParam() {
  18. }
  19. }
  20. aspect A {
  21. private void callEvent(String s, Object o) {
  22. Tester.event(s + " " + o);
  23. }
  24. after() returning (AfterReturningParam o) : execution(AfterReturningParam.new()) { // CW 35 in 1.0.4, no match
  25. callEvent("constr exec as constd object", o);
  26. }
  27. after() returning (Object o) : execution(AfterReturningParam.new()) { // CW 38 in 1.0.4, does match
  28. callEvent("constr exec as Object", o);
  29. }
  30. after() returning (String o) : execution(AfterReturningParam.new()) { // CW 41 in 1.0.4, no match
  31. callEvent("constr exec as String", o);
  32. }
  33. after() returning (Object o) : execution(int AfterReturningParam.mInt()) { // match
  34. callEvent("int as Object", o);
  35. }
  36. after() returning (String o) : execution(int AfterReturningParam.mInt()) { // no match
  37. callEvent("int as String", o);
  38. }
  39. after() returning (Integer o) : execution(int AfterReturningParam.mInt()) { // no match
  40. callEvent("int as Integer", o);
  41. }
  42. after() returning (Object o) : execution(Object AfterReturningParam.mObject()) { // match
  43. callEvent("Object as Object", o);
  44. }
  45. after() returning (String o) : execution(Object AfterReturningParam.mObject()) { // match (interesting, matching by instanceof)
  46. callEvent("Object (that is String) as String", o);
  47. }
  48. after() returning (Object o) : execution(void AfterReturningParam.mVoid()) { // match
  49. callEvent("void as Object", o);
  50. }
  51. after() returning (String o) : execution(void AfterReturningParam.mVoid()) { // CW 65 warning in 1.0.4 no match
  52. callEvent("void as String", o);
  53. }
  54. }