diff --git a/processor/src/main/java/org/mapstruct/ap/internal/model/source/TargetReference.java b/processor/src/main/java/org/mapstruct/ap/internal/model/source/TargetReference.java index e1824529c..36306aa84 100644 --- a/processor/src/main/java/org/mapstruct/ap/internal/model/source/TargetReference.java +++ b/processor/src/main/java/org/mapstruct/ap/internal/model/source/TargetReference.java @@ -191,8 +191,9 @@ public class TargetReference { // last entry for ( int i = 0; i < entryNames.length; i++ ) { - Accessor targetReadAccessor = nextType.getPropertyReadAccessors().get( entryNames[i] ); - Accessor targetWriteAccessor = nextType.getPropertyWriteAccessors( cms ).get( entryNames[i] ); + Type mappingType = nextType.getMappingType(); + Accessor targetReadAccessor = mappingType.getPropertyReadAccessors().get( entryNames[i] ); + Accessor targetWriteAccessor = mappingType.getPropertyWriteAccessors( cms ).get( entryNames[i] ); boolean isLast = i == entryNames.length - 1; boolean isNotLast = i < entryNames.length - 1; if ( isWriteAccessorNotValidWhenNotLast( targetWriteAccessor, isNotLast ) @@ -236,13 +237,13 @@ public class TargetReference { if ( Executables.isGetterMethod( toUse ) || Executables.isFieldAccessor( toUse ) ) { nextType = typeFactory.getReturnType( - (DeclaredType) initial.getTypeMirror(), + (DeclaredType) initial.getMappingType().getTypeMirror(), toUse ); } else { nextType = typeFactory.getSingleParameter( - (DeclaredType) initial.getTypeMirror(), + (DeclaredType) initial.getMappingType().getTypeMirror(), toUse ).getType(); } diff --git a/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/BuilderNestedPropertyTest.java b/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/BuilderNestedPropertyTest.java index c673cb18d..d4117ccfa 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/BuilderNestedPropertyTest.java +++ b/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/BuilderNestedPropertyTest.java @@ -18,7 +18,6 @@ */ package org.mapstruct.ap.test.builder.nestedprop; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mapstruct.ap.testutil.WithClasses; @@ -36,7 +35,6 @@ import static org.assertj.core.api.Assertions.assertThat; FlattenedMapper.class }) @RunWith(AnnotationProcessorTestRunner.class) -@Ignore("Nested target not working yet") public class BuilderNestedPropertyTest { @Test @@ -47,5 +45,9 @@ public class BuilderNestedPropertyTest { 33 ) ); assertThat( expandedTarget ).isNotNull(); + assertThat( expandedTarget.getCount() ).isEqualTo( 33 ); + assertThat( expandedTarget.getSecond() ).isNull(); + assertThat( expandedTarget.getFirst() ).isNotNull(); + assertThat( expandedTarget.getFirst().getFoo() ).isEqualTo( "33" ); } } diff --git a/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/ExpandedTarget.java b/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/ExpandedTarget.java index 32be35007..d83d67f50 100644 --- a/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/ExpandedTarget.java +++ b/processor/src/test/java/org/mapstruct/ap/test/builder/nestedprop/ExpandedTarget.java @@ -50,7 +50,7 @@ public class ExpandedTarget { private ImmutableTargetContainer first; private ImmutableTargetContainer second; - public Builder count(int age) { + public Builder count(int count) { this.count = count; return this; }