From 75fe5d0f72beb7714c15cdfcb3b7166ceb186a72 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Tue, 28 Mar 2017 11:33:00 -0400 Subject: [PATCH] Fix HTTP out DSL for uri variables propagation Since `AbstractHttpRequestExecutingMessageHandler` does a copy of the provided `uriVariableExpressions`, we lose a coupling propagating from the ctor. * Move `uriVariableExpressions` propagation from the ctor to the `getComponentsToRegister()` --- .../http/dsl/BaseHttpMessageHandlerSpec.java | 22 +++++++++++-------- .../integration/http/dsl/HttpDslTests.java | 7 ++---- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/dsl/BaseHttpMessageHandlerSpec.java b/spring-integration-http/src/main/java/org/springframework/integration/http/dsl/BaseHttpMessageHandlerSpec.java index e6c27afb93..4e8028742e 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/dsl/BaseHttpMessageHandlerSpec.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/dsl/BaseHttpMessageHandlerSpec.java @@ -45,8 +45,10 @@ import org.springframework.web.client.RestTemplate; * * @param the target {@link BaseHttpMessageHandlerSpec} implementation type. * @param the target {@link AbstractHttpRequestExecutingMessageHandler} implementation type. + * * @author Artem Bilan * @author Shiliang Li + * * @since 5.0 */ public abstract class BaseHttpMessageHandlerSpec, E extends AbstractHttpRequestExecutingMessageHandler> @@ -61,7 +63,6 @@ public abstract class BaseHttpMessageHandlerSpec getComponentsToRegister() { + this.target.setUriVariableExpressions(this.uriVariableExpressions); return Collections.singletonList(this.headerMapper); } diff --git a/spring-integration-http/src/test/java/org/springframework/integration/http/dsl/HttpDslTests.java b/spring-integration-http/src/test/java/org/springframework/integration/http/dsl/HttpDslTests.java index 71c6102bbe..316a260208 100644 --- a/spring-integration-http/src/test/java/org/springframework/integration/http/dsl/HttpDslTests.java +++ b/spring-integration-http/src/test/java/org/springframework/integration/http/dsl/HttpDslTests.java @@ -183,11 +183,8 @@ public class HttpDslTests { return IntegrationFlows .from(Http.inboundGateway("/service") .requestMapping(r -> r.params("name"))) - .handle(Http.>outboundGateway(m -> - UriComponentsBuilder.fromPath("/service/internal") - .queryParams(m.getPayload()) - .build() - .toUri()) + .handle(Http.>outboundGateway("/service/internal?{params}") + .uriVariable("params", "payload") .expectedResponseType(String.class), e -> e.id("serviceInternalGateway")) .get();