Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NullPointerException using Mapstruct 1.1.0.Final with Maven #1278

Closed
Alicja-Majewska opened this issue Aug 23, 2017 · 1 comment
Closed

NullPointerException using Mapstruct 1.1.0.Final with Maven #1278

Alicja-Majewska opened this issue Aug 23, 2017 · 1 comment

Comments

@Alicja-Majewska
Copy link

Alicja-Majewska commented Aug 23, 2017

Hello,
I have faced a problem with including MappingConfiguration and extending another mapper at the same time. My mapper is pretty complicated, it contains multiple nested mappers. I have configuration collected in interface with @MapperConfig annotation. It works nicely with mapper MaperA in one project - everything is generated without any problems. But I want to use the same configutation in MaperB, that extends MaperA. When I try to do this, I receive a NullPointerException, even when MaperB does not override any Mappings. Here is a stacktrace:

[ERROR] diagnostic: MaperB:11: Internal error in the mapping processor: java.lang.NullPointerException       
 at org.mapstruct.ap.internal.model.source.SourceReference.copyForInheritanceTo(SourceReference.java:286)        
 at org.mapstruct.ap.internal.model.source.Mapping.copyForInheritanceTo(Mapping.java:360)   
 at org.mapstruct.ap.internal.model.source.MappingOptions.applyInheritedOptions(MappingOptions.java:179)         
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.mergeInheritedOptions(MapperCreationProcessor.java:413)     
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMappingMethods(MapperCreationProcessor.java:263)      
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMapper(MapperCreationProcessor.java:146)         
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:117)        
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:76)    
 at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:270)         
 at org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:250)   
 at org.mapstruct.ap.MappingProcessor.processMapperElements(MappingProcessor.java:216)   
 at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:155)    
 at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:639)         
 at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:568)      
 at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:713)          
 at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:999)         
 at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:739)         
 at com.sun.tools.javac.main.Main.compile(Main.java:365)         
 at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:127)      
 at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.executeWithExceptionsHandled(AbstractAnnotationProcessorMojo.java:545)        
 at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:285)    
 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
[ERROR] diagnostic: MaperB:11: Internal error in the mapping processor: java.lang.NullPointerException       
 at org.mapstruct.ap.internal.model.source.SourceReference.copyForInheritanceTo(SourceReference.java:286)        
 at org.mapstruct.ap.internal.model.source.Mapping.copyForInheritanceTo(Mapping.java:360)   
 at org.mapstruct.ap.internal.model.source.MappingOptions.applyInheritedOptions(MappingOptions.java:179)         
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.mergeInheritedOptions(MapperCreationProcessor.java:413)     
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMappingMethods(MapperCreationProcessor.java:263)      
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMapper(MapperCreationProcessor.java:146)         
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:117)        
 at org.mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:76)    
 at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:270)         
 at org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:250)   
 at org.mapstruct.ap.MappingProcessor.processMapperElements(MappingProcessor.java:216)   
 at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:155)    
 at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:639)         
 at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:568)      
 at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:713)          
 at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:999)         
 at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:739)         
 at com.sun.tools.javac.main.Main.compile(Main.java:365)         
 at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:127)      
 at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.executeWithExceptionsHandled(AbstractAnnotationProcessorMojo.java:545)        
 at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:285)    
 at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)

 at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)      
 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:116)     
 at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)         
 at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)        
 at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)         
 at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)       
 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)    
 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)     
 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)      
 at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)        
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)        
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)   
 at java.lang.reflect.Method.invoke(Method.java:611)     
 at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)          
 at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)     
 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)        
 at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] error on execute: error during compilation

Could you help me or recommend some workaround?
Thanks in advance

@filiphr
Copy link
Member

filiphr commented Aug 23, 2017

This is the exact same problem as in #1180. The lines differ, but the content is the same at those lines.

@Alicja-Majewska I'll close this issue, you should follow the linked one instead. @sjaakd said that the issue occurs when you have shared config and non existing properties. Did you get something else before this line? If you are able to provide us with a small example that reproduces the error we would be really grateful.

As for figuring it out. The best would be to make add the mapstruct-processor as a provided dependency, set a break point on the line that throws the NPE and catch it. With IntelliJ you can run the compile goal in debug mode. Then you can see what exactly is null there. I would presume it is either sourceParam, sourceParam.getType() or parameter

@sjaakd it looks like the issue didn't come from 1.2.0, but it was there before 😄 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants