diff --git a/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java b/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java index e0f624a6c1..a9e9bd6590 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/dsl/BaseIntegrationFlowDefinition.java @@ -187,8 +187,8 @@ public abstract class BaseIntegrationFlowDefinition> endpointConfigurer) { - return register(new GenericEndpointSpec<>(new BridgeHandler()), endpointConfigurer); + return handle(new BridgeHandler(), endpointConfigurer); } /** @@ -2836,7 +2836,9 @@ public abstract class BaseIntegrationFlowDefinition> endpointConfigurer) { - return handle(new ServiceActivatingHandler(triggerAction, "trigger"), endpointConfigurer); + Consumer> trigger = triggerAction::trigger; + return handle(new ServiceActivatingHandler(new LambdaMessageProcessor(trigger, Message.class)), + endpointConfigurer); } /** diff --git a/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java b/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java index 0370fdc675..47f5295a90 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/handler/LambdaMessageProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright 2016-2022 the original author or authors. + * Copyright 2016-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,6 +21,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Map; import java.util.Set; +import java.util.function.Consumer; import java.util.function.Function; import org.apache.commons.logging.Log; @@ -98,7 +99,8 @@ public class LambdaMessageProcessor implements MessageProcessor, BeanFac } private static boolean isExplicit(Object target) { - return target instanceof Function || + return target instanceof Consumer || + target instanceof Function || target instanceof GenericHandler || target instanceof GenericSelector || target instanceof GenericTransformer; @@ -189,7 +191,11 @@ public class LambdaMessageProcessor implements MessageProcessor, BeanFac @SuppressWarnings({"unchecked", "rawtypes"}) private Object invokeMethod(Object[] args) throws InvocationTargetException, IllegalAccessException { - if (this.target instanceof Function function) { + if (this.target instanceof Consumer consumer) { + consumer.accept(args[0]); + return null; + } + else if (this.target instanceof Function function) { return function.apply(args[0]); } else if (this.target instanceof GenericSelector selector) {