|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- 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();
- }
- }
|