diff --git a/spring-integration-core/src/main/java/org/springframework/integration/IntegrationPatternType.java b/spring-integration-core/src/main/java/org/springframework/integration/IntegrationPatternType.java index dc06a466b6..2d40716e73 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/IntegrationPatternType.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/IntegrationPatternType.java @@ -54,8 +54,6 @@ public enum IntegrationPatternType { inbound_gateway(IntegrationPatternCategory.messaging_endpoint), - gateway(IntegrationPatternCategory.messaging_endpoint), - splitter(IntegrationPatternCategory.message_routing), transformer(IntegrationPatternCategory.message_transformation), @@ -121,7 +119,6 @@ public enum IntegrationPatternType { inbound_channel_adapter, outbound_gateway, inbound_gateway, - gateway, bridge), message_routing( diff --git a/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java b/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java index 619d75d81f..95f8c4234c 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/gateway/GatewayProxyFactoryBean.java @@ -939,13 +939,17 @@ public class GatewayProxyFactoryBean extends AbstractEndpoint private boolean isMonoReturn; + private boolean isVoidReturn; + MethodInvocationGateway(GatewayMethodInboundMessageMapper messageMapper) { setRequestMapper(messageMapper); } @Override public IntegrationPatternType getIntegrationPatternType() { - return IntegrationPatternType.gateway; + return this.isVoidReturn + ? IntegrationPatternType.inbound_channel_adapter + : IntegrationPatternType.inbound_gateway; } @Nullable @@ -973,6 +977,7 @@ public class GatewayProxyFactoryBean extends AbstractEndpoint this.isMonoReturn = Mono.class.isAssignableFrom(this.returnType); this.expectMessage = hasReturnParameterizedWithMessage(resolvableType); } + this.isVoidReturn = isVoidReturnType(resolvableType); } private boolean hasReturnParameterizedWithMessage(ResolvableType resolvableType) { @@ -980,6 +985,13 @@ public class GatewayProxyFactoryBean extends AbstractEndpoint && Message.class.isAssignableFrom(resolvableType.getGeneric(0).resolve(Object.class)); } + private boolean isVoidReturnType(ResolvableType resolvableType) { + Class returnTypeToCheck = this.returnType; + if (Future.class.isAssignableFrom(this.returnType) || Mono.class.isAssignableFrom(this.returnType)) { + returnTypeToCheck = resolvableType.getGeneric(0).resolve(Object.class); + } + return Void.class.isAssignableFrom(returnTypeToCheck); + } } private final class Invoker implements Supplier {