From c86890806e856ef90f64f2b2e6142731eef74747 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Mon, 28 Jun 2021 19:02:34 +0200 Subject: [PATCH] GH-710 Fix output conversion logic for when Function is wrapped in around advice --- .../context/catalog/SimpleFunctionRegistry.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java index c46457ebc..0e4292ea6 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java @@ -377,9 +377,9 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect } FunctionInvocationWrapper(String functionDefinition, Object target, Type inputType, Type outputType) { - if (functionAroundWrapper != null) { - this.setSkipOutputConversion(true); - } +// if (functionAroundWrapper != null) { +// this.setSkipOutputConversion(true); +// } this.target = target; this.inputType = this.normalizeType(inputType); this.outputType = this.normalizeType(outputType); @@ -1022,14 +1022,14 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect if (this.skipOutputConversion) { return output; } - if (output instanceof Message && isExtractPayload((Message) output, type)) { + if (functionAroundWrapper == null && output instanceof Message && isExtractPayload((Message) output, type)) { output = ((Message) output).getPayload(); } if (!(output instanceof Publisher) && this.enhancer != null) { output = enhancer.apply(output); } - if (ObjectUtils.isEmpty(contentType) && !(output instanceof Publisher)) { + if (functionAroundWrapper == null && ObjectUtils.isEmpty(contentType) && !(output instanceof Publisher)) { return output; } @@ -1051,7 +1051,7 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect } else { convertedOutput = messageConverter.toMessage(output, - new MessageHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, contentType[0]))); + new MessageHeaders(Collections.singletonMap(MessageHeaders.CONTENT_TYPE, contentType == null ? "application/json" : contentType[0]))); } return convertedOutput;