From e4b0d53561860983674634363e9e4b7028d55db2 Mon Sep 17 00:00:00 2001 From: sjaakd Date: Mon, 20 Oct 2014 21:50:10 +0200 Subject: [PATCH] #325 bookkeeping issue in reverse mapping --- .../ap/processor/MapperCreationProcessor.java | 21 ++++++++++++------- .../ap/test/reverse/SourceTargetMapper.java | 2 +- .../reverse/SourceTargetMapperAmbiguous1.java | 2 +- .../reverse/SourceTargetMapperAmbiguous2.java | 2 +- .../reverse/SourceTargetMapperAmbiguous3.java | 2 +- ...ourceTargetMapperErroneouslyAnnotated.java | 2 +- .../SourceTargetMapperNonMatchingName.java | 2 +- 7 files changed, 19 insertions(+), 14 deletions(-) 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 a9db5c2b6..05804980f 100644 --- a/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java +++ b/processor/src/main/java/org/mapstruct/ap/processor/MapperCreationProcessor.java @@ -312,12 +312,6 @@ public class MapperCreationProcessor implements ModelElementProcessor> newMappings = new HashMap>(); if ( reverseMappingMethod != null && !reverseMappingMethod.getMappings().isEmpty() ) { - // define all the base mappings based on its forward counterpart - newMappings.putAll( reverse( reverseMappingMethod.getMappings() ) ); + // define all the base mappings based on its forward counterpart. + // however, remove the mappings that are designated as constant, expression or ignore. + // They are characterized by the key "" + + Map> reverseMappings = new HashMap>(); + reverseMappings.putAll( reverseMappingMethod.getMappings() ); + List nonSourceMappings = method.getMappings().get( "" ); + if (nonSourceMappings != null ) { + for (Mapping nonSourceMapping : nonSourceMappings) { + reverseMappings.remove( nonSourceMapping.getTargetName() ); + } + } + newMappings.putAll( reverse( reverseMappings ) ); } if ( method.getMappings().isEmpty() ) { diff --git a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapper.java b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapper.java index 82a07d590..50999e8b4 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapper.java @@ -49,7 +49,7 @@ public interface SourceTargetMapper { @InheritInverseConfiguration(name = "forward") @Mappings({ @Mapping(target = "someConstantDownstream", constant = "test"), - @Mapping(source = "propertyToIgnoreDownstream", ignore = true) + @Mapping(target = "propertyToIgnoreDownstream", ignore = true) }) Source reverse(Target target); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous1.java b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous1.java index d167fa88f..47b72789c 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous1.java +++ b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous1.java @@ -49,7 +49,7 @@ public interface SourceTargetMapperAmbiguous1 { @InheritInverseConfiguration @Mappings({ @Mapping(target = "someConstantDownstream", constant = "test"), - @Mapping(source = "propertyToIgnoreDownstream", ignore = true) + @Mapping(target = "propertyToIgnoreDownstream", ignore = true) }) Source reverse(Target target); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous2.java b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous2.java index e9b75adfe..2dc93a068 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous2.java +++ b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous2.java @@ -49,7 +49,7 @@ public interface SourceTargetMapperAmbiguous2 { @InheritInverseConfiguration(name = "blah") @Mappings({ @Mapping(target = "someConstantDownstream", constant = "test"), - @Mapping(source = "propertyToIgnoreDownstream", ignore = true) + @Mapping(target = "propertyToIgnoreDownstream", ignore = true) }) Source reverse(Target target); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous3.java b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous3.java index 36c631973..4ffe9d831 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous3.java +++ b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperAmbiguous3.java @@ -50,7 +50,7 @@ public interface SourceTargetMapperAmbiguous3 { @InheritInverseConfiguration(name = "forward") @Mappings({ @Mapping(target = "someConstantDownstream", constant = "test"), - @Mapping(source = "propertyToIgnoreDownstream", ignore = true) + @Mapping(target = "propertyToIgnoreDownstream", ignore = true) }) Source reverse(Target target); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperErroneouslyAnnotated.java b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperErroneouslyAnnotated.java index dd8679424..960e76bee 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperErroneouslyAnnotated.java +++ b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperErroneouslyAnnotated.java @@ -42,7 +42,7 @@ public interface SourceTargetMapperErroneouslyAnnotated { @InheritInverseConfiguration(name = "forward") @Mappings({ @Mapping(target = "someConstantDownstream", constant = "test"), - @Mapping(source = "propertyToIgnoreDownstream", ignore = true) + @Mapping(target = "propertyToIgnoreDownstream", ignore = true) }) Source reverse(Target target); diff --git a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperNonMatchingName.java b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperNonMatchingName.java index 005021ead..4b2a03242 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperNonMatchingName.java +++ b/processor/src/test/java/org/mapstruct/ap/test/reverse/SourceTargetMapperNonMatchingName.java @@ -42,7 +42,7 @@ public interface SourceTargetMapperNonMatchingName { @InheritInverseConfiguration(name = "blah") @Mappings({ @Mapping(target = "someConstantDownstream", constant = "test"), - @Mapping(source = "propertyToIgnoreDownstream", ignore = true) + @Mapping(target = "propertyToIgnoreDownstream", ignore = true) }) Source reverse(Target target); }