INT-2254 backporting to maint branch

This commit is contained in:
Oleg Zhurakousky
2011-11-23 09:00:51 -05:00
committed by Mark Fisher
parent 58d41541d1
commit 495cf53ac6
2 changed files with 17 additions and 7 deletions

View File

@@ -183,7 +183,7 @@ public final class MessageBuilder<T> {
/**
* Copy the name-value pairs from the provided Map. This operation will <em>not</em> overwrite any existing values.
*/
public MessageBuilder<T> copyHeadersIfAbsent(Map<String, Object> headersToCopy) {
public MessageBuilder<T> copyHeadersIfAbsent(Map<String, ?> headersToCopy) {
Set<String> keys = headersToCopy.keySet();
for (String key : keys) {
if (!this.isReadOnly(key)) {

View File

@@ -260,12 +260,22 @@ abstract class HttpRequestHandlingEndpointSupport extends MessagingGatewaySuppor
payload = this.convertParameterMap(servletRequest.getParameterMap());
}
Map<String, ?> headers = this.headerMapper.toHeaders(request.getHeaders());
Message<?> message = MessageBuilder.withPayload(payload).copyHeaders(headers).setHeader(
org.springframework.integration.http.HttpHeaders.REQUEST_URL, request.getURI().toString())
.setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_METHOD,
request.getMethod().toString()).setHeader(
org.springframework.integration.http.HttpHeaders.USER_PRINCIPAL,
servletRequest.getUserPrincipal()).build();
MessageBuilder<?> messageBuilder = null;
if (payload instanceof Message<?>){
messageBuilder = MessageBuilder.fromMessage((Message<?>) payload).copyHeadersIfAbsent(headers);
}
else {
messageBuilder = MessageBuilder.withPayload(payload).copyHeaders(headers);
}
Message<?> message = messageBuilder
.setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_URL, request.getURI().toString())
.setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_METHOD, request.getMethod().toString())
.setHeader(org.springframework.integration.http.HttpHeaders.USER_PRINCIPAL, servletRequest.getUserPrincipal())
.build();
Object reply = null;
if (this.expectReply) {
reply = this.sendAndReceiveMessage(message);