Hi Alexander,

Yes I found out that one class had a dependency to gson. That was The reason it 
was in console log. I also tested to not use TestNG and got same log as you.
Thanks for hints it really helped.

//Mikael

Skickat från min Xperia™-smartphone från Sony


---- Alexander Kriegisch skrev ----


Hi Mikael.

You see a bit more if you change your advice like this:

  before() : read() {
    System.out.println(thisJoinPoint);
    System.out.println("  Caller = " + thisEnclosingJoinPointStaticPart);
  }


With this kind of LTW configuration

<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
  <aspects>
    <aspect name="de.scrum_master.aspect.TypePatternsAspect" />
  </aspects>
  <weaver options="-verbose -showWeaveInfo">
  </weaver>
</aspectj>


and this main class (no TestNG here)

package de.scrum_master.app;

import java.io.IOException;
import org.apache.commons.io.input.NullReader;

public class Application {
  public static void main(String[] args) throws IOException {
    NullReader nullReader = new NullReader(10);
    nullReader.read();
    char[] chars ={ 'a', 'b', 'c', 'd', 'e' };
    nullReader.read(chars);
    nullReader.close();
  }
}


I get this console log:

[AppClassLoader@18b4aac2] info AspectJ Weaver Version DEVELOPMENT built on 
Monday Oct 30, 2017 at 17:23:54 GMT
[AppClassLoader@18b4aac2] info register classloader 
sun.misc.Launcher$AppClassLoader@18b4aac2
[AppClassLoader@18b4aac2] info using configuration 
/C:/Users/alexa/Documents/java-src/AJ_ML_CommonsIO/bin/META-INF/aop-ajc.xml
[AppClassLoader@18b4aac2] info register aspect 
de.scrum_master.aspect.TypePatternsAspect
[AppClassLoader@18b4aac2] info processing reweavable type 
de.scrum_master.app.Application: de\scrum_master\app\Application.java
[AppClassLoader@18b4aac2] info successfully verified type 
de.scrum_master.aspect.TypePatternsAspect exists.  Originates from 
de\scrum_master\aspect\C:\Users\alexa\Documents\java-src\AJ_ML_CommonsIO\src\de\scrum_master\aspect\TypePatternsAspect.aj
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read())' in Type 
'de.scrum_master.app.Application' (Application.java:9) advised by before advice 
from 'de.scrum_master.aspect.TypePatternsAspect' (TypePatternsAspect.aj:6)
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read(char[]))' in Type 
'de.scrum_master.app.Application' (Application.java:11) advised by before 
advice from 'de.scrum_master.aspect.TypePatternsAspect' 
(TypePatternsAspect.aj:6)
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read(char[], int, int))' in Type 
'org.apache.commons.io.input.NullReader' (NullReader.java:194) advised by 
before advice from 'de.scrum_master.aspect.TypePatternsAspect' 
(TypePatternsAspect.aj:6)
[AppClassLoader@18b4aac2] info processing reweavable type 
de.scrum_master.aspect.TypePatternsAspect: 
de\scrum_master\aspect\TypePatternsAspect.aj
call(int org.apache.commons.io.input.NullReader.read())
  Caller = execution(void de.scrum_master.app.Application.main(String[]))
call(int org.apache.commons.io.input.NullReader.read(char[]))
  Caller = execution(void de.scrum_master.app.Application.main(String[]))
call(int org.apache.commons.io.input.NullReader.read(char[], int, int))
  Caller = execution(int org.apache.commons.io.input.NullReader.read(char[]))

So basically I can reproduce your situation with regard to the program's log 
output. As you can see, the first two logs come from your own program, the 
third one comes from Commons-IO, indeed, because NullReader.read(char[])) calls 
NullReader.read(char[], int, int)).

When running your test directly via LTW configuration and TestNG (because the 
Eclipse plugin did not install correctly on my machine and I have never used 
TestNG before), it looks like this:

package de.scrum_master.app;

import java.io.IOException;

import org.apache.commons.io.input.NullReader;
import org.testng.annotations.Test;

import com.beust.testng.TestNG;

public class Example4 {
  @Test
  public void testCallToReadMethods() throws IOException {
    NullReader nullReader = new NullReader(10);
    nullReader.read();
    char[] chars = { 'a', 'b', 'c', 'd', 'e' };
    nullReader.read(chars);
    nullReader.close();
  }

  public static void main(String[] args) throws ClassNotFoundException {
    TestNG test = new TestNG();
    test.setTestClasses(new Class[] { Example4.class });
    test.run();
  }
}


