aboutsummaryrefslogtreecommitdiffstats
path: root/tests/new/NotAndDeclaringTypes.java
blob: a44825428a0dff7a269f2bc625738b95d6c1dd46 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import org.aspectj.testing.Tester;

public class NotAndDeclaringTypes {

  public static void main (String args []) {
    Rectangle r = new Rectangle ();
    Square s = new Square ();

    r.getSurface();
    Tester.checkAndClearEvents(new String[] { "advice" });

    s.getSurface();

    Tester.checkAndClearEvents(new String[] { });
  } 
}

class Rectangle {
  public String toString () { return "Rectangle"; }
  public int getSurface () { return 100; }
}

class Square extends Rectangle {
  public String toString () { return "Square"; }
  public int getSurface () { return 200; }
}

aspect Concern {

  pointcut pc () : call (int Rectangle.getSurface ())
                   && !call (int Square.getSurface ());

  before () : pc () {
      Tester.event("advice");
  }
}