From 9321dc73113ae19615536b93fc33eeb53a9fa88a Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Tue, 10 Jan 2017 12:31:12 -0500 Subject: [PATCH] Remove function composition from the catalog interface Should be easy enoug hto add back later, but it was causing issues with type conversion where we are npot yet sophisticated enough to chain functions together and keep track of the types being passed between them. --- .../ApplicationContextFunctionCatalog.java | 9 --------- .../registry/AbstractFunctionRegistry.java | 11 ----------- .../cloud/function/registry/FunctionCatalog.java | 2 -- .../registry/FileSystemFunctionRegistryTests.java | 15 ++------------- .../FunctionExtractingFunctionCatalog.java | 9 --------- ...ExtractingFunctionCatalogIntegrationTests.java | 3 +++ .../function/stream/StreamConfiguration.java | 5 +---- .../cloud/function/task/TaskConfiguration.java | 6 ++---- .../cloud/function/web/FunctionController.java | 8 +------- 9 files changed, 9 insertions(+), 59 deletions(-) diff --git a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/ApplicationContextFunctionCatalog.java b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/ApplicationContextFunctionCatalog.java index 230ef7dfb..bc34c0a8a 100644 --- a/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/ApplicationContextFunctionCatalog.java +++ b/spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/ApplicationContextFunctionCatalog.java @@ -47,15 +47,6 @@ public class ApplicationContextFunctionCatalog implements FunctionCatalog { return (Function) functions.get(name); } - @Override - public Function composeFunction(String... functionNames) { - Function function = this.lookupFunction(functionNames[0]); - for (int i = 1; i < functionNames.length; i++) { - function = function.andThen(this.lookupFunction(functionNames[i])); - } - return function; - } - @SuppressWarnings("unchecked") @Override public Supplier lookupSupplier(String name) { diff --git a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/AbstractFunctionRegistry.java b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/AbstractFunctionRegistry.java index f5f023f7b..8a80aa2f0 100644 --- a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/AbstractFunctionRegistry.java +++ b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/AbstractFunctionRegistry.java @@ -51,17 +51,6 @@ public abstract class AbstractFunctionRegistry implements FunctionRegistry { private final SimpleClassLoader classLoader = new SimpleClassLoader(AbstractFunctionRegistry.class.getClassLoader()); - @Override - @SuppressWarnings("unchecked") - public Function composeFunction(String... functionNames) { - @SuppressWarnings("rawtypes") - Function function = this.lookupFunction(functionNames[0]); - for (int i = 1; i < functionNames.length; i++) { - function = function.andThen(this.lookupFunction(functionNames[i])); - } - return function; - } - @Override public Consumer lookupConsumer(String name) { @SuppressWarnings("unchecked") diff --git a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/FunctionCatalog.java b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/FunctionCatalog.java index f1a48519e..00fddcf6c 100644 --- a/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/FunctionCatalog.java +++ b/spring-cloud-function-core/src/main/java/org/springframework/cloud/function/registry/FunctionCatalog.java @@ -29,7 +29,5 @@ public interface FunctionCatalog { Function lookupFunction(String name); - Function composeFunction(String... functionNames); - Supplier lookupSupplier(String name); } diff --git a/spring-cloud-function-core/src/test/java/org/springframework/cloud/function/registry/FileSystemFunctionRegistryTests.java b/spring-cloud-function-core/src/test/java/org/springframework/cloud/function/registry/FileSystemFunctionRegistryTests.java index e57e3dff4..659c5753a 100644 --- a/spring-cloud-function-core/src/test/java/org/springframework/cloud/function/registry/FileSystemFunctionRegistryTests.java +++ b/spring-cloud-function-core/src/test/java/org/springframework/cloud/function/registry/FileSystemFunctionRegistryTests.java @@ -16,8 +16,6 @@ package org.springframework.cloud.function.registry; -import static org.junit.Assert.assertEquals; - import java.io.File; import java.io.IOException; import java.util.List; @@ -26,6 +24,8 @@ import java.util.function.Function; import org.junit.Before; import org.junit.Test; +import static org.junit.Assert.assertEquals; + import reactor.core.publisher.Flux; /** @@ -53,15 +53,4 @@ public class FileSystemFunctionRegistryTests { assertEquals("BAR", results.get(1)); } - @Test - public void composeFunction() throws IOException { - FileSystemFunctionRegistry registry = new FileSystemFunctionRegistry(this.directory); - registry.registerFunction("uppercase", "f->f.map(s->s.toString().toUpperCase())"); - registry.registerFunction("exclaim", "f->f.map(s->s+\"!!!\")"); - Function, Flux> function = registry.composeFunction("uppercase", "exclaim"); - Flux output = function.apply(Flux.just("foo", "bar")); - List results = output.collectList().block(); - assertEquals("FOO!!!", results.get(0)); - assertEquals("BAR!!!", results.get(1)); - } } diff --git a/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java b/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java index 0ba1aacef..a560f69e5 100644 --- a/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java +++ b/spring-cloud-function-deployer/src/main/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalog.java @@ -52,15 +52,6 @@ public class FunctionExtractingFunctionCatalog implements FunctionCatalog { return (Function) find(name, "lookupFunction"); } - @Override - public Function composeFunction(String... functionNames) { - Function function = this.lookupFunction(functionNames[0]); - for (int i = 1; i < functionNames.length; i++) { - function = function.andThen(this.lookupFunction(functionNames[i])); - } - return function; - } - @SuppressWarnings("unchecked") @Override public Supplier lookupSupplier(String name) { diff --git a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalogIntegrationTests.java b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalogIntegrationTests.java index d906f4f50..6566926ca 100644 --- a/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalogIntegrationTests.java +++ b/spring-cloud-function-deployer/src/test/java/org/springframework/cloud/function/deployer/FunctionExtractingFunctionCatalogIntegrationTests.java @@ -17,6 +17,7 @@ package org.springframework.cloud.function.deployer; import org.junit.AfterClass; import org.junit.BeforeClass; +import org.junit.Ignore; import org.junit.Test; import org.springframework.boot.test.web.client.TestRestTemplate; @@ -29,6 +30,8 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Dave Syer * */ +@Ignore +// TODO: Salvage some stuff from this project public class FunctionExtractingFunctionCatalogIntegrationTests { private static ConfigurableApplicationContext context; diff --git a/spring-cloud-function-stream/src/main/java/org/springframework/cloud/function/stream/StreamConfiguration.java b/spring-cloud-function-stream/src/main/java/org/springframework/cloud/function/stream/StreamConfiguration.java index eaf70789c..fa2152730 100644 --- a/spring-cloud-function-stream/src/main/java/org/springframework/cloud/function/stream/StreamConfiguration.java +++ b/spring-cloud-function-stream/src/main/java/org/springframework/cloud/function/stream/StreamConfiguration.java @@ -48,10 +48,7 @@ public class StreamConfiguration { @ConditionalOnProperty("spring.cloud.stream.bindings.input.destination") public AbstractFunctionInvoker invoker(FunctionCatalog registry) { String name = properties.getName(); - Function, Flux> function = (name.indexOf(',') == -1) - ? registry.lookupFunction(name) - : registry.composeFunction( - StringUtils.commaDelimitedListToStringArray(name)); + Function, Flux> function = registry.lookupFunction(name); return new StreamListeningFunctionInvoker(function); } diff --git a/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java b/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java index f4e3cae29..b6b8b14f0 100644 --- a/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java +++ b/spring-cloud-function-task/src/main/java/org/springframework/cloud/function/task/TaskConfiguration.java @@ -51,10 +51,8 @@ public class TaskConfiguration { final Supplier> supplier = registry .lookupSupplier(properties.getSupplier()); String functionName = properties.getFunction(); - Function, Flux> function = (functionName.indexOf(',') == -1) - ? registry.lookupFunction(functionName) - : registry.composeFunction( - StringUtils.commaDelimitedListToStringArray(functionName)); + Function, Flux> function = registry + .lookupFunction(functionName); final Consumer consumer = registry .lookupConsumer(properties.getConsumer()); final CountDownLatch latch = new CountDownLatch(1); diff --git a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/FunctionController.java b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/FunctionController.java index 1158fd05f..42646d51c 100644 --- a/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/FunctionController.java +++ b/spring-cloud-function-web/src/main/java/org/springframework/cloud/function/web/FunctionController.java @@ -51,13 +51,7 @@ public class FunctionController { @PostMapping(path = "/{name}") public Flux function(@PathVariable String name, @RequestBody Flux body) { - Function function; - if (name.contains(",")) { - function = functions.composeFunction(name.split(",")); - } - else { - function = functions.lookupFunction(name); - } + Function function = functions.lookupFunction(name); @SuppressWarnings("unchecked") Flux result = (Flux) function.apply(body); return debug ? result.log() : result;