From 3036b2f2a736d6826354b28ed08c3a5384b7dca5 Mon Sep 17 00:00:00 2001 From: Gunnar Morling Date: Mon, 20 May 2013 13:25:46 +0200 Subject: [PATCH] #10 Making sure error is raised in case property can't be reverse-mapped --- .../mapstruct/ap/MapperGenerationVisitor.java | 71 ++++++++++--------- 1 file changed, 38 insertions(+), 33 deletions(-) diff --git a/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java b/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java index 0fee23e4d..b0af47ee9 100644 --- a/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java +++ b/processor/src/main/java/org/mapstruct/ap/MapperGenerationVisitor.java @@ -236,45 +236,50 @@ public class MapperGenerationVisitor extends ElementKindVisitor6 { } private void reportErrorIfPropertyCanNotBeMapped(Method method, Method reverseMethod, MappedProperty property, Method propertyMappingMethod, Method reversePropertyMappingMethod, Conversion conversion) { - if ( property.getSourceType().equals( property.getTargetType() ) || + if ( property.getSourceType().equals( property.getTargetType() ) ) { + return; + } + + //no mapping method nor conversion nor collection with default implementation + if ( !( propertyMappingMethod != null || - conversion != null || - ( property.getTargetType().isCollectionType() && property.getTargetType() - .getCollectionImplementationType() != null ) ) { + conversion != null || + ( property.getTargetType().isCollectionType() && property.getTargetType() + .getCollectionImplementationType() != null ) ) ) { + + reportError( + String.format( + "Can't map property \"%s %s\" to \"%s %s\".", + property.getSourceType(), + property.getSourceName(), + property.getTargetType(), + property.getTargetName() + ), + method.getExecutable() + ); + } + + if ( reverseMethod == null ) { return; } - reportError( - String.format( - "Can't map property \"%s %s\" to \"%s %s\".", - property.getSourceType(), - property.getSourceName(), - property.getTargetType(), - property.getTargetName() - ), - method.getExecutable() - ); - - mappingErroneous = true; - - if ( reverseMethod == null || + if ( !( reversePropertyMappingMethod != null || - conversion != null || - ( property.getSourceType().isCollectionType() && property.getSourceType() - .getCollectionImplementationType() == null ) ) { - return; - } + conversion != null || + ( property.getSourceType().isCollectionType() && property.getSourceType() + .getCollectionImplementationType() != null ) ) ) { - reportError( - String.format( - "Can't map property \"%s %s\" to \"%s %s\".", - property.getTargetType(), - property.getTargetName(), - property.getSourceType(), - property.getSourceName() - ), - reverseMethod.getExecutable() - ); + reportError( + String.format( + "Can't map property \"%s %s\" to \"%s %s\".", + property.getTargetType(), + property.getTargetName(), + property.getSourceType(), + property.getSourceName() + ), + reverseMethod.getExecutable() + ); + } } private String getIterableConversionString(Conversions conversions, Type sourceElementType, Type targetElementType, boolean isToConversion) {