mirror of
https://github.com/mapstruct/mapstruct.git
synced 2025-07-12 00:00:08 +08:00
#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:
parent
fb6c4dbfbd
commit
bcb722e2e9
@ -26,7 +26,7 @@
|
||||
}
|
||||
</#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)>
|
||||
<#list sourceParametersExcludingPrimitives as sourceParam>
|
||||
<#if (propertyMappingsByParameter[sourceParam.name]?size > 0)>
|
||||
|
@ -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??>
|
||||
|
@ -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??>
|
||||
|
@ -39,7 +39,6 @@
|
||||
<#macro _assignment>
|
||||
<@includeModel object=assignment
|
||||
targetBeanName=ext.targetBeanName
|
||||
raw=ext.raw
|
||||
existingInstanceMapping=ext.existingInstanceMapping
|
||||
targetReadAccessorName=ext.targetReadAccessorName
|
||||
targetWriteAccessorName=ext.targetWriteAccessorName
|
||||
|
@ -20,7 +20,6 @@
|
||||
-->
|
||||
<@includeModel object=assignment
|
||||
targetBeanName=ext.targetBeanName
|
||||
raw=ext.raw
|
||||
existingInstanceMapping=ext.existingInstanceMapping
|
||||
targetReadAccessorName=targetReadAccessorName
|
||||
targetWriteAccessorName=targetWriteAccessorName
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -35,7 +35,6 @@
|
||||
<#macro _assignment>
|
||||
<@includeModel object=assignment
|
||||
targetBeanName=ext.targetBeanName
|
||||
raw=ext.raw
|
||||
existingInstanceMapping=ext.existingInstanceMapping
|
||||
targetReadAccessorName=ext.targetReadAccessorName
|
||||
targetWriteAccessorName=ext.targetWriteAccessorName
|
||||
|
@ -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
|
||||
|
@ -34,7 +34,6 @@
|
||||
<#macro _assignment>
|
||||
<@includeModel object=assignment
|
||||
targetBeanName=ext.targetBeanName
|
||||
raw=ext.raw
|
||||
existingInstanceMapping=ext.existingInstanceMapping
|
||||
targetReadAccessorName=ext.targetReadAccessorName
|
||||
targetWriteAccessorName=ext.targetWriteAccessorName
|
||||
|
@ -24,5 +24,5 @@ new <#if ext.targetType.implementationType??>
|
||||
<#else>
|
||||
<@includeModel object=ext.targetType/>
|
||||
</#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>
|
@ -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
|
||||
|
@ -33,7 +33,6 @@
|
||||
<#macro _assignment>
|
||||
<@includeModel object=assignment
|
||||
targetBeanName=ext.targetBeanName
|
||||
raw=ext.raw
|
||||
existingInstanceMapping=ext.existingInstanceMapping
|
||||
targetReadAccessorName=ext.targetReadAccessorName
|
||||
targetWriteAccessorName=ext.targetWriteAccessorName
|
||||
|
@ -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
|
||||
|
@ -32,11 +32,10 @@
|
||||
</#if>
|
||||
<#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/>()</#if> );
|
||||
${ext.targetBeanName}.${ext.targetWriteAccessorName}( <#if factoryMethod??><@includeModel object=factoryMethod targetType=ext.targetType/><#else>new <@includeModel object=ext.targetType/>()</#if> );
|
||||
}
|
||||
<@includeModel object=assignment
|
||||
targetBeanName=ext.targetBeanName
|
||||
raw=ext.raw
|
||||
existingInstanceMapping=ext.existingInstanceMapping
|
||||
targetReadAccessorName=ext.targetReadAccessorName
|
||||
targetWriteAccessorName=ext.targetWriteAccessorName
|
||||
|
@ -22,7 +22,7 @@ package org.mapstruct.ap.test.references;
|
||||
* @author Andreas Gudian
|
||||
*
|
||||
*/
|
||||
public class GenericWrapper<T> {
|
||||
public class GenericWrapper<T> extends BaseType {
|
||||
private final T wrapped;
|
||||
|
||||
public GenericWrapper(T someType) {
|
||||
|
@ -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>( string );
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
@ -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" ) );
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ public class Target {
|
||||
private long prop1;
|
||||
private Bar prop2;
|
||||
private SomeType prop3;
|
||||
private GenericWrapper<String> prop4;
|
||||
|
||||
public long getProp1() {
|
||||
return prop1;
|
||||
@ -51,4 +52,12 @@ public class Target {
|
||||
public void setProp3(SomeType prop3) {
|
||||
this.prop3 = prop3;
|
||||
}
|
||||
|
||||
public GenericWrapper<String> getProp4() {
|
||||
return prop4;
|
||||
}
|
||||
|
||||
public void setProp4(GenericWrapper<String> prop4) {
|
||||
this.prop4 = prop4;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user