Log output:

[AppClassLoader@18b4aac2] info AspectJ Weaver Version DEVELOPMENT built on 
Monday Oct 30, 2017 at 17:23:54 GMT
[AppClassLoader@18b4aac2] info register classloader 
sun.misc.Launcher$AppClassLoader@18b4aac2
[AppClassLoader@18b4aac2] info using configuration 
/C:/Users/alexa/Documents/java-src/AJ_ML_CommonsIO/bin/META-INF/aop-ajc.xml
[AppClassLoader@18b4aac2] info register aspect 
de.scrum_master.aspect.TypePatternsAspect
[AppClassLoader@18b4aac2] info processing reweavable type 
de.scrum_master.app.Example4: de\scrum_master\app\Example4.java
[AppClassLoader@18b4aac2] info successfully verified type 
de.scrum_master.aspect.TypePatternsAspect exists.  Originates from 
de\scrum_master\aspect\C:\Users\alexa\Documents\java-src\AJ_ML_CommonsIO\src\de\scrum_master\aspect\TypePatternsAspect.aj
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read())' in Type 
'de.scrum_master.app.Example4' (Example4.java:14) advised by before advice from 
'de.scrum_master.aspect.TypePatternsAspect' (TypePatternsAspect.aj:6)
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read(char[]))' in Type 
'de.scrum_master.app.Example4' (Example4.java:16) advised by before advice from 
'de.scrum_master.aspect.TypePatternsAspect' (TypePatternsAspect.aj:6)
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read(char[], int, int))' in Type 
'org.apache.commons.io.input.NullReader' (NullReader.java:194) advised by 
before advice from 'de.scrum_master.aspect.TypePatternsAspect' 
(TypePatternsAspect.aj:6)
[TestNG] Running:
  Command line suite

[AppClassLoader@18b4aac2] info processing reweavable type 
de.scrum_master.aspect.TypePatternsAspect: 
de\scrum_master\aspect\TypePatternsAspect.aj
call(int org.apache.commons.io.input.NullReader.read())
  Caller = execution(void de.scrum_master.app.Example4.testCallToReadMethods())
call(int org.apache.commons.io.input.NullReader.read(char[]))
  Caller = execution(void de.scrum_master.app.Example4.testCallToReadMethods())
call(int org.apache.commons.io.input.NullReader.read(char[], int, int))
  Caller = execution(int org.apache.commons.io.input.NullReader.read(char[]))

===============================================
Command line suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

Also no strange warnings about some Gson class shaded into TestNG. It must be 
connected to how you run TestNG, maybe you use a package or plugin which 
contains Gson somehow, somewhere, or it is part of your project, a side effect 
of any of the other two aspects listed in your log output. I have no idea. 
Anyway, you can probably avoid it by excluding TestNG classes from LTW like 
this:

<?xml version="1.0" encoding="UTF-8"?>
<aspectj>
    <aspects>
        <aspect name="de.scrum_master.aspect.TypePatternsAspect"/>
    </aspects>
    <weaver options="-verbose -showWeaveInfo">
        <exclude within="org.testng..*"/>
    </weaver>
</aspectj>


I hope this helps, I had to speculate a bit, not seeing your whole project.

Regards
--
Alexander Kriegisch
https://scrum-master.de

Mikael Petterson schrieb am 13.12.2018 14:47:
I have a testcase (TESTNG) looking like this:

public class Example4 {
 @Test
  public void testCallToReadMethods() throws IOException {
      NullReader nullReader = new NullReader(10);
      nullReader.read();
      char[] chars ={ 'a', 'b', 'c', 'd', 'e' };
      nullReader.read(chars);
      nullReader.close();

  }
}
It calls methods in apache commons-io:

https://commons.apache.org/proper/commons-io/javadocs/api-release/index.html
Apache Commons IO 2.6 
API<https://commons.apache.org/proper/commons-io/javadocs/api-release/index.html>
This package provides a component for monitoring file system events (directory 
and file create, update and delete events).
commons.apache.org



This is my simple aspect:

public aspect TypePatternsAspect {

    pointcut read(): call(* org.apache.commons.io.input.NullReader.read(..));

    before() : read() {
        String callingClass = 
thisJoinPoint.getStaticPart().getSourceLocation().getWithinType().getName();
        System.out.println("Caller "+callingClass);
    }

}

I can see that print is done 3 times:


