diff --git a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverter.java b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverter.java index 3bd8949ab..18e560afd 100644 --- a/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverter.java +++ b/spring-cloud-stream/src/main/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverter.java @@ -110,12 +110,7 @@ class ApplicationJsonMessageMarshallingConverter extends MappingJackson2MessageC StandardCharsets.UTF_8); } else { - try { - result = super.convertFromInternal(message, targetClass, conversionHint); - } - catch (Exception e) { - // ignore - } + result = super.convertFromInternal(message, targetClass, conversionHint); } } diff --git a/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverterTests.java b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverterTests.java new file mode 100644 index 000000000..375c8f61c --- /dev/null +++ b/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/converter/ApplicationJsonMessageMarshallingConverterTests.java @@ -0,0 +1,55 @@ +/* + * Copyright 2021-2021 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.stream.converter; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.Test; + +import org.springframework.messaging.converter.MessageConversionException; +import org.springframework.messaging.support.GenericMessage; + +import static org.junit.Assert.fail; + + +public class ApplicationJsonMessageMarshallingConverterTests { + @Test + void badJson() { + + try { + ApplicationJsonMessageMarshallingConverter converter = new ApplicationJsonMessageMarshallingConverter( + initObjectMapper()); + converter.convertFromInternal( + new GenericMessage<>("{ notjson }".getBytes()), JsonNode.class, null); + } + catch (MessageConversionException e) { + // Good + } + catch (Throwable t) { + fail(); + } + } + + private ObjectMapper initObjectMapper() { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + return objectMapper; + } +}