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 8f612b797..f893fb703 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 { @@ -1194,7 +1195,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 cc69588cf..6e18e9787 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 @@ -22,6 +22,7 @@ import static org.springframework.data.mongodb.core.schema.JsonSchemaObject.of; import static org.springframework.data.mongodb.test.util.Assertions.*; import java.util.Arrays; +import java.util.Collections; import org.bson.Document; import org.junit.Test; @@ -33,6 +34,7 @@ import org.springframework.data.domain.Range.*; * * @author Christoph Strobl * @author Mark Paluch + * @author Michał Kurcius */ public class JsonSchemaObjectUnitTests { @@ -209,6 +211,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() {