Caller examples.Example4
Caller examples.Example4
Caller org.apache.commons.io.input.NullReader

Questions:


  1.  Does this mean that one of these reader methods call another read() 
within NullReader?
  2.  Looking at the log below I wonder:
a) Why is AspectJ Weaver called twice?
b) What does this warning mean:

[AppClassLoader@18b4aac2] warning at 
examples\C:\Users\eraonel\git\java-runtime-stats\collector\src\test\java\examples\TypePatternsAspect.aj:5::0
 does not match because declaring type is java.io.Reader, if match desired use 
target(org.apache.commons.io.input.NullReader) [Xlint:unmatchedSuperTypeInCall]
see also: org\testng\shaded\com\google\gson\stream\JsonReader.java:1295::0

How can I get rid of this warning?

br,

//mike

[AppClassLoader@18b4aac2] info AspectJ Weaver Version 1.9.2 built on Wednesday 
Oct 24, 2018 at 15:43:33 GMT
[AppClassLoader@18b4aac2] info register classloader 
sun.misc.Launcher$AppClassLoader@18b4aac2
[AppClassLoader@18b4aac2] info using configuration 
/C:/Users/eraonel/git/java-runtime-stats/collector/target/test-classes/META-INF/aop3.xml
[AppClassLoader@18b4aac2] info register aspect examples.IllegalAccessAspect
[AppClassLoader@18b4aac2] info register aspect 
examples.DeprecatedMethodAccessAspect
[AppClassLoader@18b4aac2] info register aspect examples.TypePatternsAspect
[RemoteTestNG] detected TestNG version 6.14.6
[ExtClassLoader@fad74ee] info AspectJ Weaver Version 1.9.2 built on Wednesday 
Oct 24, 2018 at 15:43:33 GMT
[ExtClassLoader@fad74ee] info register classloader 
sun.misc.Launcher$ExtClassLoader@fad74ee
[ExtClassLoader@fad74ee] info no configuration found. Disabling weaver for 
class loader sun.misc.Launcher$ExtClassLoader@fad74ee
[AppClassLoader@18b4aac2] info processing reweavable type examples.Example4: 
examples\Example4.java
[AppClassLoader@18b4aac2] info successfully verified type 
examples.TypePatternsAspect exists.  Originates from 
examples\C:\Users\eraonel\git\java-runtime-stats\collector\src\test\java\examples\TypePatternsAspect.aj
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read())' in Type 'examples.Example4' 
(Example4.java:13) advised by before advice from 'examples.TypePatternsAspect' 
(TypePatternsAspect.aj:7)
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read(char[]))' in Type 
'examples.Example4' (Example4.java:15) advised by before advice from 
'examples.TypePatternsAspect' (TypePatternsAspect.aj:7)
[AppClassLoader@18b4aac2] warning at 
examples\C:\Users\eraonel\git\java-runtime-stats\collector\src\test\java\examples\TypePatternsAspect.aj:5::0
 does not match because declaring type is java.io.Reader, if match desired use 
target(org.apache.commons.io.input.NullReader) [Xlint:unmatchedSuperTypeInCall]
see also: org\testng\shaded\com\google\gson\stream\JsonReader.java:1295::0
[AppClassLoader@18b4aac2] weaveinfo Join point 'method-call(int 
org.apache.commons.io.input.NullReader.read(char[], int, int))' in Type 
'org.apache.commons.io.input.NullReader' (NullReader.java:194) advised by 
before advice from 'examples.TypePatternsAspect' (TypePatternsAspect.aj:7)
[AppClassLoader@18b4aac2] info processing reweavable type 
examples.TypePatternsAspect: examples\TypePatternsAspect.aj
Called org.apache.commons.io.input.NullReader@4281a26f
Called org.apache.commons.io.input.NullReader@4281a26f
Called org.apache.commons.io.input.NullReader@4281a26f
[AppClassLoader@18b4aac2] warning at 
examples\C:\Users\eraonel\git\java-runtime-stats\collector\src\test\java\examples\TypePatternsAspect.aj:5::0
 does not match because declaring type is java.io.Reader, if match desired use 
target(org.apache.commons.io.input.NullReader) [Xlint:unmatchedSuperTypeInCall]
see also: org\testng\reporters\FileStringBuffer.java:94::0




_______________________________________________
aspectj-users mailing list
aspectj-users@eclipse.org
To change your delivery options, retrieve your password, or unsubscribe from 
this list, visit
https://www.eclipse.org/mailman/listinfo/aspectj-users

Reply via email to