diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java index 381a9326528..f372ab45638 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/AbstractMessageConverter.java @@ -242,7 +242,7 @@ public abstract class AbstractMessageConverter implements SmartMessageConverter return !isStrictContentTypeMatch(); } for (MimeType current : getSupportedMimeTypes()) { - if (current.getType().equals(mimeType.getType()) && current.getSubtype().equals(mimeType.getSubtype())) { + if (current.includes(mimeType)) { return true; } } diff --git a/spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java b/spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java index 85c6bbba659..e3168f49f93 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/converter/MappingJackson2MessageConverterTests.java @@ -54,7 +54,7 @@ class MappingJackson2MessageConverterTests { } @Test // SPR-12724 - public void mimetypeParametrizedConstructor() { + void mimetypeParametrizedConstructor() { MimeType mimetype = new MimeType("application", "xml", StandardCharsets.UTF_8); MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(mimetype); assertThat(converter.getSupportedMimeTypes()).contains(mimetype); @@ -63,7 +63,7 @@ class MappingJackson2MessageConverterTests { } @Test // SPR-12724 - public void mimetypesParametrizedConstructor() { + void mimetypesParametrizedConstructor() { MimeType jsonMimetype = new MimeType("application", "json", StandardCharsets.UTF_8); MimeType xmlMimetype = new MimeType("application", "xml", StandardCharsets.UTF_8); MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(jsonMimetype, xmlMimetype); @@ -72,6 +72,22 @@ class MappingJackson2MessageConverterTests { .isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)).isFalse(); } + @Test + void supportJsonMimeType() { + MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); + Message message = MessageBuilder.withPayload("foo") + .setHeader(MessageHeaders.CONTENT_TYPE, "application/json").build(); + assertThat(converter.supportsMimeType(message.getHeaders())).isTrue(); + } + + @Test + void supportVendorJsonMimeTypes() { + MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); + Message message = MessageBuilder.withPayload("foo") + .setHeader(MessageHeaders.CONTENT_TYPE, "application/vnd.springframework.type+json").build(); + assertThat(converter.supportsMimeType(message.getHeaders())).isTrue(); + } + @Test void fromMessage() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();