GH-419 Fix output type conversion
Ensured that we check for the output type and see if and what type of conversion needs to be applied. If output is already a message with payload byte[], then no conversion is necessary Resolves #419
This commit is contained in:
@@ -602,10 +602,28 @@ public class BeanFactoryAwareFunctionRegistry
|
|||||||
|
|
||||||
convertedValue = acceptedContentTypes.stream()
|
convertedValue = acceptedContentTypes.stream()
|
||||||
.map(acceptedContentType -> {
|
.map(acceptedContentType -> {
|
||||||
Object v = value instanceof Message ? ((Message<?>) value).getPayload() : value;
|
|
||||||
return messageConverter
|
Message<?> resultMessage = null;
|
||||||
.toMessage(v, new MessageHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, acceptedContentType)));
|
if (value instanceof Message) {
|
||||||
})
|
Message<?> message = (Message<?>) value;
|
||||||
|
if (message.getPayload() instanceof byte[]) {
|
||||||
|
resultMessage = message;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resultMessage = messageConverter.toMessage(message.getPayload(), message.getHeaders());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (value instanceof byte[]) {
|
||||||
|
resultMessage = MessageBuilder.withPayload(value).setHeader(MessageHeaders.CONTENT_TYPE, acceptedContentType).build();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
resultMessage = messageConverter
|
||||||
|
.toMessage(value, new MessageHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, acceptedContentType)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultMessage;
|
||||||
|
})
|
||||||
.filter(v -> v != null)
|
.filter(v -> v != null)
|
||||||
.findFirst().orElse(null);
|
.findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user