[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-dev] NPE with @args

Andy Clement schrieb:
Right.... last spam from me on this....  I've looked at the bug report
and can see a failure when the program is in a package.

However, I should have said in the first place that you cannot do
parameter annotation matching with @args(), that is for matching an
annotation on the type of the parameter.

class MyAnnotatedType {}

public void m(MyAnnotatedType mat) {}

execution(* *.m(..)) && @args(Foo) // will match m

The only way to match parameter annotations is to use the syntax I
showed earlier:

public void m(MyAnnotatedType mat) {}
public void m2(@Foo String s) {}

execution(* *.m*(@Foo (*))) // will only match m2

ah, I see now, what I did wrong. My first try was

    execution(* *.m*(@Foo *))

(without the inner bracket) but this does not match the pointcut (I got a warning for that).

For more information, see the 1.6.0 readme: http://www.eclipse.org/aspectj/doc/released/README-160.html

I was not aware of the different meaning for an annotation before a parameter in the AspectJ syntax. Now I know why the pointcut above (and my first try) do not match.

Thanks for your clarification