#291 add test to verify that the simple case (target type with type arguments) already works, clean-up unnecessary "raw" definitions in templates

This commit is contained in:
Andreas Gudian 2015-03-26 21:01:47 +01:00 committed by sjaakd
parent fb6c4dbfbd
commit bcb722e2e9
20 changed files with 37 additions and 27 deletions

View File

@ -26,7 +26,7 @@
} }
</#if> </#if>
<#if !existingInstanceMapping><@includeModel object=resultType/> ${resultName} = <#if factoryMethod??><@includeModel object=factoryMethod targetType=resultType raw=true/><#else>new <@includeModel object=resultType/>()</#if>;</#if> <#if !existingInstanceMapping><@includeModel object=resultType/> ${resultName} = <#if factoryMethod??><@includeModel object=factoryMethod targetType=resultType/><#else>new <@includeModel object=resultType/>()</#if>;</#if>
<#if (sourceParameters?size > 1)> <#if (sourceParameters?size > 1)>
<#list sourceParametersExcludingPrimitives as sourceParam> <#list sourceParametersExcludingPrimitives as sourceParam>
<#if (propertyMappingsByParameter[sourceParam.name]?size > 0)> <#if (propertyMappingsByParameter[sourceParam.name]?size > 0)>

View File

@ -107,7 +107,7 @@
<#macro iterableCreation> <#macro iterableCreation>
<@compress single_line=true> <@compress single_line=true>
<#if factoryMethod??> <#if factoryMethod??>
<@includeModel object=factoryMethod targetType=resultType raw=true/> <@includeModel object=factoryMethod targetType=resultType/>
<#else> <#else>
new new
<#if resultType.implementationType??> <#if resultType.implementationType??>

View File

@ -68,7 +68,7 @@
<#macro returnObjectCreation> <#macro returnObjectCreation>
<@compress single_line=true> <@compress single_line=true>
<#if factoryMethod??> <#if factoryMethod??>
<@includeModel object=factoryMethod targetType=resultType raw=true/> <@includeModel object=factoryMethod targetType=resultType/>
<#else> <#else>
new new
<#if resultType.implementationType??> <#if resultType.implementationType??>

View File

@ -39,7 +39,6 @@
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -20,7 +20,6 @@
--> -->
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=targetReadAccessorName targetReadAccessorName=targetReadAccessorName
targetWriteAccessorName=targetWriteAccessorName targetWriteAccessorName=targetWriteAccessorName

View File

