From bcb722e2e98814aaee093c7cd341f34116424929 Mon Sep 17 00:00:00 2001 From: Andreas Gudian Date: Thu, 26 Mar 2015 21:01:47 +0100 Subject: [PATCH] #291 add test to verify that the simple case (target type with type arguments) already works, clean-up unnecessary "raw" definitions in templates --- .../org.mapstruct.ap.model.BeanMappingMethod.ftl | 2 +- ....mapstruct.ap.model.IterableMappingMethod.ftl | 2 +- .../org.mapstruct.ap.model.MapMappingMethod.ftl | 2 +- .../org.mapstruct.ap.model.MethodReference.ftl | 1 - .../org.mapstruct.ap.model.PropertyMapping.ftl | 1 - .../org.mapstruct.ap.model.TypeConversion.ftl | 1 - ...apstruct.ap.model.assignment.AdderWrapper.ftl | 2 -- ...ruct.ap.model.assignment.ArrayCopyWrapper.ftl | 1 - ...gnment.GetterWrapperForCollectionsAndMaps.ftl | 1 - ...truct.ap.model.assignment.LocalVarWrapper.ftl | 1 - ...odel.assignment.NewCollectionOrMapWrapper.ftl | 2 +- ...ruct.ap.model.assignment.NullCheckWrapper.ftl | 1 - ...pstruct.ap.model.assignment.SetterWrapper.ftl | 1 - ...gnment.SetterWrapperForCollectionsAndMaps.ftl | 4 ---- ...pstruct.ap.model.assignment.UpdateWrapper.ftl | 3 +-- .../ap/test/references/GenericWrapper.java | 2 +- .../test/references/ReferencedCustomMapper.java | 3 +++ .../ap/test/references/ReferencedMapperTest.java | 16 ++++++++++------ .../org/mapstruct/ap/test/references/Source.java | 9 +++++++++ .../org/mapstruct/ap/test/references/Target.java | 9 +++++++++ 20 files changed, 37 insertions(+), 27 deletions(-) diff --git a/processor/src/main/resources/org.mapstruct.ap.model.BeanMappingMethod.ftl b/processor/src/main/resources/org.mapstruct.ap.model.BeanMappingMethod.ftl index c188b3332..c9cb62b65 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.BeanMappingMethod.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.BeanMappingMethod.ftl @@ -26,7 +26,7 @@ } - <#if !existingInstanceMapping><@includeModel object=resultType/> ${resultName} = <#if factoryMethod??><@includeModel object=factoryMethod targetType=resultType raw=true/><#else>new <@includeModel object=resultType/>(); + <#if !existingInstanceMapping><@includeModel object=resultType/> ${resultName} = <#if factoryMethod??><@includeModel object=factoryMethod targetType=resultType/><#else>new <@includeModel object=resultType/>(); <#if (sourceParameters?size > 1)> <#list sourceParametersExcludingPrimitives as sourceParam> <#if (propertyMappingsByParameter[sourceParam.name]?size > 0)> diff --git a/processor/src/main/resources/org.mapstruct.ap.model.IterableMappingMethod.ftl b/processor/src/main/resources/org.mapstruct.ap.model.IterableMappingMethod.ftl index 2777b97b8..cd7ae15f9 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.IterableMappingMethod.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.IterableMappingMethod.ftl @@ -107,7 +107,7 @@ <#macro iterableCreation> <@compress single_line=true> <#if factoryMethod??> - <@includeModel object=factoryMethod targetType=resultType raw=true/> + <@includeModel object=factoryMethod targetType=resultType/> <#else> new <#if resultType.implementationType??> diff --git a/processor/src/main/resources/org.mapstruct.ap.model.MapMappingMethod.ftl b/processor/src/main/resources/org.mapstruct.ap.model.MapMappingMethod.ftl index 56521af5f..74718d9af 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.MapMappingMethod.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.MapMappingMethod.ftl @@ -68,7 +68,7 @@ <#macro returnObjectCreation> <@compress single_line=true> <#if factoryMethod??> - <@includeModel object=factoryMethod targetType=resultType raw=true/> + <@includeModel object=factoryMethod targetType=resultType/> <#else> new <#if resultType.implementationType??> diff --git a/processor/src/main/resources/org.mapstruct.ap.model.MethodReference.ftl b/processor/src/main/resources/org.mapstruct.ap.model.MethodReference.ftl index 579b8367e..6e4ae9adf 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.MethodReference.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.MethodReference.ftl @@ -39,7 +39,6 @@ <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.PropertyMapping.ftl b/processor/src/main/resources/org.mapstruct.ap.model.PropertyMapping.ftl index 60d98a0db..9dd847339 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.PropertyMapping.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.PropertyMapping.ftl @@ -20,7 +20,6 @@ --> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=targetReadAccessorName targetWriteAccessorName=targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl b/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl index 5a379c211..5a7519f9e 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.TypeConversion.ftl @@ -23,7 +23,6 @@ ${openExpression}<@_assignment/>${closeExpression} <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.AdderWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.AdderWrapper.ftl index 7eef49f5f..6da6dcaf5 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.AdderWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.AdderWrapper.ftl @@ -22,7 +22,6 @@ for ( <@includeModel object=sourceType/> ${iteratorReference} : ${sourceReference} ) { ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName @@ -33,7 +32,6 @@ for ( <@includeModel object=sourceType/> ${iteratorReference} : ${sourceReference} ) { ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.ArrayCopyWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.ArrayCopyWrapper.ftl index 218f27a80..70bdac687 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.ArrayCopyWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.ArrayCopyWrapper.ftl @@ -35,7 +35,6 @@ <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.GetterWrapperForCollectionsAndMaps.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.GetterWrapperForCollectionsAndMaps.ftl index 16a866418..f96145410 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.GetterWrapperForCollectionsAndMaps.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.GetterWrapperForCollectionsAndMaps.ftl @@ -44,7 +44,6 @@ if ( ${ext.targetBeanName}.${ext.targetWriteAccessorName}() != null ) { <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.LocalVarWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.LocalVarWrapper.ftl index 973519746..8dd386056 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.LocalVarWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.LocalVarWrapper.ftl @@ -34,7 +34,6 @@ <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.NewCollectionOrMapWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.NewCollectionOrMapWrapper.ftl index 1f87d64a0..c843aaa42 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.NewCollectionOrMapWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.NewCollectionOrMapWrapper.ftl @@ -24,5 +24,5 @@ new <#if ext.targetType.implementationType??> <#else> <@includeModel object=ext.targetType/> -( <@includeModel object=assignment targetBeanName=ext.targetBeanName targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName targetType=ext.targetType raw=ext.raw/> ) +( <@includeModel object=assignment targetBeanName=ext.targetBeanName targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName targetType=ext.targetType/> ) \ No newline at end of file diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.NullCheckWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.NullCheckWrapper.ftl index b98c50e65..ddb8c018f 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.NullCheckWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.NullCheckWrapper.ftl @@ -21,7 +21,6 @@ if ( ${sourceReference} != null ) { <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapper.ftl index 53643df1b..177dbe094 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapper.ftl @@ -33,7 +33,6 @@ <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapperForCollectionsAndMaps.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapperForCollectionsAndMaps.ftl index 920396ec5..5cac08f93 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapperForCollectionsAndMaps.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.SetterWrapperForCollectionsAndMaps.ftl @@ -24,7 +24,6 @@ <#if ext.targetType.collectionType> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName="${targetGetterName}().addAll" @@ -32,7 +31,6 @@ <#else> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName="${targetGetterName}().putAll" @@ -56,7 +54,6 @@ <#macro _assignment> <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName @@ -65,7 +62,6 @@ <#macro _newCollectionOrMapAssignment> <@includeModel object=newCollectionOrMapAssignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/main/resources/org.mapstruct.ap.model.assignment.UpdateWrapper.ftl b/processor/src/main/resources/org.mapstruct.ap.model.assignment.UpdateWrapper.ftl index be93df2b4..355b8113c 100644 --- a/processor/src/main/resources/org.mapstruct.ap.model.assignment.UpdateWrapper.ftl +++ b/processor/src/main/resources/org.mapstruct.ap.model.assignment.UpdateWrapper.ftl @@ -32,11 +32,10 @@ <#macro _assignment> if ( ${ext.targetBeanName}.${ext.targetReadAccessorName}() == null ) { - ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <#if factoryMethod??><@includeModel object=factoryMethod targetType=ext.targetType raw=true/><#else>new <@includeModel object=ext.targetType/>() ); + ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <#if factoryMethod??><@includeModel object=factoryMethod targetType=ext.targetType/><#else>new <@includeModel object=ext.targetType/>() ); } <@includeModel object=assignment targetBeanName=ext.targetBeanName - raw=ext.raw existingInstanceMapping=ext.existingInstanceMapping targetReadAccessorName=ext.targetReadAccessorName targetWriteAccessorName=ext.targetWriteAccessorName diff --git a/processor/src/test/java/org/mapstruct/ap/test/references/GenericWrapper.java b/processor/src/test/java/org/mapstruct/ap/test/references/GenericWrapper.java index 9c7aed7d2..83c6a600c 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/references/GenericWrapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/references/GenericWrapper.java @@ -22,7 +22,7 @@ package org.mapstruct.ap.test.references; * @author Andreas Gudian * */ -public class GenericWrapper { +public class GenericWrapper extends BaseType { private final T wrapped; public GenericWrapper(T someType) { diff --git a/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedCustomMapper.java b/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedCustomMapper.java index 7a3b3e1e2..9cdfab056 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedCustomMapper.java +++ b/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedCustomMapper.java @@ -39,6 +39,9 @@ public class ReferencedCustomMapper { else if ( clazz == SomeOtherType.class ) { return (T) new SomeOtherType( string ); } + else if ( clazz == GenericWrapper.class ) { + return (T) new GenericWrapper( string ); + } return null; } diff --git a/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedMapperTest.java b/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedMapperTest.java index 1a6fe66d3..3062503dd 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedMapperTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/references/ReferencedMapperTest.java @@ -18,9 +18,6 @@ */ package org.mapstruct.ap.test.references; -import static org.fest.assertions.Assertions.assertThat; -import static org.fest.assertions.MapAssert.entry; - import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -32,13 +29,19 @@ import org.mapstruct.ap.testutil.IssueKey; import org.mapstruct.ap.testutil.WithClasses; import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner; +import static org.fest.assertions.Assertions.assertThat; + +import static org.fest.assertions.MapAssert.entry; + /** * @author Andreas Gudian * */ @IssueKey( "82" ) @WithClasses( { Bar.class, Foo.class, FooMapper.class, ReferencedCustomMapper.class, Source.class, - SourceTargetMapper.class, Target.class, BaseType.class, SomeType.class, SomeOtherType.class } ) + SourceTargetMapper.class, Target.class, BaseType.class, SomeType.class, SomeOtherType.class, + GenericWrapper.class +}) @RunWith(AnnotationProcessorTestRunner.class) public class ReferencedMapperTest { @Test @@ -50,6 +53,7 @@ public class ReferencedMapperTest { assertThat( target.getProp2() ).isNotNull(); assertThat( target.getProp2().getProp1() ).isEqualTo( "foo" ); assertThat( target.getProp3().getValue() ).isEqualTo( "prop3" ); + assertThat( target.getProp4().getWrapped() ).isEqualTo( "prop4" ); } private Source createSource() { @@ -60,6 +64,7 @@ public class ReferencedMapperTest { prop2.setProp1( "foo" ); source.setProp2( prop2 ); source.setProp3( "prop3" ); + source.setProp4( "prop4" ); return source; } @@ -88,8 +93,7 @@ public class ReferencedMapperTest { @Test @IssueKey( "136" ) - @WithClasses( { SourceTargetMapperWithPrimitives.class, SourceWithWrappers.class, TargetWithPrimitives.class, - GenericWrapper.class } ) + @WithClasses({ SourceTargetMapperWithPrimitives.class, SourceWithWrappers.class, TargetWithPrimitives.class }) public void shouldMapPrimitivesWithCustomMapper() { SourceWithWrappers source = new SourceWithWrappers(); source.setProp1( new SomeType( "42" ) ); diff --git a/processor/src/test/java/org/mapstruct/ap/test/references/Source.java b/processor/src/test/java/org/mapstruct/ap/test/references/Source.java index a50ad5406..9bd076528 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/references/Source.java +++ b/processor/src/test/java/org/mapstruct/ap/test/references/Source.java @@ -26,6 +26,7 @@ public class Source { private int prop1; private Foo prop2; private String prop3; + private String prop4; public int getProp1() { return prop1; @@ -50,4 +51,12 @@ public class Source { public void setProp3(String prop3) { this.prop3 = prop3; } + + public String getProp4() { + return prop4; + } + + public void setProp4(String prop4) { + this.prop4 = prop4; + } } diff --git a/processor/src/test/java/org/mapstruct/ap/test/references/Target.java b/processor/src/test/java/org/mapstruct/ap/test/references/Target.java index c1f41ca3b..d73234f59 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/references/Target.java +++ b/processor/src/test/java/org/mapstruct/ap/test/references/Target.java @@ -27,6 +27,7 @@ public class Target { private long prop1; private Bar prop2; private SomeType prop3; + private GenericWrapper prop4; public long getProp1() { return prop1; @@ -51,4 +52,12 @@ public class Target { public void setProp3(SomeType prop3) { this.prop3 = prop3; } + + public GenericWrapper getProp4() { + return prop4; + } + + public void setProp4(GenericWrapper prop4) { + this.prop4 = prop4; + } }