Bug 423795

Summary: NullPointerException in EclipseSourceContext while weaving test-classes with maven
Product: [Tools] AspectJ Reporter: Thomas Vestergaard Trolle <thomas>
Component: CompilerAssignee: aspectj inbox <aspectj-inbox>
Status: NEW --- QA Contact:
Severity: critical    
Priority: P3    
Version: 1.7.4   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:

Description Thomas Vestergaard Trolle CLA 2013-12-11 07:13:29 EST
When I set showWeaveInfo=true - I get an error during the weaving of my test-classes, I get a NullPointerException. (I do have problems with the weaving of the concerned class - on other machines.)

Via debugging have I been able to determine, that it is the weaving of a persist-call on an EntityManager. The main difference with this call to "persist" compared to the others in my test-classes, I have been able to find, is that it for some reason is handled via an EclipseSourceContext rather than a SourceContextImpl.

The stack-trace:
java.lang.NullPointerException
	at org.aspectj.ajdt.internal.core.builder.EclipseSourceContext.getSourceFile(EclipseSourceContext.java:49)
	at org.aspectj.ajdt.internal.core.builder.EclipseSourceContext.makeSourceLocation(EclipseSourceContext.java:57)
	at org.aspectj.weaver.bcel.BcelShadow.getSourceLocation(BcelShadow.java:3383)
	at org.aspectj.weaver.bcel.BcelWorld.reportWeavingMessage(BcelWorld.java:197)
	at org.aspectj.weaver.bcel.BcelWorld.reportMatch(BcelWorld.java:141)
	at org.aspectj.weaver.Shadow.implementMungers(Shadow.java:633)
	at org.aspectj.weaver.Shadow.implement(Shadow.java:547)
	at org.aspectj.weaver.bcel.BcelClassWeaver.implement(BcelClassWeaver.java:3187)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:496)
	at org.aspectj.weaver.bcel.BcelClassWeaver.weave(BcelClassWeaver.java:100)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1691)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveWithoutDump(BcelWeaver.java:1635)
	at org.aspectj.weaver.bcel.BcelWeaver.weaveAndNotify(BcelWeaver.java:1400)
	at org.aspectj.weaver.bcel.BcelWeaver.weave(BcelWeaver.java:1186)
	at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.weaveQueuedEntries(AjPipeliningCompilerAdapter.java:514)
	at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.queueForWeaving(AjPipeliningCompilerAdapter.java:447)
	at org.aspectj.ajdt.internal.compiler.AjPipeliningCompilerAdapter.afterProcessing(AjPipeliningCompilerAdapter.java:432)
	at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc$after$org_aspectj_ajdt_internal_compiler_CompilerAdapter$5$6b855184(CompilerAdapter.aj:98)
	at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:805)
	at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:468)
	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(AjBuildManager.java:1028)
	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.performBuild(AjBuildManager.java:272)
	at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(AjBuildManager.java:185)
	at org.aspectj.ajdt.ajc.AjdtCommand.doCommand(AjdtCommand.java:112)
	at org.aspectj.ajdt.ajc.AjdtCommand.runCommand(AjdtCommand.java:60)
	at org.aspectj.tools.ajc.Main.run(Main.java:371)
	at org.aspectj.tools.ajc.Main.runMain(Main.java:248)
	at org.codehaus.mojo.aspectj.AbstractAjcCompiler.execute(AbstractAjcCompiler.java:405)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

I have set the severity to critical, as the weave-info is critical to debugging defuncts in the weaving.