diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java index 72e6467b9..33eeee9ba 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingDocumentCodec.java @@ -176,6 +176,7 @@ public class ParameterBindingDocumentCodec implements CollectibleCodec return this.decode(reader, DecoderContext.builder().build()); } + @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public Document decode(final BsonReader reader, final DecoderContext decoderContext) { @@ -203,12 +204,13 @@ public class ParameterBindingDocumentCodec implements CollectibleCodec try { Object value = readValue(reader, decoderContext); - if (value instanceof Map) { + if (value instanceof Map) { if (!((Map) value).isEmpty()) { - return new Document((Map) value); + return new Document((Map) value); } } } catch (Exception ex) { + e.addSuppressed(ex); throw e; } } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReaderUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReaderUnitTests.java index 93d54f446..6939add04 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReaderUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/util/json/ParameterBindingJsonReaderUnitTests.java @@ -299,7 +299,7 @@ class ParameterBindingJsonReaderUnitTests { } @Test // DATAMONGO-2545 - void shouldAllowMethodArgumentPlaceholdersInQuotedSpelExpressions/*becuase this worked before*/() { + void shouldAllowMethodArgumentPlaceholdersInQuotedSpelExpressions/*because this worked before*/() { Object[] args = new Object[] { "yess", "nooo" }; StandardEvaluationContext evaluationContext = (StandardEvaluationContext) EvaluationContextProvider.DEFAULT @@ -322,7 +322,7 @@ class ParameterBindingJsonReaderUnitTests { evaluationContext.setRootObject(new DummySecurityObject(new DummyWithId("wonderwoman"))); String json = "?#{ T(" + this.getClass().getName() - + ").isBatman() ? {'_class': { '$eq' : 'region' }} : { '$and' : { {'_class': { '$eq' : 'region' } }, {'user.superviser': principal.id } } } }"; + + ").isBatman() ? {'_class': { '$eq' : 'region' }} : { '$and' : { {'_class': { '$eq' : 'region' } }, {'user.supervisor': principal.id } } } }"; ParameterBindingJsonReader reader = new ParameterBindingJsonReader(json, new ParameterBindingContext((index) -> args[index], new SpelExpressionParser(), evaluationContext)); @@ -330,7 +330,7 @@ class ParameterBindingJsonReaderUnitTests { assertThat(target) .isEqualTo(new Document("$and", Arrays.asList(new Document("_class", new Document("$eq", "region")), - new Document("user.superviser", "wonderwoman")))); + new Document("user.supervisor", "wonderwoman")))); } private static Document parse(String json, Object... args) {