INT-1133 AbstractReplyProducingMessageHandler no longer copies headers from the request Message into the reply Message IF the return value from the handler implementation is already a Message instance.

This commit is contained in:
Mark Fisher
2010-05-08 19:32:30 +00:00
parent e83771e5ed
commit 05d351cf6d
4 changed files with 14 additions and 17 deletions

View File

@@ -59,7 +59,11 @@ public abstract class AbstractRemotingOutboundGateway extends AbstractReplyProdu
}
Message<?> requestMessage = MessageBuilder.fromMessage(message).build();
try {
return this.proxy.exchange(requestMessage);
Message<?> reply = this.proxy.exchange(requestMessage);
if (reply != null) {
reply = MessageBuilder.fromMessage(reply).copyHeadersIfAbsent(message.getHeaders()).build();
}
return reply;
}
catch (RemoteAccessException e) {
throw new MessageHandlingException(message, "remote failure in Messaging Gateway", e);

View File

@@ -115,16 +115,11 @@ public abstract class AbstractReplyProducingMessageHandler extends AbstractMessa
@SuppressWarnings("unchecked")
private Message<?> createReplyMessage(Object reply, MessageHeaders requestHeaders) {
MessageBuilder<?> builder = null;
if (reply instanceof MessageBuilder) {
builder = (MessageBuilder<?>) reply;
}
else if (reply instanceof Message) {
builder = MessageBuilder.fromMessage((Message) reply);
}
else {
builder = MessageBuilder.withPayload(reply);
if (reply instanceof Message) {
return (Message<?>) reply;
}
MessageBuilder<?> builder = (reply instanceof MessageBuilder)
? (MessageBuilder<?>) reply : MessageBuilder.withPayload(reply);
builder.copyHeadersIfAbsent(requestHeaders);
return builder.build();
}