Avoiding classCast exception
Resolves #991 When messageconverters list has CloudEventMessageConverter before AvroSchemaRegisteryClientMessageConverter, and message has header contentType = application/*+avro It results in ClassCastException hence fixing the same.
This commit is contained in:
committed by
Oleg Zhurakousky
parent
1a9590f9db
commit
65b17b820c
@@ -136,15 +136,17 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
|
||||
String[] contentTypes = StringUtils.delimitedListToStringArray((String) value, ",");
|
||||
for (String contentType : contentTypes) {
|
||||
if (!MimeType.valueOf(contentType).isConcrete()) {
|
||||
List<MimeType> supportedMimeTypes = ((AbstractMessageConverter) converter).getSupportedMimeTypes();
|
||||
for (MimeType supportedMimeType : supportedMimeTypes) {
|
||||
if (supportedMimeType.isCompatibleWith(MimeType.valueOf(contentType))) {
|
||||
MessageHeaderAccessor h = new MessageHeaderAccessor();
|
||||
h.copyHeaders(headers);
|
||||
h.setHeader(MessageHeaders.CONTENT_TYPE, supportedMimeType);
|
||||
Message<?> result = converter.toMessage(payload, h.getMessageHeaders());
|
||||
if (result != null) {
|
||||
return result;
|
||||
if (converter instanceof AbstractMessageConverter) {
|
||||
List<MimeType> supportedMimeTypes = ((AbstractMessageConverter) converter).getSupportedMimeTypes();
|
||||
for (MimeType supportedMimeType : supportedMimeTypes) {
|
||||
if (supportedMimeType.isCompatibleWith(MimeType.valueOf(contentType))) {
|
||||
MessageHeaderAccessor h = new MessageHeaderAccessor();
|
||||
h.copyHeaders(headers);
|
||||
h.setHeader(MessageHeaders.CONTENT_TYPE, supportedMimeType);
|
||||
Message<?> result = converter.toMessage(payload, h.getMessageHeaders());
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user