SCST-GH-2355 Add support for batch processing of collections with different types

Specifically KafkaNull. But this commit effectively paves a path for any type
This commit is contained in:
Oleg Zhurakousky
2022-06-08 19:46:35 +02:00
parent a181c50426
commit a14a8d9e9d

View File

@@ -92,8 +92,9 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
isConverted = true; isConverted = true;
} }
for (Iterator<MessageConverter> iterator = getConverters().iterator(); iterator.hasNext() && !isConverted;) { for (Iterator<MessageConverter> iterator = getConverters().iterator(); iterator.hasNext() && !isConverted;) {
Message<?> m = MessageBuilder.withPayload(item).copyHeaders(message.getHeaders()).build(); // TODO Message creating may be expensive
MessageConverter converter = (MessageConverter) iterator.next(); MessageConverter converter = (MessageConverter) iterator.next();
if (!converter.getClass().getName().endsWith("ApplicationJsonMessageMarshallingConverter")) { // TODO Stream stuff, needs to be removed
Message<?> m = MessageBuilder.withPayload(item).copyHeaders(message.getHeaders()).build(); // TODO Message creating may be expensive
Object conversionResult = (converter instanceof SmartMessageConverter & genericItemRawType != genericItemType ? Object conversionResult = (converter instanceof SmartMessageConverter & genericItemRawType != genericItemType ?
((SmartMessageConverter) converter).fromMessage(m, genericItemRawType, genericItemType) : ((SmartMessageConverter) converter).fromMessage(m, genericItemRawType, genericItemType) :
converter.fromMessage(m, genericItemRawType)); converter.fromMessage(m, genericItemRawType));
@@ -103,10 +104,12 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
} }
} }
} }
}
result = resultList; result = resultList;
} }
else { else {
for (MessageConverter converter : getConverters()) { for (MessageConverter converter : getConverters()) {
if (!converter.getClass().getName().endsWith("ApplicationJsonMessageMarshallingConverter")) {// TODO Stream stuff, needs to be removed
result = (converter instanceof SmartMessageConverter ? result = (converter instanceof SmartMessageConverter ?
((SmartMessageConverter) converter).fromMessage(message, targetClass, conversionHint) : ((SmartMessageConverter) converter).fromMessage(message, targetClass, conversionHint) :
converter.fromMessage(message, targetClass)); converter.fromMessage(message, targetClass));
@@ -115,6 +118,7 @@ public class SmartCompositeMessageConverter extends CompositeMessageConverter {
} }
} }
} }
}
return result; return result;
} }