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 <[email protected]
> 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:* [email protected] <aspectj-users-bounces@
> eclipse.org> för Mikael Petterson <[email protected]>
> *Skickat:* den 21 september 2017 11:35
> *Till:* Frank Pavageau; [email protected]
>
> *Ä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 <[email protected]>
> *Skickat:* den 21 september 2017 07:54
> *Till:* [email protected]; 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 <[email protected]>:
>
>> 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
[email protected]
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users