123456789101112131415161718192021222324252627282930313233343536 |
- import java.lang.annotation.*;
-
- @Retention(RetentionPolicy.RUNTIME)
- @interface Colored { String color(); }
-
- @Colored(color="yellow")
- public class AtThis1 {
- public static void main(String[]argv) {
- new AtThis1().m();
- X.verify();
- }
-
- @Colored(color="red")
- public void m() {
- System.err.println("method");
- }
-
- }
-
- aspect X {
- static int count = 0;
-
- before(Colored c): call(* *(..)) && !within(X) && @this(c) {
- System.err.println(thisJoinPoint+" > "+c.color());
- count++;
-
- if (!c.color().equals("yellow"))
- throw new RuntimeException("Color should be yellow");
- }
-
- public static void verify() {
- if (count!=1) throw new Error("Should be 1 run: "+count);
- }
-
- }
-
|