Skip to content

Commit b388659

Browse files
mkurciuschristophstrobl
authored andcommitted
DATAMONGO-2613 - Fix single element ArrayJsonSchemaObject to document mapping.
Now toDocument calls toDocument on items correctly. Original Pull Request: #883
1 parent 90aa7b8 commit b388659

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/schema/TypedJsonSchemaObject.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
*
4242
* @author Christoph Strobl
4343
* @author Mark Paluch
44+
* @author Michał Kurcius
4445
* @since 2.1
4546
*/
4647
public class TypedJsonSchemaObject extends UntypedJsonSchemaObject {
@@ -1203,7 +1204,7 @@ public Document toDocument() {
12031204
Document doc = new Document(super.toDocument());
12041205

12051206
if (!CollectionUtils.isEmpty(items)) {
1206-
doc.append("items", items.size() == 1 ? items.iterator().next()
1207+
doc.append("items", items.size() == 1 ? items.iterator().next().toDocument()
12071208
: items.stream().map(JsonSchemaObject::toDocument).collect(Collectors.toList()));
12081209
}
12091210

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/schema/JsonSchemaObjectUnitTests.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
*
4242
* @author Christoph Strobl
4343
* @author Mark Paluch
44+
* @author Michał Kurcius
4445
*/
4546
public class JsonSchemaObjectUnitTests {
4647

@@ -269,6 +270,13 @@ public void arrayObjectShouldRenderItemsCorrectly() {
269270
.append("items", Arrays.asList(new Document("type", "string"), new Document("type", "boolean"))));
270271
}
271272

273+
@Test // DATAMONGO-2613
274+
public void arrayObjectShouldRenderItemsCorrectlyAsObjectIfContainsOnlyOneElement() {
275+
276+
assertThat(array().items(Collections.singletonList(string())).toDocument()).isEqualTo(new Document("type", "array")
277+
.append("items", new Document("type", "string")));
278+
}
279+
272280
@Test // DATAMONGO-1835
273281
public void arrayObjectShouldRenderMaxItemsCorrectly() {
274282

0 commit comments

Comments
 (0)