[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Matching on parameter annotations
|
From the AspectJ documentation:
"Matching on package and parameter annotations is not supported in
AspectJ 1.5. Support for this capability may be considered in a future
release."
We currently don't provide any kind of matching on the annotations
attached to parameters at the moment.
cheers,
Andy.
On 07/08/06, Eric Crahen <eric_crahen@xxxxxxxxx> wrote:
Almost, I want to select annotations that are method parameter annotations,
not annotations on the formal types of the method parameters themselves.
I've modified your example slightly to show you what I mean
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class AnnotationBinding {
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
}
public static class Foo {}
public static class Bar {}
public void x(@TestAnnotation Foo foo) {} // error here
public void x(Bar bar) {} // no error here
static aspect A {
declare error: execution(void AnnotationBinding.x(@TestAnnotation *))
: "parameter annotated with @TestAnnotation";
}
}
Wes <wes@xxxxxxxxxxxxxx> wrote:
Hi Eric -
I'm not sure what kind of static checking happens or is possible using
@args(..),
but you can staticly pick them out using the method-execution join point
signature:
execution(* *(@Annotation *)) // for any method with one parameter so
annotated
In the test below, only the annotation-laden shadow x(..) is flagged as an
error.
Would that help?
Wes
--------------------- annot/AnnotationBinding.java
package annot;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public class AnnotationBinding {
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
}
@TestAnnotation
public static class Foo {}
public static class Bar {}
public void x(Foo foo) {} // error here
public void x(Bar bar) {} // no error here
static aspect A {
declare error: execution(void AnnotationBinding.x(@TestAnnotation *))
: "parameter annotated with @TestAnnotation";
}
}
------------Original Message------------
From: Eric Crahen
To: aspectj-users@xxxxxxxxxxx
Date: Sun, Aug-6-2006 3:33 PM
Subject: [aspectj-users] Matching on parameter annotations
Is there any upcoming work being done to allow for parameter annotations to
be matched more efficently?
So far I've found that using @args() inserts bytecodes that check the
annotations of the object passed in to see if an annotation is present and
its not quite what I wanted. And using the static parts of a join point also
inserts bytecode into each method. This works, but if you weave 100 methods
and only 1 contains a parameter annotation, thats alot of extra code
inserted into 99 methods that wouldn't behave any differently.
- Eric
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail
Beta._______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
- Eric
________________________________
Do you Yahoo!?
Get on board. You're invited to try the new Yahoo! Mail Beta.
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users