From baeecb6ea68d9d00add6f42553db973030edf6f7 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Tue, 19 Oct 2021 17:02:03 +0200 Subject: [PATCH] GH-SCST-2235 Fix Partitioning issue with FunctionAroundWrapper" --- .../context/catalog/FunctionAroundWrapper.java | 13 ++++++++++--- .../context/catalog/SimpleFunctionRegistry.java | 6 ++++++ .../function-sample-kotlin-web/pom.xml | 6 +++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionAroundWrapper.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionAroundWrapper.java index 87694f80d..5cc22cf1c 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionAroundWrapper.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionAroundWrapper.java @@ -37,13 +37,20 @@ public abstract class FunctionAroundWrapper implements BiFunction) input, targetFunction); + result = this.doApply((Message) input, targetFunction); } else if (targetFunction.isSupplier() && !targetFunction.isOutputTypePublisher()) { - return this.doApply(null, targetFunction); + result = this.doApply(null, targetFunction); } - return targetFunction.apply(input); + else { + result = targetFunction.apply(input); + } + targetFunction.setSkipOutputConversion(isSkipOutputConversion); + return result; } protected abstract Object doApply(Message input, FunctionInvocationWrapper targetFunction); 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 b63632f30..101249b58 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 @@ -390,6 +390,7 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect private Function enhancer; FunctionInvocationWrapper(FunctionInvocationWrapper function) { + this.expectedOutputContentType = function.expectedOutputContentType; this.skipOutputConversion = function.skipOutputConversion; this.skipInputConversion = function.skipInputConversion; this.target = function.target; @@ -407,6 +408,11 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect this.message = this.inputType != null && FunctionTypeUtils.isMessage(this.inputType); } + public boolean isSkipOutputConversion() { + return skipOutputConversion; + } + + public boolean isPrototype() { return this.isPrototype(); } diff --git a/spring-cloud-function-samples/function-sample-kotlin-web/pom.xml b/spring-cloud-function-samples/function-sample-kotlin-web/pom.xml index c21de04f8..1f80c94fe 100644 --- a/spring-cloud-function-samples/function-sample-kotlin-web/pom.xml +++ b/spring-cloud-function-samples/function-sample-kotlin-web/pom.xml @@ -36,17 +36,17 @@ org.springframework.cloud spring-cloud-function-kotlin - 3.1.2-SNAPSHOT + 3.1.5-SNAPSHOT org.springframework.cloud spring-cloud-function-web - 3.1.2-SNAPSHOT + 3.1.5-SNAPSHOT org.springframework.cloud spring-cloud-function-context - 3.1.2-SNAPSHOT + 3.1.5-SNAPSHOT org.springframework.boot