Oh, ok, I see this, that makes sense, the return type is annoted (at type declaration) as opposed to the return type is annotated in method signature. That is actually going to be useful to us and may even provide a way to do what we wish to now.
Thanks! Jay On May 6, 2013, at 4:25 PM, Andy Clement <andrew.clem...@gmail.com> wrote: > The syntax you were initially trying to use is valid: > > execution( (@Foo *) *(..)) { } > > So from that point of view the docs are correct, in a method pattern the > return value can be an annotation pattern. This example means a method whose > return type is annotated with Foo, so it would match the method here: > > @Foo > class SomeType {} > > public SomeType giveMeOne() {} > > > And just to mention this whilst on the topic, if you were on Java8 you could > write > > @Target(ElementType.TYPE_USE) > @interface Foo {} > > class SomeType {} > > public @Foo SomeType giveMeOne() {} > > And the @Foo will actually be applying to the 'SomeType' type reference, not > to the method. I haven't decided how to fit type_use type annotations into > the AspectJ matching yet. > > Andy > > > > On 6 May 2013 11:43, Jay Roberts <puda...@gmail.com> wrote: > Thanks for the responses - I didn't dig into it deep enough to realize that > Java isn't supporting annotations on return types (I'm assuming that this is > the issue….). > > Just to be clear, and we are Java 7, there is no way to write/annotate a Java > method annotating the return type and that even if there were, Aspectj > doesn't support this. > > I would say that perhaps the MethodPattern spec in the documentation is a > little ambiguous, then, as it has TypePattern (for return value of method) > and one of the patterns for this is AnnotationPattern. > > Maybe a MethodReturnTypePattern would exclude the AnnotatedPattern from > TypePattern? > > Thanks for all the quick responses! > > Jay > > > > On May 6, 2013, at 2:25 PM, Andy Clement <andrew.clem...@gmail.com> wrote: > >> Hi Jay, >> >> You actually have an annotated method there, not an annotated return value. >> So this will match: >> >> @Around( "execution(@ImmutableCollection * *(..))") >> >> *UNLESS* you are on Java8 and are exploiting type annotations?? If you are >> then I should say AspectJ does not yet support type annotations. >> >> cheers, >> Andy >> >> >> >> On 6 May 2013 10:32, Jay Roberts <puda...@gmail.com> wrote: >> I have a simple test case that isn't working, but it seems like it should, >> could use a bit of help. >> >> I have: >> >> public class TestReturnAnnotation{ >> public Object object=null; >> public @ImmutableCollection Object getObject(){ >> return object; >> } >> } >> >> >> And from the advice: >> >> @Around( "execution( (@ImmutableCollection *) *(..))") >> >> This compiles ok, but the advice does not get applied to >> TestReturnAnnotation.getObject(). Looking at the spec for MethodPattern, it >> seems like it should, but I'm obviously missing something. FWIW, in the >> aspect, I have another advice >> >> @Around( "set(@ImmutableCollection * *) && args(newVal) && target(t)") >> >> That is working fine. Can I have two @Around in the same @Aspect class? >> >> Thanks! >> >> Jay Roberts >> >> _______________________________________________ >> aspectj-users mailing list >> aspectj-users@eclipse.org >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> >> _______________________________________________ >> aspectj-users mailing list >> aspectj-users@eclipse.org >> https://dev.eclipse.org/mailman/listinfo/aspectj-users > > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users > > > _______________________________________________ > aspectj-users mailing list > aspectj-users@eclipse.org > https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org https://dev.eclipse.org/mailman/listinfo/aspectj-users