diff --git a/processor/src/main/resources/dozer-mapper-implementation.ftl b/processor/src/main/resources/dozer-mapper-implementation.ftl index 610942830..237e31b6a 100644 --- a/processor/src/main/resources/dozer-mapper-implementation.ftl +++ b/processor/src/main/resources/dozer-mapper-implementation.ftl @@ -22,29 +22,33 @@ import org.dozer.loader.api.BeanMappingBuilder; public class ${implementationType} implements ${interfaceType} { -private final DozerBeanMapper mapper; + private final DozerBeanMapper mapper; -public ${implementationType}() { -mapper = new DozerBeanMapper(); + public ${implementationType}() { + mapper = new DozerBeanMapper(); -<#list mapperMethods as oneMethod> -BeanMappingBuilder builder = new BeanMappingBuilder() { -protected void configure() { -mapping( ${oneMethod.parameter.type.name}.class, ${oneMethod.returnType.name}.class ) - <#list oneMethod.bindings as oneBinding> - .fields("${oneBinding.sourceProperty}", "${oneBinding.targetProperty}") + BeanMappingBuilder builder = null; + + <#list mapperMethods as oneMethod> + <#if oneMethod.bindings?has_content> + builder = new BeanMappingBuilder() { + protected void configure() { + mapping( ${oneMethod.parameter.type.name}.class, ${oneMethod.returnType.name}.class ) + <#list oneMethod.bindings as oneBinding> + .fields("${oneBinding.sourceProperty}", "${oneBinding.targetProperty}") + + ; + } + }; + mapper.addMapping( builder ); + + + + } + + <#list mapperMethods as oneMethod> + public ${oneMethod.returnType.name} ${oneMethod.name}(${oneMethod.parameter.type.name} ${oneMethod.parameter.name}) { + return mapper.map(${oneMethod.parameter.name}, ${oneMethod.returnType.name}.class); + } -; -} -}; - -mapper.addMapping( builder ); - -} - -<#list mapperMethods as oneMethod> -public ${oneMethod.returnType.name} ${oneMethod.name}(${oneMethod.parameter.type.name} ${oneMethod.parameter.name}) { -return mapper.map(${oneMethod.parameter.name}, ${oneMethod.returnType.name}.class); -} - } diff --git a/processor/src/test/java/de/moapa/maple/ap/test/CarMapperTest.java b/processor/src/test/java/de/moapa/maple/ap/test/CarMapperTest.java index 1f3b46aed..1427a02b1 100644 --- a/processor/src/test/java/de/moapa/maple/ap/test/CarMapperTest.java +++ b/processor/src/test/java/de/moapa/maple/ap/test/CarMapperTest.java @@ -125,6 +125,20 @@ public class CarMapperTest { assertThat( carDto.getSeatCount() ).isEqualTo( car.getNumberOfSeats() ); } + @Test + public void shouldConsiderCustomMappingForReverseMapping() { + + //given + CarDto carDto = new CarDto( "Morris", 2 ); + + //when + Car car = CarMapper.INSTANCE.carDtoToCar( carDto ); + + //then + assertThat( car ).isNotNull(); + assertThat( car.getNumberOfSeats() ).isEqualTo( carDto.getSeatCount() ); + } + private File[] getSourceFiles(Class... clazz) { File[] sourceFiles = new File[clazz.length]; diff --git a/processor/src/test/java/de/moapa/maple/ap/test/model/Car.java b/processor/src/test/java/de/moapa/maple/ap/test/model/Car.java index 2d4d00dfd..bffd9e100 100644 --- a/processor/src/test/java/de/moapa/maple/ap/test/model/Car.java +++ b/processor/src/test/java/de/moapa/maple/ap/test/model/Car.java @@ -21,6 +21,9 @@ public class Car { private int numberOfSeats; + public Car() { + } + public Car(String make, int numberOfSeats) { this.make = make; this.numberOfSeats = numberOfSeats; diff --git a/processor/src/test/java/de/moapa/maple/ap/test/model/CarDto.java b/processor/src/test/java/de/moapa/maple/ap/test/model/CarDto.java index 62a410745..e243f71a8 100644 --- a/processor/src/test/java/de/moapa/maple/ap/test/model/CarDto.java +++ b/processor/src/test/java/de/moapa/maple/ap/test/model/CarDto.java @@ -24,6 +24,11 @@ public class CarDto { public CarDto() { } + public CarDto(String make, int seatCount) { + this.make = make; + this.seatCount = seatCount; + } + public String getMake() { return make; } diff --git a/processor/src/test/java/de/moapa/maple/ap/test/model/CarMapper.java b/processor/src/test/java/de/moapa/maple/ap/test/model/CarMapper.java index 759a3c025..6f57844fe 100644 --- a/processor/src/test/java/de/moapa/maple/ap/test/model/CarMapper.java +++ b/processor/src/test/java/de/moapa/maple/ap/test/model/CarMapper.java @@ -26,4 +26,6 @@ public interface CarMapper { @Mapping(source = "numberOfSeats", target = "seatCount") CarDto carToCarDto(Car car); + + Car carDtoToCar(CarDto carDto); }