Skip to content

Commit b2927ab

Browse files
christophstroblmp911de
authored andcommitted
DATAMONGO-2633 - Fix json parsing of nested arrays in ParameterBindingDocumentCodec.
Original pull request: #888.
1 parent 91c39e2 commit b2927ab

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -365,15 +365,7 @@ private List<Object> readList(final BsonReader reader, final DecoderContext deco
365365
reader.readStartArray();
366366
List<Object> list = new ArrayList<>();
367367
while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
368-
369-
// Spring Data Customization START
370-
Object listValue = readValue(reader, decoderContext);
371-
if (listValue instanceof Collection) {
372-
list.addAll((Collection) listValue);
373-
break;
374-
}
375-
list.add(listValue);
376-
// Spring Data Customization END
368+
list.add(readValue(reader, decoderContext));
377369
}
378370
reader.readEndArray();
379371
return list;

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReaderUnitTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,15 @@ void shouldParseRegexWithPlaceholderCorrectly() {
374374
.isEqualTo(Document.parse("{ $and: [{'fieldA': {$in: [/ABC.*/, /CDE.*F/]}}, {'fieldB': {$ne: null}}]}"));
375375
}
376376

377+
@Test // DATAMONGO-2633
378+
void shouldParseNestedArrays() {
379+
380+
Document target = parse("{ 'stores.location' : { $geoWithin: { $centerSphere: [ [ ?0, 48.799029 ] , ?1 ] } } }",
381+
1.948516D, 0.004D);
382+
assertThat(target).isEqualTo(Document
383+
.parse("{ 'stores.location' : { $geoWithin: { $centerSphere: [ [ 1.948516, 48.799029 ] , 0.004 ] } } }"));
384+
}
385+
377386
private static Document parse(String json, Object... args) {
378387

379388
ParameterBindingJsonReader reader = new ParameterBindingJsonReader(json, args);

0 commit comments

Comments
 (0)