Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

NoSuchElementException with InheritInverseConfiguration and nested properties with 1.6.0 #3670

Copy link
Copy link

Description

@jjlharrison
Issue body actions

Expected behavior

No error as with 1.5.5.Final.

Actual behavior

src/main/java/example/mapstruct/ExampleMapper.java:9:17
java: Internal error in the mapping processor: java.util.NoSuchElementException
    at java.base/java.util.ArrayList$Itr.next(ArrayList.java:1053)
    at org.mapstruct.ap.internal.util.Collections.first(Collections.java:51)
    at org.mapstruct.ap.internal.model.NestedTargetPropertyMappingHolder$Builder.groupByTargetReferences(NestedTargetPropertyMappingHolder.java:365)
    at org.mapstruct.ap.internal.model.NestedTargetPropertyMappingHolder$Builder.build(NestedTargetPropertyMappingHolder.java:143)
    at org.mapstruct.ap.internal.model.BeanMappingMethod$Builder.handleDefinedNestedTargetMapping(BeanMappingMethod.java:1175)
    at org.mapstruct.ap.internal.model.BeanMappingMethod$Builder.handleDefinedMappings(BeanMappingMethod.java:1125)
    at org.mapstruct.ap.internal.model.BeanMappingMethod$Builder.build(BeanMappingMethod.java:292)
    at org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMappingMethods(MapperCreationProcessor.java:427)
    at org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMapper(MapperCreationProcessor.java:188)
    at org.mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:142)
    at org.mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:85)
    at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:400)
    at org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:380)
    at org.mapstruct.ap.MappingProcessor.processMapperElements(MappingProcessor.java:329)
    at org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:213)
    at org.jetbrains.jps.javac.APIWrappers$ProcessorWrapper.process(APIWrappers.java:209)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.jetbrains.jps.javac.APIWrappers$1.invoke(APIWrappers.java:366)
    at org.mapstruct.ap.MappingProcessor.process(Unknown Source)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1021)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:937)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1265)
    at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1380)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1279)
    at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:946)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
    at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
    at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:238)
    at org.jetbrains.jps.incremental.java.JavaBuilder.lambda$compileJava$2(JavaBuilder.java:516)
    at org.jetbrains.jps.incremental.java.JavaBuilder.invokeJavac(JavaBuilder.java:578)
    at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:514)
    at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:358)
    at org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:283)
    at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:237)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1609)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1238)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1389)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:1203)
    at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:971)
    at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:527)
    at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:236)
    at org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:135)
    at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:387)
    at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:212)
    at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:211)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1570)  

Steps to reproduce the problem

@Mapper
public abstract class ExampleMapper {
    @Mapping(target = "name", source = ".", qualifiedByName = "getFromFlatObject")
    public abstract ObjectWithFlatProperties map(ObjectWithNestedProperties objectA);

    @InheritInverseConfiguration
    @Mapping(target = "nestedObject.nestedName", source = "name")
    public abstract ObjectWithNestedProperties map(ObjectWithFlatProperties objectB);

    @Named("getFromFlatObject")
    protected String mapFromFlatObject(final ObjectWithNestedProperties object) {
        // Some logic here
        return object.getNestedObject().getNestedName();
    }
}
@Value
public class NestedObject {
    String nestedName;
}
@Value
public class ObjectWithFlatProperties {
    String name;
}
@Value
public class ObjectWithNestedProperties {
    NestedObject nestedObject;
}

MapStruct Version

1.6.0

Reactions are currently unavailable

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

Morty Proxy This is a proxified and sanitized view of the page, visit original site.