GH-773 Fix wild card type matching in SmartCompositeMessageConverter
Resolves #773
This commit is contained in:
@@ -74,18 +74,21 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
|
|||||||
if (headers.get(MessageHeaders.CONTENT_TYPE) == null) {
|
if (headers.get(MessageHeaders.CONTENT_TYPE) == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object value = headers.get(MessageHeaders.CONTENT_TYPE).toString();
|
Object value = headers.get(MessageHeaders.CONTENT_TYPE).toString();
|
||||||
String[] contentTypes = StringUtils.delimitedListToStringArray((String) value, ",");
|
String[] contentTypes = StringUtils.delimitedListToStringArray((String) value, ",");
|
||||||
for (String contentType : contentTypes) {
|
for (String contentType : contentTypes) {
|
||||||
if (!MimeType.valueOf(contentType).isConcrete()) {
|
if (!MimeType.valueOf(contentType).isConcrete()) {
|
||||||
List<MimeType> supportedMimeTypes = ((AbstractMessageConverter) converter).getSupportedMimeTypes();
|
List<MimeType> supportedMimeTypes = ((AbstractMessageConverter) converter).getSupportedMimeTypes();
|
||||||
for (MimeType supportedMimeType : supportedMimeTypes) {
|
for (MimeType supportedMimeType : supportedMimeTypes) {
|
||||||
MessageHeaderAccessor h = new MessageHeaderAccessor();
|
if (supportedMimeType.isCompatibleWith(MimeType.valueOf(contentType))) {
|
||||||
h.copyHeaders(headers);
|
MessageHeaderAccessor h = new MessageHeaderAccessor();
|
||||||
h.setHeader(MessageHeaders.CONTENT_TYPE, supportedMimeType);
|
h.copyHeaders(headers);
|
||||||
Message<?> result = converter.toMessage(payload, h.getMessageHeaders());
|
h.setHeader(MessageHeaders.CONTENT_TYPE, supportedMimeType);
|
||||||
if (result != null) {
|
Message<?> result = converter.toMessage(payload, h.getMessageHeaders());
|
||||||
return result;
|
if (result != null) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user