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 86e93fec1..f7b25698e 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 @@ -415,7 +415,8 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect * * @author Oleg Zhurakousky */ - public class FunctionInvocationWrapper implements Function, Consumer, Supplier { + public class FunctionInvocationWrapper implements Function, Consumer, + Supplier, Runnable { private final Object target; @@ -519,6 +520,11 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect return this.doApply(input, false, enricher); } + @Override + public void run() { + this.apply(null); + } + public Type getFunctionType() { return this.functionType; } diff --git a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java index 8aecbcaae..94d141929 100644 --- a/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java +++ b/spring-cloud-function-context/src/test/java/org/springframework/cloud/function/context/catalog/BeanFactoryAwareFunctionRegistryTests.java @@ -484,6 +484,13 @@ public class BeanFactoryAwareFunctionRegistryTests { assertThat(f.apply("Bubbles")).isEqualTo("BUBBLES"); } + @Test + public void testSupplierConsumerAsRunnable() { + FunctionCatalog catalog = this.configureCatalog(SampleFunctionConfiguration.class); + Runnable f = catalog.lookup("numberword|imperativeConsumer"); + f.run(); + } + @EnableAutoConfiguration public static class PojoToMessageFunctionCompositionConfiguration {