diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java index 859b42236..e78cff8b4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/convert/MappingMongoConverter.java @@ -894,7 +894,7 @@ public class MappingMongoConverter extends AbstractMongoConverter implements App : CollectionFactory.createCollection(collectionType, rawComponentType, sourceValue.size()); if (sourceValue.isEmpty()) { - return getPotentiallyConvertedSimpleRead(items, collectionType); + return getPotentiallyConvertedSimpleRead(items, targetType.getType()); } for (Object dbObjItem : sourceValue) { diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java index 901f6d8e2..f5327bac5 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/convert/MappingMongoConverterUnitTests.java @@ -21,6 +21,8 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; import static org.springframework.data.mongodb.core.DBObjectTestUtils.*; +import lombok.RequiredArgsConstructor; + import java.math.BigDecimal; import java.math.BigInteger; import java.net.URL; @@ -97,7 +99,7 @@ import com.mongodb.util.JSON; /** * Unit tests for {@link MappingMongoConverter}. - * + * * @author Oliver Gierke * @author Patrik Wasik * @author Christoph Strobl @@ -2101,6 +2103,28 @@ public class MappingMongoConverterUnitTests { assertThat(converter.read(ClassWithEnumProperty.class, source).enumSet, is(EnumSet.noneOf(SampleEnum.class))); } + /** + * @see DATAMONGO-1831 + */ + @Test + public void shouldConvertArrayInConstructorCorrectly() { + + DBObject source = new BasicDBObject("array", Collections.emptyList()); + + assertThat(converter.read(WithArrayInConstructor.class, source).array, is(emptyArray())); + } + + /** + * @see DATAMONGO-1831 + */ + @Test + public void shouldConvertNullForArrayInConstructorCorrectly() { + + DBObject source = new BasicDBObject(); + + assertThat(converter.read(WithArrayInConstructor.class, source).array, is(nullValue())); + } + static class GenericType { T content; } @@ -2451,4 +2475,11 @@ public class MappingMongoConverterUnitTests { static class TypeWithPropertyInNestedField { @Field("nested.sample") String sample; } + + @RequiredArgsConstructor + static class WithArrayInConstructor { + + final String[] array; + + } }