You need to use the wormhole design pattern (described in AspectJ in Action
:-)) that goes something like:

public aspect WormholeAspect {
   pointcut callerSpace(<caller context>)
            : <caller pointcut>;
   pointcut calleeSpace(<callee context>)
           : <callee pointcut>;

   pointcut wormhole(<caller context>, <callee context>)
           : cflow(callerSpace(<caller context>))
              && calleeSpace(<callee context>);

    // advices to wormhole
    around(<caller context>, <callee context>)
       : wormhole(<caller context>, <callee context>) {
           ... advice body
    }
}

-Ramnivas

On Fri, Feb 29, 2008 at 8:08 AM, Heping Zhang <[EMAIL PROTECTED]> wrote:

> hi, say I have the following classes:
>
> public class A {
>   B b = new B();
>   private void ma() {
>     b.mb();
>  }
> }
> public class B {
>   C b = new C();
>  private void ma() {
>    for(something){
>      c.mc();
>    }
>  }
> }
>
> Now I want to catch the join point of calling to --or executing -- C.mcand  
> get the object of class A who on the top of the call stack, like this:
>  private pointcut p(int thisDone,Object iWantA) :
>   call(* C.mc(..)) &&
>   cflowbelow(execution(* A.ma()))
>   && args(byte[], int, thisDone)
>   && this(iWantA);
>
> I know this won't work. I can only get b when use this. But how can I get
> a? Can any one give me some suggestion?
>
> _______________________________________________
> aspectj-users mailing list
> [email protected]
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
_______________________________________________
aspectj-users mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to