Browse Source

DATAMONGO-2523 - Fix Json binding of SpEL expressions in arrays.

The closing bracket must not have a leading whitespace.

Original pull request: #859.
pull/862/head
Christoph Strobl 6 years ago committed by Mark Paluch
parent
commit
32f3e60c9f
No known key found for this signature in database
GPG Key ID: 51A00FA751B91849
  1. 2
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/JsonScanner.java
  2. 8
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReaderUnitTests.java

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

@ -231,7 +231,7 @@ class JsonScanner { @@ -231,7 +231,7 @@ class JsonScanner {
parenthesisCount--;
if (parenthesisCount == 0) {
buffer.read();
c = buffer.read();
break;
}
}

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

@ -256,6 +256,14 @@ class ParameterBindingJsonReaderUnitTests { @@ -256,6 +256,14 @@ class ParameterBindingJsonReaderUnitTests {
.isEqualTo(new Document("name", new Document("$in", Collections.singletonList("dalinar,kohlin"))));
}
@Test // DATAMONGO-2523
void bindSpelExpressionInArrayCorrectly/* closing bracket must not have leading whitespace! */() {
Document target = parse("{ $and : [?#{ [0] == null ? { '$where' : 'true' } : { 'v1' : { '$in' : {[0]} } } }]}", 1);
assertThat(target).isEqualTo(Document.parse("{\"$and\": [{\"v1\": {\"$in\": [1]}}]}"));
}
private static Document parse(String json, Object... args) {
ParameterBindingJsonReader reader = new ParameterBindingJsonReader(json, args);

Loading…
Cancel
Save