diff --git a/processor/src/main/java/org/mapstruct/ap/model/FactoryMethod.java b/processor/src/main/java/org/mapstruct/ap/model/FactoryMethod.java index 6deb8a164..f949336a4 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/FactoryMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/FactoryMethod.java @@ -18,12 +18,10 @@ */ package org.mapstruct.ap.model; -import java.beans.Introspector; import java.util.HashSet; import java.util.Set; import org.mapstruct.ap.model.source.Method; -import org.mapstruct.ap.util.Strings; import org.mapstruct.ap.model.common.Type; import org.mapstruct.ap.model.common.ModelElement; @@ -36,13 +34,13 @@ public class FactoryMethod extends ModelElement { private final String name; private final boolean hasDeclaringMapper; - private final Type declaringMapper; + private final MapperReference declaringMapper; private final Type returnType; - public FactoryMethod(Method method) { + public FactoryMethod( Method method, MapperReference declaringMapper ) { this.name = method.getName(); this.hasDeclaringMapper = method.getDeclaringMapper() != null; - this.declaringMapper = method.getDeclaringMapper(); + this.declaringMapper = declaringMapper; this.returnType = method.getReturnType(); } @@ -51,11 +49,11 @@ public class FactoryMethod extends ModelElement { } public Type getDeclaringMapper() { - return declaringMapper; + return declaringMapper.getMapperType(); } public String getMapperVariableName() { - return Strings.getSaveVariableName( Introspector.decapitalize( declaringMapper.getName() ) ); + return declaringMapper.getVariableName(); } @Override diff --git a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java index 8036bece7..0717296a5 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java @@ -209,14 +209,23 @@ public class MapperCreationProcessor implements ModelElementProcessor methods, Type returnType) { + private FactoryMethod getFactoryMethod(List mapperReferences, List methods, + Type returnType) { FactoryMethod result = null; for ( Method method : methods ) { if ( !method.requiresImplementation() && !method.isIterableMapping() && !method.isMapMapping() && method.getMappings().isEmpty() && method.getParameters().isEmpty() ) { if ( method.getReturnType().equals( returnType ) ) { if ( result == null ) { - result = new FactoryMethod(method); + MapperReference mapperReference = null; + for ( MapperReference ref : mapperReferences ) { + if ( ref.getMapperType().equals( method.getDeclaringMapper() ) ) { + mapperReference = ref; + break; + } + } + + result = new FactoryMethod(method, mapperReference); } else { messager.printMessage( @@ -379,7 +388,7 @@ public class MapperCreationProcessor implements ModelElementProcessor