[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Is it possible to define a scope of methods accepting at least one non primitive argument?
|
oops, sorry, I missed some key pairs of parens about. Parameter
annotations being included in the method signatures really pushed the
syntax to the limits. There is discussion here:
http://andrewclement.blogspot.com/2009/02/aspectj-advising-methods-with-parameter.html
but the problem is that
pointcut first(Object o): execution(* *((@NotNull *),..)) && args(o,..);
means when the parameter is of a type annotated with @NotNull. Whilst
this means a parameter annotated with @NotNull:
pointcut first(Object o): execution(* *((@NotNull (*)),..)) && args(o,..);
Notice extra parens around the '*' to disassociate the annotation from
being attached to the type.
my fault, shouldn't write code purely in my email client :)
cheers,
Andy
On 15 December 2011 10:54, Mark <mark.kharitonov@xxxxxxxxx> wrote:
> Thanks for the reply. Unfortunately, something is wrong with your example. I
> am trying to implement it, but it does not work.
>
> Given the following declarations:
> ==============================================
> package com.shunra.poc;
>
> import java.lang.annotation.ElementType;
> import java.lang.annotation.Target;
>
> @Target({ ElementType.PARAMETER })
> public @interface NotNull {
> }
> ==============================================
> package com.shunra.poc;
>
> public aspect NotNullAspect {
> pointcut first(Object o): execution(* *((@NotNull *),..)) && args(o,..);
> // line 4
> pointcut second(Object o): execution(* *(*,(@NotNull *),..)) &&
> args(*,o,..); // line 5
> pointcut third(Object o): execution(* *(*,*,(@NotNull *),..)) &&
> args(*,*,o,..); // line 6
>
> before(Object o): first(o) {
> checkNotNull(o);
> }
>
> private void checkNotNull(Object o) {
> // TODO Auto-generated method stub
>
> }
> }
> ==============================================
>
> I get the following warnings for the lines 4,5 and 6 respectively:
> ==============================================
> does not match because annotation @com.shunra.poc.NotNull has
> @Target{ElementType.PARAMETER} [Xlint:unmatchedTargetKind] NotNullAspect.aj
> /Server/src/com/shunra/poc line 4 Java Problem
> does not match because annotation @com.shunra.poc.NotNull has
> @Target{ElementType.PARAMETER} [Xlint:unmatchedTargetKind] NotNullAspect.aj
> /Server/src/com/shunra/poc line 5 Java Problem
> does not match because annotation @com.shunra.poc.NotNull has
> @Target{ElementType.PARAMETER} [Xlint:unmatchedTargetKind] NotNullAspect.aj
> /Server/src/com/shunra/poc line 6 Java Problem
> ==============================================
>
> What is wrong?
>
> Thanks.
>
> --
> View this message in context: http://aspectj.2085585.n4.nabble.com/Is-it-possible-to-define-a-scope-of-methods-accepting-at-least-one-non-primitive-argument-tp4195341p4201202.html
> Sent from the AspectJ - users mailing list archive at Nabble.com.
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users