|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // lifted directly from Mark's email
-
- import org.aspectj.testing.Tester;
-
- public class CallsReceptionsCallsto {
-
- static final String desiredString =
- "(calls) (callsto) (receptions) G.foo(A) G.foo(D) (calls) (callsto) (receptions) G.foo(A) G.foo(D) ";
-
- static StringBuffer buffer;
-
- public static void main(String[] args) {
- buffer = new StringBuffer();
- new C().go();
- String foundString = buffer.toString();
- Tester.checkEqual(foundString, desiredString);
- }
-
-
-
- }
-
- class C {
- A a = new A();
- D d = new D();
- G g = new G();
-
- void go(){
- g.foo(a);
- g.foo(d);
- bar(g);
- bash(g);
- }
-
- void bar(I i){
- i.foo(a);
- }
-
- void bash(J j){
- j.foo(d);
- }
- }
-
- aspect Q {
-
- pointcut pc2(): /*calls*/ within(C) && call(void I.foo(*));
- pointcut pc1(): /*receptions*/ call(void I.foo(*));
- pointcut pc3(): /*callsto*/ call(* I.foo(*));
-
- before (): pc2() {
- CallsReceptionsCallsto.buffer.append("(calls) ");
- }
-
- before(): pc3(){
- CallsReceptionsCallsto.buffer.append("(callsto) ");
- }
-
- before(): pc1() {
- CallsReceptionsCallsto.buffer.append("(receptions) ");
- }
- }
-
-
- class A {}
-
-
- class D {}
-
-
- interface I {
- void foo(A a);
- }
-
- interface J {
- void foo(D d);
- }
-
- class G implements I, J {
- public void foo(A a){
- CallsReceptionsCallsto.buffer.append("G.foo(A) ");
- }
- public void foo(D d){
- CallsReceptionsCallsto.buffer.append("G.foo(D) ");
- }
- }
|