@ -23,7 +23,6 @@ ${openExpression}<@_assignment/>${closeExpression}
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -22,7 +22,6 @@
for ( <@includeModel object=sourceType/> ${iteratorReference} : ${sourceReference} ) { for ( <@includeModel object=sourceType/> ${iteratorReference} : ${sourceReference} ) {
${ext.targetBeanName}.${ext.targetWriteAccessorName}( <@includeModel object=assignment ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName
@ -33,7 +32,6 @@
for ( <@includeModel object=sourceType/> ${iteratorReference} : ${sourceReference} ) { for ( <@includeModel object=sourceType/> ${iteratorReference} : ${sourceReference} ) {
${ext.targetBeanName}.${ext.targetWriteAccessorName}( <@includeModel object=assignment ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -35,7 +35,6 @@
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -44,7 +44,6 @@ if ( ${ext.targetBeanName}.${ext.targetWriteAccessorName}() != null ) {
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -34,7 +34,6 @@
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -24,5 +24,5 @@ new <#if ext.targetType.implementationType??>
<#else> <#else>
<@includeModel object=ext.targetType/> <@includeModel object=ext.targetType/>
</#if> </#if>
( <@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/> )
</@compress> </@compress>

View File

@ -21,7 +21,6 @@
if ( ${sourceReference} != null ) { if ( ${sourceReference} != null ) {
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -33,7 +33,6 @@
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -24,7 +24,6 @@
<#if ext.targetType.collectionType> <#if ext.targetType.collectionType>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName="${targetGetterName}().addAll" targetWriteAccessorName="${targetGetterName}().addAll"
@ -32,7 +31,6 @@
<#else> <#else>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName="${targetGetterName}().putAll" targetWriteAccessorName="${targetGetterName}().putAll"
@ -56,7 +54,6 @@
<#macro _assignment> <#macro _assignment>
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName
@ -65,7 +62,6 @@
<#macro _newCollectionOrMapAssignment> <#macro _newCollectionOrMapAssignment>
<@includeModel object=newCollectionOrMapAssignment <@includeModel object=newCollectionOrMapAssignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -32,11 +32,10 @@
</#if> </#if>
<#macro _assignment> <#macro _assignment>
if ( ${ext.targetBeanName}.${ext.targetReadAccessorName}() == null ) { 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/>()</#if> ); ${ext.targetBeanName}.${ext.targetWriteAccessorName}( <#if factoryMethod??><@includeModel object=factoryMethod targetType=ext.targetType/><#else>new <@includeModel object=ext.targetType/>()</#if> );
} }
<@includeModel object=assignment <@includeModel object=assignment
targetBeanName=ext.targetBeanName targetBeanName=ext.targetBeanName
raw=ext.raw
existingInstanceMapping=ext.existingInstanceMapping existingInstanceMapping=ext.existingInstanceMapping
targetReadAccessorName=ext.targetReadAccessorName targetReadAccessorName=ext.targetReadAccessorName
targetWriteAccessorName=ext.targetWriteAccessorName targetWriteAccessorName=ext.targetWriteAccessorName

View File

@ -22,7 +22,7 @@ package org.mapstruct.ap.test.references;
* @author Andreas Gudian * @author Andreas Gudian
* *
*/ */
public class GenericWrapper<T> { public class GenericWrapper<T> extends BaseType {
private final T wrapped; private final T wrapped;
public GenericWrapper(T someType) { public GenericWrapper(T someType) {

View File

@ -39,6 +39,9 @@ public class ReferencedCustomMapper {
else if ( clazz == SomeOtherType.class ) { else if ( clazz == SomeOtherType.class ) {
return (T) new SomeOtherType( string ); return (T) new SomeOtherType( string );
} }
else if ( clazz == GenericWrapper.class ) {
return (T) new GenericWrapper<String>( string );
}
return null; return null;
} }

View File

@ -18,9 +18,6 @@
*/ */
package org.mapstruct.ap.test.references; 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.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; 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.WithClasses;
import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner; import org.mapstruct.ap.testutil.runner.AnnotationProcessorTestRunner;
import static org.fest.assertions.Assertions.assertThat;
import static org.fest.assertions.MapAssert.entry;
/** /**
* @author Andreas Gudian * @author Andreas Gudian
* *
*/ */
@IssueKey( "82" ) @IssueKey( "82" )
@WithClasses( { Bar.class, Foo.class, FooMapper.class, ReferencedCustomMapper.class, Source.class, @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) @RunWith(AnnotationProcessorTestRunner.class)
public class ReferencedMapperTest { public class ReferencedMapperTest {
@Test @Test
@ -50,6 +53,7 @@ public class ReferencedMapperTest {
assertThat( target.getProp2() ).isNotNull(); assertThat( target.getProp2() ).isNotNull();
assertThat( target.getProp2().getProp1() ).isEqualTo( "foo" ); assertThat( target.getProp2().getProp1() ).isEqualTo( "foo" );
assertThat( target.getProp3().getValue() ).isEqualTo( "prop3" ); assertThat( target.getProp3().getValue() ).isEqualTo( "prop3" );
assertThat( target.getProp4().getWrapped() ).isEqualTo( "prop4" );
} }
private Source createSource() { private Source createSource() {
@ -60,6 +64,7 @@ public class ReferencedMapperTest {
prop2.setProp1( "foo" ); prop2.setProp1( "foo" );
source.setProp2( prop2 ); source.setProp2( prop2 );
source.setProp3( "prop3" ); source.setProp3( "prop3" );
source.setProp4( "prop4" );
return source; return source;
} }
@ -88,8 +93,7 @@ public class ReferencedMapperTest {
@Test @Test
@IssueKey( "136" ) @IssueKey( "136" )
@WithClasses( { SourceTargetMapperWithPrimitives.class, SourceWithWrappers.class, TargetWithPrimitives.class, @WithClasses({ SourceTargetMapperWithPrimitives.class, SourceWithWrappers.class, TargetWithPrimitives.class })
GenericWrapper.class } )
public void shouldMapPrimitivesWithCustomMapper() { public void shouldMapPrimitivesWithCustomMapper() {
SourceWithWrappers source = new SourceWithWrappers(); SourceWithWrappers source = new SourceWithWrappers();
source.setProp1( new SomeType( "42" ) ); source.setProp1( new SomeType( "42" ) );

View File

@ -26,6 +26,7 @@ public class Source {
private int prop1; private int prop1;
private Foo prop2; private Foo prop2;
private String prop3; private String prop3;
private String prop4;
public int getProp1() { public int getProp1() {
return prop1; return prop1;
@ -50,4 +51,12 @@ public class Source {
public void setProp3(String prop3) { public void setProp3(String prop3) {
this.prop3 = prop3; this.prop3 = prop3;
} }
public String getProp4() {
return prop4;
}
public void setProp4(String prop4) {
this.prop4 = prop4;
}
} }

View File

@ -27,6 +27,7 @@ public class Target {
private long prop1; private long prop1;
private Bar prop2; private Bar prop2;
private SomeType prop3; private SomeType prop3;
private GenericWrapper<String> prop4;
public long getProp1() { public long getProp1() {
return prop1; return prop1;
@ -51,4 +52,12 @@ public class Target {
public void setProp3(SomeType prop3) { public void setProp3(SomeType prop3) {
this.prop3 = prop3; this.prop3 = prop3;
} }
public GenericWrapper<String> getProp4() {
return prop4;
}
public void setProp4(GenericWrapper<String> prop4) {
this.prop4 = prop4;
}
} }