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>
|
||||||
|
|
||||||
<#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)>
|
||||||
|
@ -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??>
|
||||||
|
@ -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??>
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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>
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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" ) );
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user