[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] perthis Question
|
Change your aspect declaration as follows:
aspect MyAspect perthis (execution(Foo.new()) || execution(C.new(..))
-Ramnivas
--- neil loughran <n.loughran@xxxxxxxxxxxxxxx> wrote:
> Thanks Ramnivas,
>
> Can I somehow extend the perthis aspect to also capture the C.new
> instances
> made inside the aspect or am I completely off track here?
>
> Cheers
> Neil
> ----- Original Message -----
> From: "Ramnivas Laddad" <ramnivas@xxxxxxxxx>
> To: <aspectj-users@xxxxxxxxxxx>
> Sent: Monday, September 08, 2003 3:15 PM
> Subject: Re: [aspectj-users] perthis Question
>
>
> > This has to do with "implicit limiting of join points"
> > for per- aspects. In case of perthis() aspect, the adivce
> > in the aspect will limit the join points captured to where
> > 'this' matches the one specified in perthis() association
> > specification.
> >
> > In you example, it means it will match only join points
> > where 'this instanceof Foo' is true.
> >
> > -Ramnivas
> >
> > --- neil loughran <n.loughran@xxxxxxxxxxxxxxx> wrote:
> > > Hello,
> > >
> > > I'm having problems using the perthis construct.
> > >
> > > The code below shows how an aspect "MyAspect" can be associated
> with
> > > each Foo object.
> > >
> > > However, the after advice relating to calls of C.new don't appear
> to
> > > work.
> > >
> > > Yet remove the perthis construct and it works correctly..
> > >
> > > Can anyone tell me what the reason is behind this behaviour?
> > >
> > > Thanks
> > > Neil
> > >
> > >
> > >
> > > class A
> > > {
> > >
> > > public static void main(String args[])
> > > {
> > > Foo a=new Foo();
> > > Foo b=new Foo();
> > > }
> > > }
> > >
> > >
> > >
> > > class Foo
> > > {
> > > public Foo()
> > > {
> > > new Bar("Hello");
> > > }
> > > }
> > >
> > >
> > > class Bar
> > > {
> > > public Bar(String s)
> > > {
> > > System.out.println(s);
> > > }
> > > }
> > >
> > >
> > > aspect MyAspect perthis (execution(Foo.new()))
> > > {
> > > private int count = 0;
> > > after(String s) : args(s) && call(Bar.new(String))
> > > {
> > > System.out.println("new Bar "+count);
> > > count++;
> > > new C();
> > > }
> > >
> > > after() : call (C.new())
> > > {
> > > System.out.println("new C ");
> > > }
> > > }
> > >
> > > class C
> > > {
> > > public void methodC()
> > > {
> > > System.out.println("C");
> > > }
> > > }
> >
> >
> > =====
> > Ramnivas Laddad
> > Author, AspectJ in Action
> > http://www.manning.com/laddad
> > http://www.amazon.com/exec/obidos/ASIN/1930110936
> >
> > __________________________________
> > Do you Yahoo!?
> > Yahoo! SiteBuilder - Free, easy-to-use web site design software
> > http://sitebuilder.yahoo.com
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@xxxxxxxxxxx
> > http://dev.eclipse.org/mailman/listinfo/aspectj-users
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-users
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com