From 69cb492b78fe4270925b061ffb847d733cc794b2 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Fri, 25 Jun 2010 04:06:02 +0000 Subject: [PATCH] INT-1055 all non-Spring Integration headers that contain String-typed values will be mapped into HttpHeaders (a more fine-grained strategy-driven approach is coming in M6: INT-1214) --- .../http/DefaultOutboundRequestMapper.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/DefaultOutboundRequestMapper.java b/spring-integration-http/src/main/java/org/springframework/integration/http/DefaultOutboundRequestMapper.java index daf0055de0..54047f7216 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/DefaultOutboundRequestMapper.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/DefaultOutboundRequestMapper.java @@ -27,6 +27,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.MediaType; import org.springframework.integration.core.Message; +import org.springframework.integration.core.MessageHeaders; import org.springframework.util.Assert; /** @@ -82,14 +83,8 @@ public class DefaultOutboundRequestMapper implements OutboundRequestMapper { if (requestMessage.getPayload() instanceof HttpEntity) { return (HttpEntity) requestMessage.getPayload(); } - // TODO: provide more fine-grained control over header mapping HttpHeaders httpHeaders = new HttpHeaders(); - for (String headerName : requestMessage.getHeaders().keySet()) { - Object value = requestMessage.getHeaders().get(headerName); - if (value instanceof String) { - httpHeaders.add(headerName, (String) value); - } - } + this.mapMessageHeadersToHttpHeaders(requestMessage.getHeaders(), httpHeaders); Object payload = requestMessage.getPayload(); MediaType contentType = (payload instanceof String) ? this.contentTypeResolver.resolveContentType((String) payload, this.charset) : this.contentTypeResolver.resolveContentType(payload); @@ -106,6 +101,14 @@ public class DefaultOutboundRequestMapper implements OutboundRequestMapper { return new HttpEntity(requestMessage, headers); } + private void mapMessageHeadersToHttpHeaders(MessageHeaders messageHeaders, HttpHeaders httpHeaders) { + for (String headerName : messageHeaders.keySet()) { + Object value = messageHeaders.get(headerName); + if (value instanceof String && !headerName.startsWith(MessageHeaders.PREFIX)) { + httpHeaders.add(headerName, (String) value); + } + } + } private static class DefaultContentTypeResolver implements ContentTypeResolver {