From 1db853137c417dafcb1c669f80a1d8c5bb10540a Mon Sep 17 00:00:00 2001 From: Andreas Gudian Date: Fri, 28 Feb 2014 21:50:27 +0100 Subject: [PATCH] #136 Some clean-up/documentation --- .../mapstruct/ap/model/MethodReference.java | 30 +++++++++---------- .../ap/processor/MapperCreationProcessor.java | 15 ++++------ 2 files changed, 20 insertions(+), 25 deletions(-) diff --git a/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java b/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java index cf359bc55..abb849c4a 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java +++ b/processor/src/main/java/org/mapstruct/ap/model/MethodReference.java @@ -18,12 +18,12 @@ */ package org.mapstruct.ap.model; +import java.util.Collections; import java.util.Set; import org.mapstruct.ap.model.common.ConversionContext; import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; -import org.mapstruct.ap.model.source.Method; import org.mapstruct.ap.model.source.SourceMethod; import org.mapstruct.ap.model.source.builtin.BuiltInMethod; @@ -35,7 +35,7 @@ import org.mapstruct.ap.model.source.builtin.BuiltInMethod; public class MethodReference extends MappingMethod { private final MapperReference declaringMapper; - private final Type importType; + private final Set importTypes; /** * A reference to another mapping method in case this is a two-step mapping, e.g. from {@code JAXBElement} to @@ -51,25 +51,27 @@ public class MethodReference extends MappingMethod { */ private final String contextParam; - public MethodReference(SourceMethod method, MapperReference declaringMapper) { + /** + * Creates a new reference to the given method. + * @param method the target method of the reference + * @param declaringMapper the method declaring the mapper; {@code null} if the current mapper itself + * @param targetType in case the referenced method has a parameter for passing the target type, the given + * target type, otherwise {@code null} + */ + public MethodReference(SourceMethod method, MapperReference declaringMapper, Type targetType) { super( method ); this.declaringMapper = declaringMapper; this.contextParam = null; - this.importType = null; + this.importTypes = targetType == null ? + Collections.emptySet() : + Collections.singleton( targetType ); } public MethodReference(BuiltInMethod method, ConversionContext contextParam) { super( method ); this.declaringMapper = null; this.contextParam = method.getContextParameter( contextParam ); - this.importType = null; - } - - public MethodReference(Method method, MapperReference declaringMapper, Type importType) { - super( method ); - this.declaringMapper = declaringMapper; - this.contextParam = null; - this.importType = importType; + this.importTypes = Collections.emptySet(); } public MapperReference getDeclaringMapper() { @@ -107,9 +109,7 @@ public class MethodReference extends MappingMethod { @Override public Set getImportTypes() { Set imported = super.getImportTypes(); - if ( importType != null ) { - imported.add( importType ); - } + imported.addAll( importTypes ); if ( methodRefChild != null ) { imported.addAll( methodRefChild.getImportTypes() ); } 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 e858b29db..a9b8cf467 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java @@ -259,19 +259,13 @@ public class MapperCreationProcessor implements ModelElementProcessor paramterTypes = + List parameterTypes = MethodSelectors.getParameterTypes( typeFactory, method.getParameters(), null, returnType ); - if ( method.matches( paramterTypes, returnType ) ) { + if ( method.matches( parameterTypes, returnType ) ) { if ( result == null ) { MapperReference mapperReference = findMapperReference( mapperReferences, method ); - - result = - new MethodReference( - method, - mapperReference, - SourceMethod.containsTargetTypeParameter( method.getParameters() ) - ? returnType : null ); + result = new MethodReference( method, mapperReference, null ); } else { messager.printMessage( @@ -1155,7 +1149,8 @@ public class MapperCreationProcessor implements ModelElementProcessor mapperReferences, SourceMethod method) {