From 9b1e69f05de4e9abdb49cb159bfd552ccb04be21 Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Fri, 26 Jul 2019 15:33:26 +0200 Subject: [PATCH] Removed auto-fluxing Supplier result when Supplier is not reactive --- .../context/catalog/BeanFactoryAwareFunctionRegistry.java | 2 +- .../deployer/SpringFunctionAppConfigurationTests.java | 8 ++++---- .../SpringFunctionAppExplodedConfigurationTests.java | 8 ++++---- .../cloud/function/web/RequestProcessor.java | 4 +++- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java index 5cee940aa..916920a65 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistry.java @@ -433,7 +433,7 @@ public class BeanFactoryAwareFunctionRegistry * This is ONLY relevant for web, so consider exposing some property or may be * the fact that this is a rare case (Supplier) leave it temporarily as is. */ - return Flux.just(result); +// return Flux.just(result); } return result; diff --git a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppConfigurationTests.java b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppConfigurationTests.java index fd890ddc8..1deaf378c 100644 --- a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppConfigurationTests.java +++ b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppConfigurationTests.java @@ -53,9 +53,9 @@ public abstract class SpringFunctionAppConfigurationTests { @Test public void test() throws Exception { - Supplier> function = this.catalog.lookup(Supplier.class, + Supplier function = this.catalog.lookup(Supplier.class, "function0"); - assertThat(function.get().blockFirst()).isEqualTo("one"); + assertThat(function.get()).isEqualTo("one"); } } @@ -66,9 +66,9 @@ public abstract class SpringFunctionAppConfigurationTests { @Test public void test() throws Exception { - Supplier> function = this.catalog.lookup(Supplier.class, + Supplier function = this.catalog.lookup(Supplier.class, "function0|function1"); - assertThat(function.get().blockFirst()).isEqualTo(3); + assertThat(function.get()).isEqualTo(3); } } diff --git a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppExplodedConfigurationTests.java b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppExplodedConfigurationTests.java index e7f82566e..4f52a3892 100644 --- a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppExplodedConfigurationTests.java +++ b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/SpringFunctionAppExplodedConfigurationTests.java @@ -53,9 +53,9 @@ public abstract class SpringFunctionAppExplodedConfigurationTests { @Test public void test() throws Exception { - Supplier> function = this.catalog.lookup(Supplier.class, + Supplier function = this.catalog.lookup(Supplier.class, "function0"); - assertThat(function.get().blockFirst()).isEqualTo("one"); + assertThat(function.get()).isEqualTo("one"); } } @@ -67,9 +67,9 @@ public abstract class SpringFunctionAppExplodedConfigurationTests { @Test public void test() throws Exception { - Supplier> function = this.catalog.lookup(Supplier.class, + Supplier function = this.catalog.lookup(Supplier.class, "function0|function1"); - assertThat(function.get().blockFirst()).isEqualTo(3); + assertThat(function.get()).isEqualTo(3); } } diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java index 09763d397..a4ab3da94 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/RequestProcessor.java @@ -112,12 +112,14 @@ public class RequestProcessor { return new FunctionWrapper(function, null); } + @SuppressWarnings("rawtypes") public Mono> get(FunctionWrapper wrapper) { if (wrapper.function() != null) { return response(wrapper, wrapper.function(), value(wrapper), true, true); } else { - return response(wrapper, wrapper.supplier(), wrapper.supplier().get(), null, + Object result = wrapper.supplier().get(); + return response(wrapper, wrapper.supplier(), result instanceof Publisher ? (Publisher) result : Flux.just(result), null, true); }