[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] what for args pointcut designator?

this(), args(), and target() allow you to bind variables in a type-safe way and to do runtime tests.

E.g., for 

    void put(Object key, Object value)

you might want to pick out only join points with keys of type foo:

    execution(void put(Object, Object)) && args(Foo, Object)

If you were to do something with it (e.g., put Foo in a wrapper with a better hashcode), then you'd want to bind the variable.  Without binding (i.e., using reflection) you only get Object, which makes for a lot of runtime ClassCastException.

Wes

> ------------Original Message------------
> From: Kamil Dworakowski <kamil.dworakowski@xxxxxxxxxxxxxx>
> To: aspectj-users@xxxxxxxxxxx
> Date: Sat, Sep-2-2006 11:51 AM
> Subject: [aspectj-users] what for args pointcut designator?
>
> What is the most important reason for having args pointcut designator 
> in 
> aspectj language? I would prefer exposing args in signature like this
> 
> aPointcut(int i): execution( * *.method( int i ) );
> 
> The one thing that comes to my mind is
> 
> execution( * *.meth( Object) ) && args( String )
> 
> That is, however, not an everyday use and can be achieved by type 
> checking in the advice body.
> 
> The reason I go through it is because I want to implement aspectj like 
> aop. I mean a reasonable subset. I wonder if I could just forget about 
> args.
> 
> Luntain
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>