Skip to content

Commit 24b5191

Browse files
committed
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
1 parent e47d1e6 commit 24b5191

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/config/SmartCompositeMessageConverter.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -92,26 +92,30 @@ public Object fromMessage(Message<?> message, Class<?> targetClass, @Nullable Ob
9292
isConverted = true;
9393
}
9494
for (Iterator<MessageConverter> iterator = getConverters().iterator(); iterator.hasNext() && !isConverted;) {
95-
Message<?> m = MessageBuilder.withPayload(item).copyHeaders(message.getHeaders()).build(); // TODO Message creating may be expensive
9695
MessageConverter converter = (MessageConverter) iterator.next();
97-
Object conversionResult = (converter instanceof SmartMessageConverter & genericItemRawType != genericItemType ?
98-
((SmartMessageConverter) converter).fromMessage(m, genericItemRawType, genericItemType) :
99-
converter.fromMessage(m, genericItemRawType));
100-
if (conversionResult != null) {
101-
resultList.add(conversionResult);
102-
isConverted = true;
96+
if (!converter.getClass().getName().endsWith("ApplicationJsonMessageMarshallingConverter")) { // TODO Stream stuff, needs to be removed
97+
Message<?> m = MessageBuilder.withPayload(item).copyHeaders(message.getHeaders()).build(); // TODO Message creating may be expensive
98+
Object conversionResult = (converter instanceof SmartMessageConverter & genericItemRawType != genericItemType ?
99+
((SmartMessageConverter) converter).fromMessage(m, genericItemRawType, genericItemType) :
100+
converter.fromMessage(m, genericItemRawType));
101+
if (conversionResult != null) {
102+
resultList.add(conversionResult);
103+
isConverted = true;
104+
}
103105
}
104106
}
105107
}
106108
result = resultList;
107109
}
108110
else {
109111
for (MessageConverter converter : getConverters()) {
110-
result = (converter instanceof SmartMessageConverter ?
111-
((SmartMessageConverter) converter).fromMessage(message, targetClass, conversionHint) :
112-
converter.fromMessage(message, targetClass));
113-
if (result != null) {
114-
return result;
112+
if (!converter.getClass().getName().endsWith("ApplicationJsonMessageMarshallingConverter")) {// TODO Stream stuff, needs to be removed
113+
result = (converter instanceof SmartMessageConverter ?
114+
((SmartMessageConverter) converter).fromMessage(message, targetClass, conversionHint) :
115+
converter.fromMessage(message, targetClass));
116+
if (result != null) {
117+
return result;
118+
}
115119
}
116120
}
117121
}

0 commit comments

Comments
 (0)