Hi Andy!

Yes now I got the message 😊


I have exactly the same code. I think it has something to do with the compile 
and execution of my test case. I can see that ajc i done:


aspectj-maven-plugin:1.10:compile (compile_with_aspectj) @ resource-manager ---
[INFO] Showing AJC message detail for messages of types: [error, warning, fail]
[WARNING] invalid Class-Path header in manifest of jar file: 
/repo/eraonel/.m2/repository/org/restlet/jse/org.restlet/2.3.3/org.restlet-2.3.3.jar
invalid Class-Path header in manifest of jar file: 
/repo/eraonel/.m2/repository/org/uncommons/maths/uncommons-maths/1.2.2a/uncommons-maths-1.2.2a.jar
    <unknown source file>:<no line information>

[INFO] Join point 'method-call(......)

However when I try to execute my test case I try to do it within Eclipse.
I have a 'Run configuration'  for m2build making:

mvn clean compile

Then I have another 'Run configuration', testng,  for my Demo test.

I execute it using a suite file that I have pointed out in Eclipse.

Is there anything that is different if I execute from within Eclipse?

br,

//mikael








________________________________
FrÃ¥n: Andy Clement <[email protected]>
Skickat: den 22 september 2017 16:52
Till: Mikael Petterson
Kopia: [email protected]
Ämne: Re: [aspectj-users] How to get the enclosing class in a Pointcut

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.
AspectJ 1.6.9 Readme - Eclipse 
Oxygen<https://eclipse.org/aspectj/doc/released/README-169.html>
eclipse.org
It is now possible to ITD member types. The syntax is as would be expected. 
This example introduces a new member type called Inner into type Foo: public 
class Foo ...


cheers,
Andy

On 22 September 2017 at 05:05, Mikael Petterson 
<[email protected]<mailto:[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]" 
+thisEnclosingJoinPointStaticPart.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]<mailto:[email protected]> 
<[email protected]<mailto:[email protected]>> 
för Mikael Petterson 
<[email protected]<mailto:[email protected]>>
Skickat: den 21 september 2017 11:35
Till: Frank Pavageau; 
[email protected]<mailto:[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]<mailto:[email protected]>>
Skickat: den 21 september 2017 07:54
Till: [email protected]<mailto:[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]<mailto:[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

Reply via email to