[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [aspectj-dev] Why no if-poincut for non-static expressions.

What happens when the aspect is 'perthis(pushPop())'; should it
be created before the pointcut is evaluated?  Aspects are
guaranteed to be instantiated before advice runs, but I don't
think we want to guarantee that they will be instantiated 
before pointcuts are evaluated.  So I can imagine a 
NullPointerException resulting from this code:

  before() : if(PushUntilPop.aspectOf().state==2) {
    ...
  }

Which is to say, you can just be a bit careful:

  aspect A {
      static boolean expectedState(int expected) {
          A a = A.aspectOf();
          return ((null != a) && (a.state == expected));
      }
      before() : if(expectedState(2)) {
      }
  }

Wes

> ------------Original Message------------
> From: Eric Bodden <eric@xxxxxxxxx>
> To: aspectj-dev@xxxxxxxxxxx
> Date: Tue, Aug-10-2004 9:39 AM
> Subject: RE: [aspectj-dev] Why no if-poincut for non-static expressions.
>
>  
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Adrian Colyer wrote:
> > I recall Matthew Webster posting an answer to this one a while
> > back.... 
> > http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg02107.html.
> 
> Thanks for the quick help. Anyway - would it be possible to consider
> a feature request for this issue for later versions?
> I mean technically any "dynamic" if-pointcut could be "inlined" into
> the connected advices:
> 
> int a;
> 
> after(): if(a==0) && someWhateEverPointcut {
> 		//somecode
> }
> 
> - --becomes--
> 
> int a;
> 
> after(): someWhateEverPointcut {
> 	if(a==0) {
> 		//somecode
> 	}
> }
> 
> Or am I missing something?
> 
> Eric
> 
> - -- 
> Eric Bodden
> Chair I2 for Programming Languages and Program Analysis
> RWTH Aachen University
> 
> -----BEGIN PGP SIGNATURE-----
> Version: PGP 8.0.3
> 
> iQA/AwUBQRj598wiFCm7RlWCEQL3HQCgt3p1H5Tu+uIWEZnvfAehqUsAb1YAn0Ry
> matGkUBa2hB/yHGwYLDyksrM
> =aP6V
> -----END PGP SIGNATURE-----
> 
> 
> _______________________________________________
> aspectj-dev mailing list
> aspectj-dev@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-dev
>