From 865371255a769f6a7415254b6585876227fee9db Mon Sep 17 00:00:00 2001 From: Filip Hrisafov Date: Sat, 11 Feb 2017 19:09:56 +0100 Subject: [PATCH] #1057 Add forged named based parameter to distinguish between our methods that MapStruct has to create and methods that we create for the internal framework --- .../model/AbstractMappingMethodBuilder.java | 3 ++- .../ap/internal/model/BeanMappingMethod.java | 2 +- .../ap/internal/model/PropertyMapping.java | 17 +++++++++++++++-- .../ap/internal/model/source/ForgedMethod.java | 13 +++++++++---- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/processor/src/main/java/org/mapstruct/ap/internal/model/AbstractMappingMethodBuilder.java b/processor/src/main/java/org/mapstruct/ap/internal/model/AbstractMappingMethodBuilder.java index 5be3fb186e..1c34d85ad7 100644 --- a/processor/src/main/java/org/mapstruct/ap/internal/model/AbstractMappingMethodBuilder.java +++ b/processor/src/main/java/org/mapstruct/ap/internal/model/AbstractMappingMethodBuilder.java @@ -69,7 +69,8 @@ Assignment forgeMapping(SourceRHS sourceRHS, Type sourceType, Type targetType) { shouldUsePropertyNamesInHistory(), sourceRHS.getSourceErrorMessagePart() ), - null + null, + true ); return createForgedBeanAssignment( sourceRHS, forgedMethod ); diff --git a/processor/src/main/java/org/mapstruct/ap/internal/model/BeanMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/internal/model/BeanMappingMethod.java index 314659d526..b9ba81639c 100644 --- a/processor/src/main/java/org/mapstruct/ap/internal/model/BeanMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/internal/model/BeanMappingMethod.java @@ -664,7 +664,7 @@ private void reportErrorForUnmappedTargetPropertiesIfRequired() { ReportingPolicyPrism unmappedTargetPolicy = getUnmappedTargetPolicy(); //we handle automapping forged methods differently than the usual source ones. in - if ( method instanceof ForgedMethod && ( (ForgedMethod) method ).isAutoMapping() ) { + if ( method instanceof ForgedMethod && ( (ForgedMethod) method ).isForgedNamedBased() ) { ForgedMethod forgedMethod = (ForgedMethod) this.method; if ( targetProperties.isEmpty() || !unprocessedTargetProperties.isEmpty() ) { diff --git a/processor/src/main/java/org/mapstruct/ap/internal/model/PropertyMapping.java b/processor/src/main/java/org/mapstruct/ap/internal/model/PropertyMapping.java index e036e1d906..6e3bcd30db 100644 --- a/processor/src/main/java/org/mapstruct/ap/internal/model/PropertyMapping.java +++ b/processor/src/main/java/org/mapstruct/ap/internal/model/PropertyMapping.java @@ -188,6 +188,7 @@ public static class PropertyMappingBuilder extends MappingBuilderBase additionalParameters, ParameterProvidedMethods parameterProvidedMethods, ForgedMethodHistory history, - MappingOptions mappingOptions) { + MappingOptions mappingOptions, boolean forgedNameBased) { String sourceParamName = Strings.decapitalize( sourceType.getName() ); String sourceParamSafeName = Strings.getSaveVariableName( sourceParamName ); @@ -116,6 +119,7 @@ public ForgedMethod(String name, Type sourceType, Type returnType, MapperConfigu this.history = history; this.mappingOptions = mappingOptions == null ? MappingOptions.empty() : mappingOptions; this.mappingOptions.initWithParameter( sourceParameter ); + this.forgedNameBased = forgedNameBased; } /** @@ -138,6 +142,7 @@ public ForgedMethod(String name, ForgedMethod forgedMethod) { this.contextProvidedMethods = forgedMethod.contextProvidedMethods; this.name = name; + this.forgedNameBased = forgedMethod.forgedNameBased; } @Override @@ -224,8 +229,8 @@ public ForgedMethodHistory getHistory() { return history; } - public boolean isAutoMapping() { - return mappingOptions.getValueMappings().isEmpty(); + public boolean isForgedNamedBased() { + return forgedNameBased; } public void addThrownTypes(List thrownTypesToAdd) {