réplica de
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-26 17:58:43 +02:00
71 líneas
1.8 KiB
Java
71 líneas
1.8 KiB
Java
import org.aspectj.testing.Tester;
|
|
|
|
public class MultiAndAround {
|
|
public static void main(String[] args) {
|
|
exercise(new Base());
|
|
exercise(new Derived());
|
|
exercise(new SubBase());
|
|
|
|
Tester.checkEventsFromFile("MultiAndAround.out");
|
|
}
|
|
|
|
static void exercise(IBase b) {
|
|
Tester.event("**************************************");
|
|
b.base1("1");
|
|
b.base2("2");
|
|
b.base3("3");
|
|
}
|
|
}
|
|
|
|
|
|
interface IBase {
|
|
void base1(String s);
|
|
void base2(String s);
|
|
void base3(String s);
|
|
}
|
|
|
|
interface IDerived extends IBase {
|
|
void base1(String s);
|
|
}
|
|
|
|
class Base implements IBase {
|
|
public void base2(String s) { Tester.event("Base.base2"); }
|
|
}
|
|
|
|
class Derived implements IDerived {
|
|
public void base3(String s) { Tester.event("Derived.base3"); }
|
|
}
|
|
|
|
class SubBase extends Base {
|
|
public void base3(String s) { Tester.event("SubBase.base3"); }
|
|
}
|
|
|
|
aspect Intro {
|
|
public void IBase.base1(String s) { Tester.event("IBase.base1 from Intro"); }
|
|
public void IBase.base3(String s) { Tester.event("IBase.base3 from Intro"); }
|
|
|
|
public void IDerived.base1(String s) { Tester.event("IDerived.base1 from Intro"); }
|
|
public void IDerived.base2(String s) { Tester.event("IDerived.base2 from Intro"); }
|
|
public void IDerived.base3(String s) { Tester.event("IDerived.base3 from Intro"); }
|
|
}
|
|
|
|
|
|
aspect A {
|
|
Object around(): call(* IBase.*(..)) {
|
|
Tester.event("around call(IBase.*)");
|
|
return proceed();
|
|
}
|
|
Object around(): call(* IBase+.*(..)) {
|
|
Tester.event("around call(IBase+.*)");
|
|
return proceed();
|
|
}
|
|
Object around(): call(* Base.*(..)) {
|
|
Tester.event("around call(Base.*)");
|
|
return proceed();
|
|
}
|
|
Object around(): execution(* Base+.*(..)) {
|
|
Tester.event("around execution(Base+.*)");
|
|
return proceed();
|
|
}
|
|
}
|