org.aspectj/tests/new/IntroOnIntro.java
2002-12-16 18:51:06 +00:00

62 lines
1.4 KiB
Java

import org.aspectj.testing.*;
public class IntroOnIntro {
public static void main(String[] args) {
Class1 c1 = new Class1();
try {
c1.getName();
} catch (NoSuchMethodError nsme) {
Tester.check(false, "getName was not found in Class1");
}
try {
c1.m = "potato";
} catch (NoSuchFieldError nsfe) {
Tester.check(false, "m was not introduced into Class1");
}
}
}
class Class1 {
String name = ""; //public String getName() { return name; }
}
aspect Aspect1 /**of eachobject (instanceof(Class1))*/ {
public String Class1.getName() { return this.name; }
void f() {}
before(): call(* getName(..)) && this(Class1) {
f();
}
}
aspect AComposer /**of eachobject(instanceof(Class1 || Aspect1))*/ {
interface HasManager {}
private String HasManager.my_manager;
String HasManager.m;
public void HasManager.setManager(String manager) {
this.my_manager = manager;
}
declare parents: Class1 || Aspect1 implements HasManager;
before(Aspect1 a1): call(void f()) && this(a1) {
try {
a1.setManager("potato");
} catch (NoSuchMethodError nsme) {
Tester.check(false, "getName not found in Aspect1");
}
try {
a1.m = "potato";
} catch (NoSuchFieldError nsfe) {
Tester.check(false, "m was not introduced into Class1");
}
}
}