BTW - I think it'd be good practice to exclude final fields from your advice, and possibly declare a warning when a final field is annotated with your marker annotation.
[ Romain Muller | Software Development Engineer | +33 (0)6 48 25 66 70 | romain.mul...@esial.net ] Le 19 oct. 2012 à 08:53, "Sertic Mirko, Bedag" <mirko.ser...@bedag.ch> a écrit : > argg, yes, of course, you are right. > > Regards > Mirko > > -----Ursprüngliche Nachricht----- > Von: aspectj-users-boun...@eclipse.org > [mailto:aspectj-users-boun...@eclipse.org] Im Auftrag von Romain MULLER > Gesendet: Freitag, 19. Oktober 2012 08:14 > An: aspectj-users@eclipse.org > Betreff: Re: [aspectj-users] Intercepting field access and thread-safety > > You'll want to use: > > around(Object val) : get(@Annotation * *.*) && args(val) {...} > > _________________________ > Sent over RFC-1149 compliant transport - please excuse occasionnal packet loss > > Le 19 oct. 2012 à 08:09, "Sertic Mirko, Bedag" <mirko.ser...@bedag.ch> a > écrit : > >> Hi Andy >> >> No problem, and yes, this is exactly what i want. I didn't know that it is >> possible to use an around advice with field get access. Thank you. What >> would be the pointcut for every field get access, regardless of the field >> type? I need to pass also the original value of the field, so i can change >> it in advice. >> >> I think the expression would be: >> >> get(@MyAnnotation * *.*) >> >> but how do i pass original value? >> >> Regards >> Mirko >> >> -----Ursprüngliche Nachricht----- >> Von: aspectj-users-boun...@eclipse.org >> [mailto:aspectj-users-boun...@eclipse.org] Im Auftrag von Andy Clement >> Gesendet: Freitag, 19. Oktober 2012 04:53 >> An: aspectj-users@eclipse.org >> Betreff: Re: [aspectj-users] Intercepting field access and >> thread-safety >> >> Hi, >> >> Sorry for the late reply, we are all at Spring One 2GX. How about: >> >> public class Code { >> int i = 5; >> public static void main(String[] argv) { >> new Code().foo(); >> } >> public void foo() { >> System.out.println(i); >> } >> } >> >> aspect X { >> int around(): get(int Code.i) { >> return 42; >> } >> } >> >> Does that do what you want? >> >> Andy >> >> On 16 October 2012 12:16, Sertic Mirko, Bedag <mirko.ser...@bedag.ch> wrote: >>> Hi there >>> >>> I'd like to know if it's possible to incercept a get field access >>> using AspectJ and modify the returned value. >>> >>> Of course i could modify the field and set a new value using a before >>> advice, but if the affected instance would be used in a multi >>> threaded environment, this could lead to unwanted race conditions. So >>> it is possible to intercept a field get access and return a defined >>> value without modifying the original value of the field? >>> >>> Thanks a lot >>> >>> Mirko >>> >>> >>> _______________________________________________ >>> 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