diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java index a481c53c7..48e9540ec 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java @@ -41,6 +41,7 @@ import org.springframework.util.StringUtils; * * @author Christoph Strobl * @author Mark Paluch + * @author Michał Kurcius * @since 2.1 */ public class TypedJsonSchemaObject extends UntypedJsonSchemaObject { @@ -1203,7 +1204,7 @@ public class TypedJsonSchemaObject extends UntypedJsonSchemaObject { Document doc = new Document(super.toDocument()); if (!CollectionUtils.isEmpty(items)) { - doc.append("items", items.size() == 1 ? items.iterator().next() + doc.append("items", items.size() == 1 ? items.iterator().next().toDocument() : items.stream().map(JsonSchemaObject::toDocument).collect(Collectors.toList())); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/JsonSchemaObjectUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/JsonSchemaObjectUnitTests.java index 8f48ddd05..3efba4f05 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/JsonSchemaObjectUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/JsonSchemaObjectUnitTests.java @@ -41,6 +41,7 @@ import org.springframework.data.domain.Range.*; * * @author Christoph Strobl * @author Mark Paluch + * @author Michał Kurcius */ public class JsonSchemaObjectUnitTests { @@ -269,6 +270,13 @@ public class JsonSchemaObjectUnitTests { .append("items", Arrays.asList(new Document("type", "string"), new Document("type", "boolean")))); } + @Test // DATAMONGO-2613 + public void arrayObjectShouldRenderItemsCorrectlyAsObjectIfContainsOnlyOneElement() { + + assertThat(array().items(Collections.singletonList(string())).toDocument()).isEqualTo(new Document("type", "array") + .append("items", new Document("type", "string"))); + } + @Test // DATAMONGO-1835 public void arrayObjectShouldRenderMaxItemsCorrectly() {