From 8ea20d43150f64ca60f83a0d20f9bbb921e6f713 Mon Sep 17 00:00:00 2001 From: sjaakd Date: Mon, 24 Nov 2014 21:43:12 +0100 Subject: [PATCH] #295 Replacing MapNullToDefault with NullValueMapping --- .../src/main/java/org/mapstruct/Mapper.java | 2 +- .../main/java/org/mapstruct/MapperConfig.java | 2 +- ...llToDefault.java => NullValueMapping.java} | 6 ++-- ...egy.java => NullValueMappingStrategy.java} | 17 +++++----- .../mapstruct/ap/model/BeanMappingMethod.java | 4 +-- .../ap/model/IterableMappingMethod.java | 4 +-- .../mapstruct/ap/model/MapMappingMethod.java | 4 +-- ...ava => NullValueMappingStrategyPrism.java} | 6 ++-- .../mapstruct/ap/prism/PrismGenerator.java | 4 +-- .../org/mapstruct/ap/util/MapperConfig.java | 32 +++++++++---------- .../ap/test/mapnulltodefault/CarMapper.java | 10 +++--- .../CarMapperSettingOnConfig.java | 8 ++--- .../CarMapperSettingOnMapper.java | 10 +++--- .../test/mapnulltodefault/CentralConfig.java | 4 +-- .../ap/test/prism/EnumPrismsTest.java | 8 ++--- 15 files changed, 60 insertions(+), 61 deletions(-) rename core-common/src/main/java/org/mapstruct/{MapNullToDefault.java => NullValueMapping.java} (89%) rename core-common/src/main/java/org/mapstruct/{MapNullToDefaultStrategy.java => NullValueMappingStrategy.java} (76%) rename processor/src/main/java/org/mapstruct/ap/prism/{MapNullToDefaultStrategyPrism.java => NullValueMappingStrategyPrism.java} (91%) diff --git a/core-common/src/main/java/org/mapstruct/Mapper.java b/core-common/src/main/java/org/mapstruct/Mapper.java index 741483aa9..cd3e7eab4 100644 --- a/core-common/src/main/java/org/mapstruct/Mapper.java +++ b/core-common/src/main/java/org/mapstruct/Mapper.java @@ -109,5 +109,5 @@ public @interface Mapper { * * @return The strategy applied when determining whether to return null or an empty object, list or map. */ - MapNullToDefaultStrategy mapNullToDefaultStrategy() default MapNullToDefaultStrategy.DEFAULT; + NullValueMappingStrategy nullValueMappingStrategy() default NullValueMappingStrategy.DEFAULT; } diff --git a/core-common/src/main/java/org/mapstruct/MapperConfig.java b/core-common/src/main/java/org/mapstruct/MapperConfig.java index 336d30d42..f120ad546 100644 --- a/core-common/src/main/java/org/mapstruct/MapperConfig.java +++ b/core-common/src/main/java/org/mapstruct/MapperConfig.java @@ -87,5 +87,5 @@ public @interface MapperConfig { * * @return The strategy applied when determining whether to return null or an empty object, list or map. */ - MapNullToDefaultStrategy mapNullToDefaultStrategy() default MapNullToDefaultStrategy.DEFAULT; + NullValueMappingStrategy nullValueMappingStrategy() default NullValueMappingStrategy.DEFAULT; } diff --git a/core-common/src/main/java/org/mapstruct/MapNullToDefault.java b/core-common/src/main/java/org/mapstruct/NullValueMapping.java similarity index 89% rename from core-common/src/main/java/org/mapstruct/MapNullToDefault.java rename to core-common/src/main/java/org/mapstruct/NullValueMapping.java index ed95c0020..ad1e26db4 100644 --- a/core-common/src/main/java/org/mapstruct/MapNullToDefault.java +++ b/core-common/src/main/java/org/mapstruct/NullValueMapping.java @@ -38,9 +38,9 @@ import java.lang.annotation.Target; * * @author Sjaak Derksen */ -@Target( { ElementType.METHOD, ElementType.TYPE } ) +@Target( { ElementType.METHOD } ) @Retention( RetentionPolicy.SOURCE ) -public @interface MapNullToDefault { +public @interface NullValueMapping { - MapNullToDefaultStrategy value() default MapNullToDefaultStrategy.MAP_NULL_TO_DEFAULT; + NullValueMappingStrategy value() default NullValueMappingStrategy.RETURN_DEFAULT; } diff --git a/core-common/src/main/java/org/mapstruct/MapNullToDefaultStrategy.java b/core-common/src/main/java/org/mapstruct/NullValueMappingStrategy.java similarity index 76% rename from core-common/src/main/java/org/mapstruct/MapNullToDefaultStrategy.java rename to core-common/src/main/java/org/mapstruct/NullValueMappingStrategy.java index f266359b1..826653a71 100644 --- a/core-common/src/main/java/org/mapstruct/MapNullToDefaultStrategy.java +++ b/core-common/src/main/java/org/mapstruct/NullValueMappingStrategy.java @@ -23,12 +23,12 @@ package org.mapstruct; * * @author Sjaak Derksen */ -public enum MapNullToDefaultStrategy { +public enum NullValueMappingStrategy { /** * A null source argument of a mapping method will be mapped to a null target result */ - MAP_NULL_TO_NULL, + RETURN_NULL, /** * A null source argument of a mapping method will be mapped to a default target result @@ -40,17 +40,16 @@ public enum MapNullToDefaultStrategy { *
  • For an map mapping this means a {@link java.util.Collections#emptyMap() } will be returned<\li> * */ - MAP_NULL_TO_DEFAULT, + RETURN_DEFAULT, /** - * When given via {@link Mapper#mapNullToDefaultStrategy()}, causes the setting specified via - * {@link MapperConfig#mapNullToDefaultStrategy()} to be applied, if present. + * When given via {@link Mapper#nullValueMappingStrategy() ()}, causes the setting specified via + * {@link MapperConfig#nullValueMappingStrategy() ()} to be applied, if present. *

    - * When given via {@link MapNullToDefault#mapNullToDefaultStrategy()}, causes the setting specified via - * {@link Mapper#mapNullToDefaultStrategy()} to be applied, if present. + * When given via {@link NullValueMapping#value() ()}, causes the setting specified via + * {@link Mapper#nullValueMappingStrategy() ()} to be applied, if present. *

    - * Otherwise causes - * {@link #MAP_NULL_TO_NULL} to be applied. + * Otherwise causes {@link #RETURN_NULL} to be applied. */ DEFAULT; } diff --git a/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java index c2575d26d..4dbf52d70 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/BeanMappingMethod.java @@ -40,7 +40,7 @@ import org.mapstruct.ap.model.source.Mapping; import org.mapstruct.ap.model.source.SourceMethod; import org.mapstruct.ap.model.source.SourceReference; import org.mapstruct.ap.option.ReportingPolicy; -import org.mapstruct.ap.prism.MapNullToDefaultPrism; +import org.mapstruct.ap.prism.NullValueMappingPrism; import org.mapstruct.ap.prism.CollectionMappingStrategyPrism; import org.mapstruct.ap.util.Executables; import org.mapstruct.ap.util.MapperConfig; @@ -100,7 +100,7 @@ public class BeanMappingMethod extends MappingMethod { reportErrorForUnmappedTargetPropertiesIfRequired(); // mapNullToDefault - MapNullToDefaultPrism prism = MapNullToDefaultPrism.getInstanceOn( method.getExecutable() ); + NullValueMappingPrism prism = NullValueMappingPrism.getInstanceOn( method.getExecutable() ); boolean mapNullToDefault = MapperConfig.getInstanceOn( ctx.getMapperTypeElement() ).isMapToDefault( prism ); diff --git a/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java index 08b935e83..61cfd1743 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/IterableMappingMethod.java @@ -31,7 +31,7 @@ import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; import org.mapstruct.ap.model.common.TypeFactory; import org.mapstruct.ap.model.source.Method; -import org.mapstruct.ap.prism.MapNullToDefaultPrism; +import org.mapstruct.ap.prism.NullValueMappingPrism; import org.mapstruct.ap.util.MapperConfig; import org.mapstruct.ap.util.Strings; @@ -109,7 +109,7 @@ public class IterableMappingMethod extends MappingMethod { assignment = new SetterWrapper( assignment, method.getThrownTypes() ); // mapNullToDefault - MapNullToDefaultPrism prism = MapNullToDefaultPrism.getInstanceOn( method.getExecutable() ); + NullValueMappingPrism prism = NullValueMappingPrism.getInstanceOn( method.getExecutable() ); boolean mapNullToDefault = MapperConfig.getInstanceOn( ctx.getMapperTypeElement() ).isMapToDefault( prism ); diff --git a/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java b/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java index 73fc211a0..ccfdfbe19 100644 --- a/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java +++ b/processor/src/main/java/org/mapstruct/ap/model/MapMappingMethod.java @@ -31,7 +31,7 @@ import org.mapstruct.ap.model.common.Parameter; import org.mapstruct.ap.model.common.Type; import org.mapstruct.ap.model.common.TypeFactory; import org.mapstruct.ap.model.source.Method; -import org.mapstruct.ap.prism.MapNullToDefaultPrism; +import org.mapstruct.ap.prism.NullValueMappingPrism; import org.mapstruct.ap.util.MapperConfig; import org.mapstruct.ap.util.Strings; @@ -141,7 +141,7 @@ public class MapMappingMethod extends MappingMethod { } // mapNullToDefault - MapNullToDefaultPrism prism = MapNullToDefaultPrism.getInstanceOn( method.getExecutable() ); + NullValueMappingPrism prism = NullValueMappingPrism.getInstanceOn( method.getExecutable() ); boolean mapNullToDefault = MapperConfig.getInstanceOn( ctx.getMapperTypeElement() ).isMapToDefault( prism ); diff --git a/processor/src/main/java/org/mapstruct/ap/prism/MapNullToDefaultStrategyPrism.java b/processor/src/main/java/org/mapstruct/ap/prism/NullValueMappingStrategyPrism.java similarity index 91% rename from processor/src/main/java/org/mapstruct/ap/prism/MapNullToDefaultStrategyPrism.java rename to processor/src/main/java/org/mapstruct/ap/prism/NullValueMappingStrategyPrism.java index 56584c7c3..8dbcb77c8 100644 --- a/processor/src/main/java/org/mapstruct/ap/prism/MapNullToDefaultStrategyPrism.java +++ b/processor/src/main/java/org/mapstruct/ap/prism/NullValueMappingStrategyPrism.java @@ -23,9 +23,9 @@ package org.mapstruct.ap.prism; * * @author Sjaak Derksen */ -public enum MapNullToDefaultStrategyPrism { +public enum NullValueMappingStrategyPrism { - MAP_NULL_TO_NULL, - MAP_NULL_TO_DEFAULT, + RETURN_NULL, + RETURN_DEFAULT, DEFAULT; } diff --git a/processor/src/main/java/org/mapstruct/ap/prism/PrismGenerator.java b/processor/src/main/java/org/mapstruct/ap/prism/PrismGenerator.java index 2750f732c..f8b01fcb8 100644 --- a/processor/src/main/java/org/mapstruct/ap/prism/PrismGenerator.java +++ b/processor/src/main/java/org/mapstruct/ap/prism/PrismGenerator.java @@ -27,7 +27,7 @@ import org.mapstruct.DecoratedWith; import org.mapstruct.InheritInverseConfiguration; import org.mapstruct.IterableMapping; import org.mapstruct.MapMapping; -import org.mapstruct.MapNullToDefault; +import org.mapstruct.NullValueMapping; import org.mapstruct.Mapper; import org.mapstruct.MapperConfig; import org.mapstruct.Mapping; @@ -53,7 +53,7 @@ import org.mapstruct.TargetType; @GeneratePrism(value = MapperConfig.class, publicAccess = true), @GeneratePrism(value = InheritInverseConfiguration.class, publicAccess = true), @GeneratePrism( value = Qualifier.class, publicAccess = true ), - @GeneratePrism( value = MapNullToDefault.class, publicAccess = true ), + @GeneratePrism( value = NullValueMapping.class, publicAccess = true ), // external types @GeneratePrism(value = XmlElementDecl.class, publicAccess = true) diff --git a/processor/src/main/java/org/mapstruct/ap/util/MapperConfig.java b/processor/src/main/java/org/mapstruct/ap/util/MapperConfig.java index b9671fe32..3452d4079 100644 --- a/processor/src/main/java/org/mapstruct/ap/util/MapperConfig.java +++ b/processor/src/main/java/org/mapstruct/ap/util/MapperConfig.java @@ -29,8 +29,8 @@ import javax.lang.model.type.DeclaredType; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; -import org.mapstruct.ap.prism.MapNullToDefaultStrategyPrism; -import org.mapstruct.ap.prism.MapNullToDefaultPrism; +import org.mapstruct.ap.prism.NullValueMappingStrategyPrism; +import org.mapstruct.ap.prism.NullValueMappingPrism; import org.mapstruct.ap.option.ReportingPolicy; import org.mapstruct.ap.prism.CollectionMappingStrategyPrism; @@ -119,37 +119,37 @@ public class MapperConfig { return CollectionMappingStrategyPrism.ACCESSOR_ONLY; } - public boolean isMapToDefault(MapNullToDefaultPrism mapNullToDefault) { + public boolean isMapToDefault(NullValueMappingPrism mapNullToDefault) { // check on method level if ( mapNullToDefault != null ) { - MapNullToDefaultStrategyPrism methodPolicy - = MapNullToDefaultStrategyPrism.valueOf( mapNullToDefault.value() ); - if ( methodPolicy != MapNullToDefaultStrategyPrism.DEFAULT ) { - return methodPolicy == MapNullToDefaultStrategyPrism.MAP_NULL_TO_DEFAULT; + NullValueMappingStrategyPrism methodPolicy + = NullValueMappingStrategyPrism.valueOf( mapNullToDefault.value() ); + if ( methodPolicy != NullValueMappingStrategyPrism.DEFAULT ) { + return methodPolicy == NullValueMappingStrategyPrism.RETURN_DEFAULT; } } // check on mapper level - MapNullToDefaultStrategyPrism mapperPolicy = - MapNullToDefaultStrategyPrism.valueOf( mapperPrism.mapNullToDefaultStrategy() ); + NullValueMappingStrategyPrism mapperPolicy = + NullValueMappingStrategyPrism.valueOf( mapperPrism.nullValueMappingStrategy() ); - if ( mapperPolicy != MapNullToDefaultStrategyPrism.DEFAULT ) { + if ( mapperPolicy != NullValueMappingStrategyPrism.DEFAULT ) { // it is not the default mapper configuration, so return the mapper configured value - return mapperPolicy == MapNullToDefaultStrategyPrism.MAP_NULL_TO_DEFAULT; + return mapperPolicy == NullValueMappingStrategyPrism.RETURN_DEFAULT; } // check on mapping config level else if ( mapperConfigPrism != null ) { // try the config mapper configuration - MapNullToDefaultStrategyPrism configPolicy = - MapNullToDefaultStrategyPrism.valueOf( mapperConfigPrism.mapNullToDefaultStrategy() ); - if ( configPolicy != MapNullToDefaultStrategyPrism.DEFAULT ) { + NullValueMappingStrategyPrism configPolicy = + NullValueMappingStrategyPrism.valueOf( mapperConfigPrism.nullValueMappingStrategy() ); + if ( configPolicy != NullValueMappingStrategyPrism.DEFAULT ) { // its not the default configuration, so return the mapper config configured value - return configPolicy == MapNullToDefaultStrategyPrism.MAP_NULL_TO_DEFAULT; + return configPolicy == NullValueMappingStrategyPrism.RETURN_DEFAULT; } } - // when nothing specified, return MAP_NULL_TO_NULL (default option) + // when nothing specified, return RETURN_NULL (default option) return false; } diff --git a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapper.java b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapper.java index 3bf1b709e..897fd76c7 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapper.java @@ -23,7 +23,7 @@ import java.util.Map; import java.util.UUID; import org.mapstruct.Mapper; -import org.mapstruct.MapNullToDefault; +import org.mapstruct.NullValueMapping; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.ap.test.mapnulltodefault.source.Car; @@ -35,7 +35,7 @@ public interface CarMapper { CarMapper INSTANCE = Mappers.getMapper( CarMapper.class ); - @MapNullToDefault + @NullValueMapping @Mappings({ @Mapping(target = "seatCount", source = "numberOfSeats"), @Mapping(target = "model", constant = "ModelT"), @@ -43,7 +43,7 @@ public interface CarMapper { }) CarDto carToCarDto(Car car); - @MapNullToDefault + @NullValueMapping @Mappings({ @Mapping(target = "seatCount", source = "car.numberOfSeats"), @Mapping(target = "model", source = "model"), // TODO, should not be needed, must be made based on name only @@ -52,10 +52,10 @@ public interface CarMapper { CarDto carToCarDto(Car car, String model); - @MapNullToDefault + @NullValueMapping List carsToCarDtos(List cars); - @MapNullToDefault + @NullValueMapping Map carsToCarDtoMap(Map cars); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnConfig.java b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnConfig.java index 463c91520..199e52148 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnConfig.java +++ b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnConfig.java @@ -23,8 +23,8 @@ import java.util.Map; import java.util.UUID; import org.mapstruct.Mapper; -import org.mapstruct.MapNullToDefault; -import org.mapstruct.MapNullToDefaultStrategy; +import org.mapstruct.NullValueMapping; +import org.mapstruct.NullValueMappingStrategy; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.ap.test.mapnulltodefault.source.Car; @@ -44,10 +44,10 @@ public interface CarMapperSettingOnConfig { CarDto carToCarDto(Car car); - @MapNullToDefault(MapNullToDefaultStrategy.DEFAULT) + @NullValueMapping(NullValueMappingStrategy.DEFAULT) List carsToCarDtos(List cars); - @MapNullToDefault(MapNullToDefaultStrategy.MAP_NULL_TO_NULL) + @NullValueMapping(NullValueMappingStrategy.RETURN_NULL) Map carsToCarDtoMap(Map cars); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnMapper.java b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnMapper.java index 8c1f0d363..ba35f95b8 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CarMapperSettingOnMapper.java @@ -23,15 +23,15 @@ import java.util.Map; import java.util.UUID; import org.mapstruct.Mapper; -import org.mapstruct.MapNullToDefault; -import org.mapstruct.MapNullToDefaultStrategy; +import org.mapstruct.NullValueMapping; +import org.mapstruct.NullValueMappingStrategy; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.ap.test.mapnulltodefault.source.Car; import org.mapstruct.ap.test.mapnulltodefault.target.CarDto; import org.mapstruct.factory.Mappers; -@Mapper(imports = UUID.class, mapNullToDefaultStrategy = MapNullToDefaultStrategy.MAP_NULL_TO_DEFAULT ) +@Mapper(imports = UUID.class, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT ) public interface CarMapperSettingOnMapper { CarMapperSettingOnMapper INSTANCE = Mappers.getMapper( CarMapperSettingOnMapper.class ); @@ -44,10 +44,10 @@ public interface CarMapperSettingOnMapper { CarDto carToCarDto(Car car); - @MapNullToDefault(MapNullToDefaultStrategy.DEFAULT) + @NullValueMapping(NullValueMappingStrategy.RETURN_DEFAULT) List carsToCarDtos(List cars); - @MapNullToDefault(MapNullToDefaultStrategy.MAP_NULL_TO_NULL) + @NullValueMapping(NullValueMappingStrategy.RETURN_NULL) Map carsToCarDtoMap(Map cars); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CentralConfig.java b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CentralConfig.java index dbdaaed31..aeb077c13 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CentralConfig.java +++ b/processor/src/test/java/org/mapstruct/ap/test/mapnulltodefault/CentralConfig.java @@ -18,14 +18,14 @@ */ package org.mapstruct.ap.test.mapnulltodefault; -import org.mapstruct.MapNullToDefaultStrategy; +import org.mapstruct.NullValueMappingStrategy; import org.mapstruct.MapperConfig; /** * * @author Sjaak Derksen */ -@MapperConfig( mapNullToDefaultStrategy = MapNullToDefaultStrategy.MAP_NULL_TO_DEFAULT ) +@MapperConfig( nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT ) public class CentralConfig { } diff --git a/processor/src/test/java/org/mapstruct/ap/test/prism/EnumPrismsTest.java b/processor/src/test/java/org/mapstruct/ap/test/prism/EnumPrismsTest.java index 84b5c3789..335b318d0 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/prism/EnumPrismsTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/prism/EnumPrismsTest.java @@ -26,8 +26,8 @@ import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.ap.prism.CollectionMappingStrategyPrism; import static org.fest.assertions.Assertions.assertThat; -import org.mapstruct.MapNullToDefaultStrategy; -import org.mapstruct.ap.prism.MapNullToDefaultStrategyPrism; +import org.mapstruct.NullValueMappingStrategy; +import org.mapstruct.ap.prism.NullValueMappingStrategyPrism; /** * Test for manually created prisms on enumeration types @@ -43,8 +43,8 @@ public class EnumPrismsTest { @Test public void mapNullToDefaultStrategyPrismIsCorrect() { - assertThat( namesOf( MapNullToDefaultStrategy.values() ) ).isEqualTo( - namesOf( MapNullToDefaultStrategyPrism.values() ) ); + assertThat( namesOf( NullValueMappingStrategy.values() ) ).isEqualTo( + namesOf( NullValueMappingStrategyPrism.values() ) ); } private static List namesOf(Enum[] values) {