Hey, hope you get this email :) Here is a complete program:
==== 8< ==== 8< ==== Demo.java ========= public class Demo { public static void main(String []argv) { new Demo().test(); } public void test() { Node node = new Node(); Handler handler = node.getObjectHandler(); //getBoards() is the deprecated method. Boards boards = handler.getBoards(); } } aspect X { pointcut deprecatedMethods() : call(public * *(..)) && @annotation(Deprecated); before() : deprecatedMethods() { System.out.println("Caller: "+thisEnclosingJoinPointStaticPart.getSignature()); System.out.println("Called: "+thisJoinPoint.getSignature()); } } ==== 8< ==== 8< ==== Demo.java ========= ajc -1.8 Demo.java java Demo Caller: void Demo.test() Called: Boards Handler.getBoards() You could use a declare warning to achieve some of this but I don't think it includes the enclosing join point as a key insert right now (see declare warning in https://eclipse.org/aspectj/doc/released/README-169.html ). Using declare warning means you'd see the message at compile time and not runtime. cheers, Andy On 22 September 2017 at 05:05, Mikael Petterson <mikaelpetter...@hotmail.com > wrote: > Thx Any I really appreciated your help. > > > You where correct in your assumption: > > > " > If you want to match calls *to* deprecated methods it would be more like: > > call(public * *(..)) && @annotation(Deprecated) > " > > > This is what I want to accomplish. > > > This is the structure of my maven project: > > > myapp > > tests > > nodes > > > In 'nodes' module I have a package called aspects where I have the aspect > DeprecatedMethodLogger.aj > > that I will 'weave' into the classes of nodes module. > > Under tests I have Demo class to trigger deprecated method call, > getBoards(), that is in nodes. This is for testing purposes. > > Later on there will be calls not in myapp, but outside, that will make > calls to deprecated methods in nodes module. > > > *Demo.java* > > > public class Demo extends Test{ > > @Test > public void test() { > Node node = new Node(); > Handler handler = node.getObjectHandler(); > //getBoards() is the deprecated method. > Boards boards = handler.getBoards(); > > > } > } > > > > *DeprecatedMethodLogger.aj* > > > pointcut deprecatedMethods() : call(public * *(..)) && > @annotation(Deprecated); > > > before() : deprecatedMethods() { > log("[Deprecated Method Usage]" +thisEnclosingJoinPointStaticPa > rt.getSignature().getDeclaringTypeName()+" --> "+"\n"); > } > > > This will print the 'Handler' class that calls the method getBoards() > which is deprecated. I want: > > > Caller: Demo.test() > > Called: Handler.getBoards() > > > What am I lacking? > > > br, > > > //mikael > > > > > > > > ------------------------------ > *Från:* aspectj-users-boun...@eclipse.org <aspectj-users-bounces@ > eclipse.org> för Mikael Petterson <mikaelpetter...@hotmail.com> > *Skickat:* den 21 september 2017 11:35 > *Till:* Frank Pavageau; aspectj-users@eclipse.org > > *Ämne:* Re: [aspectj-users] How to get the enclosing class in a Pointcut > > > Thx! > > > I got your reply but why did I not get his? Do I need to make any changes > to get them? > > > br, > > > //mike > > > > > > > > ------------------------------ > *Från:* Frank Pavageau <frank.pavag...@gmail.com> > *Skickat:* den 21 september 2017 07:54 > *Till:* aspectj-users@eclipse.org; Mikael Petterson > *Ämne:* Re: [aspectj-users] How to get the enclosing class in a Pointcut > > 2017-09-21 9:46 GMT+02:00 Mikael Petterson <mikaelpetter...@hotmail.com>: > >> So no input on this one? >> > Yes, Andy answered on the list itself : https://dev.eclipse.org/ > mhonarc/lists/aspectj-users/msg15087.html > > Regards, > Frank > >
_______________________________________________ aspectj-users mailing list aspectj-users@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/aspectj-users