Skip to content

Commit ad4ab65

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

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
@@ -336,15 +336,7 @@ private List<Object> readList(final BsonReader reader, final DecoderContext deco
336336
reader.readStartArray();
337337
List<Object> list = new ArrayList<>();
338338
while (reader.readBsonType() != BsonType.END_OF_DOCUMENT) {
339-
340-
// Spring Data Customization START
341-
Object listValue = readValue(reader, decoderContext);
342-
if (listValue instanceof Collection) {
343-
list.addAll((Collection) listValue);
344-
break;
345-
}
346-
list.add(listValue);
347-
// Spring Data Customization END
339+
list.add(readValue(reader, decoderContext));
348340
}
349341
reader.readEndArray();
350342
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
@@ -349,6 +349,15 @@ public void shouldParseRegexWithPlaceholderCorrectly() {
349349
.isEqualTo(Document.parse("{ $and: [{'fieldA': {$in: [/ABC.*/, /CDE.*F/]}}, {'fieldB': {$ne: null}}]}"));
350350
}
351351

352+
@Test // DATAMONGO-2633
353+
public void shouldParseNestedArrays() {
354+
355+
Document target = parse("{ 'stores.location' : { $geoWithin: { $centerSphere: [ [ ?0, 48.799029 ] , ?1 ] } } }",
356+
1.948516D, 0.004D);
357+
assertThat(target).isEqualTo(Document
358+
.parse("{ 'stores.location' : { $geoWithin: { $centerSphere: [ [ 1.948516, 48.799029 ] , 0.004 ] } } }"));
359+
}
360+
352361
private static Document parse(String json, Object... args) {
353362

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

0 commit comments

Comments
 (0)