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.

Driver.java 1.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import org.aspectj.testing.Tester;
  2. public class Driver {
  3. public static void main(String[] args) { test(); }
  4. public static void test() {
  5. C1 c1 = new C1(333);
  6. Tester.checkEqual(c1.afterAdvises, 0, "C1(int)");
  7. c1 = new C1("asdfasdf");
  8. Tester.checkEqual(c1.afterAdvises, 1, "C1(String)");
  9. C2 c2 = new C2(333);
  10. Tester.checkEqual(c2.afterAdvises, 0, "C2(int) -> C1(String)");
  11. c2 = new C2("foo");
  12. Tester.checkEqual(c2.afterAdvises, 1, "C2(String) -> C1(int)");
  13. c2 = new C2("foo", 42);
  14. Tester.checkEqual(c2.afterAdvises, 1, "C2(String,int) -> C1(String)");
  15. }
  16. }
  17. class C1 {
  18. public int afterAdvises = 0;
  19. C1() { }
  20. C1(int i) { }
  21. C1(String s) { }
  22. }
  23. class C2 extends C1 {
  24. C2(int i) {
  25. super("asdf");
  26. }
  27. C2(String s) {
  28. super(42);
  29. }
  30. C2(String s, int i) {
  31. super(s);
  32. }
  33. }
  34. aspect A {
  35. after(/*C1 c1*/) returning(C1 c1): /*target(c1) && */
  36. call(new(String, ..)) {
  37. c1.afterAdvises += 1;
  38. }
  39. }