GH-568 Add support for casting resulting function as Runnable

Resolves #568
This commit is contained in:
Oleg Zhurakousky
2020-09-21 17:22:38 +02:00
parent 6863931f30
commit 4d49b4d6ec
2 changed files with 14 additions and 1 deletions

View File

@@ -415,7 +415,8 @@ public class SimpleFunctionRegistry implements FunctionRegistry, FunctionInspect
*
* @author Oleg Zhurakousky
*/
public class FunctionInvocationWrapper implements Function<Object, Object>, Consumer<Object>, Supplier<Object> {
public class FunctionInvocationWrapper implements Function<Object, Object>, Consumer<Object>,
Supplier<Object>, 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;
}

View File

@@ -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 {