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); }