GH-1172 Ensure content-type set in a message is honored on the output

Also, ensures that the proper content type is set in GCF FunctionInvoker

Resolves #1172
This commit is contained in:
Oleg Zhurakousky
2024-09-09 12:51:36 +02:00
parent 81a2d24a14
commit 85a4fffcd4
7 changed files with 48 additions and 9 deletions

View File

@@ -1438,9 +1438,15 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
*/
@SuppressWarnings("unchecked")
private Object convertOutputMessageIfNecessary(Object output, String expectedOutputContetntType) {
String contentType = ((Message) output).getHeaders().containsKey(FunctionProperties.EXPECT_CONTENT_TYPE_HEADER)
? (String) ((Message) output).getHeaders().get(FunctionProperties.EXPECT_CONTENT_TYPE_HEADER)
: expectedOutputContetntType;
String contentType;
if (((Message) output).getHeaders().containsKey(MessageHeaders.CONTENT_TYPE)) {
contentType = ((Message) output).getHeaders().get(MessageHeaders.CONTENT_TYPE).toString();
}
else {
contentType = ((Message) output).getHeaders().containsKey(FunctionProperties.EXPECT_CONTENT_TYPE_HEADER)
? (String) ((Message) output).getHeaders().get(FunctionProperties.EXPECT_CONTENT_TYPE_HEADER)
: expectedOutputContetntType;
}
if (StringUtils.hasText(contentType)) {
Map<String, Object> headersMap = new HashMap(((Message) output).getHeaders());