diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingMessagingGateway.java b/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingMessagingGateway.java index fae0d4e3fd..6a4f4b2814 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingMessagingGateway.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingMessagingGateway.java @@ -41,7 +41,6 @@ import org.springframework.http.converter.xml.SourceHttpMessageConverter; import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.http.server.ServletServerHttpResponse; import org.springframework.integration.core.Message; -import org.springframework.integration.core.MessageHeaders; import org.springframework.integration.core.MessagingException; import org.springframework.integration.gateway.AbstractMessagingGateway; import org.springframework.integration.message.HeaderMapper; @@ -99,7 +98,7 @@ public class HttpRequestHandlingMessagingGateway extends AbstractMessagingGatewa private volatile List> messageConverters = new ArrayList>(); - private volatile HeaderMapper headerMapper = new DefaultHeaderMapper(); + private volatile HeaderMapper headerMapper = new DefaultHttpHeaderMapper(); private final boolean expectReply; @@ -142,6 +141,14 @@ public class HttpRequestHandlingMessagingGateway extends AbstractMessagingGatewa this.messageConverters = messageConverters; } + /** + * Set the {@link HeaderMapper} to use when mapping between HTTP headers and MessageHeaders. + */ + public void setHeaderMapper(HeaderMapper headerMapper) { + Assert.notNull(headerMapper, "headerMapper must not be null"); + this.headerMapper = headerMapper; + } + /** * Specify the supported request methods for this gateway. * By default, only GET and POST are supported. @@ -316,21 +323,4 @@ public class HttpRequestHandlingMessagingGateway extends AbstractMessagingGatewa payload.getClass().getName() + "] and content types [" + acceptTypes + "]"); } - - private static class DefaultHeaderMapper implements HeaderMapper { - - public void fromHeaders(MessageHeaders headers, HttpHeaders target) { - for (String name : headers.keySet()) { - Object value = headers.get(name); - if (value instanceof String) { - target.add(name, (String) value); - } - } - } - - public Map toHeaders(HttpHeaders source) { - return source; - } - } - }