From ca08c189463a7ffdb65eb5c62a15257b1e3fc213 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 28 Oct 2008 19:09:40 +0000 Subject: [PATCH] INT-442 --- .../AbstractRemotingOutboundGateway.java | 27 ++++++------------- .../rmi/RmiOutboundGatewayTests.java | 5 +++- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/AbstractRemotingOutboundGateway.java b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/AbstractRemotingOutboundGateway.java index 692bbe6ef1..5ae38b1b1a 100644 --- a/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/AbstractRemotingOutboundGateway.java +++ b/org.springframework.integration.adapter/src/main/java/org/springframework/integration/adapter/AbstractRemotingOutboundGateway.java @@ -22,6 +22,7 @@ import org.springframework.integration.consumer.AbstractReplyProducingMessageCon import org.springframework.integration.consumer.ReplyMessageHolder; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageChannel; +import org.springframework.integration.message.MessageBuilder; import org.springframework.integration.message.MessageHandlingException; import org.springframework.remoting.RemoteAccessException; @@ -52,9 +53,14 @@ public abstract class AbstractRemotingOutboundGateway extends AbstractReplyProdu @Override public final void onMessage(Message message, ReplyMessageHolder replyHolder) { - this.verifySerializability(message); + if (!(message.getPayload() instanceof Serializable)) { + throw new MessageHandlingException(message, + this.getClass().getName() + " expects a Serializable payload type " + + "but encountered [" + message.getPayload().getClass().getName() + "]"); + } + Message requestMessage = MessageBuilder.fromMessage(message).build(); try { - Message reply = this.handlerProxy.handle(message); + Message reply = this.handlerProxy.handle(requestMessage); if (reply != null) { replyHolder.set(reply); } @@ -64,21 +70,4 @@ public abstract class AbstractRemotingOutboundGateway extends AbstractReplyProdu } } - private void verifySerializability(Message message) { - if (!(message.getPayload() instanceof Serializable)) { - throw new MessageHandlingException(message, - this.getClass().getName() + " expects a Serializable payload type " + - "but encountered '" + message.getPayload().getClass().getName() + "'"); - } - for (String headerName : message.getHeaders().keySet()) { - Object attribute = message.getHeaders().get(headerName); - if (!(attribute instanceof Serializable)) { - throw new MessageHandlingException(message, - this.getClass().getName() + " expects Serializable attribute types " + - "but encountered '" + attribute.getClass().getName() + "' for the attribute '" + - headerName + "'"); - } - } - } - } diff --git a/org.springframework.integration.rmi/src/test/java/org/springframework/integration/rmi/RmiOutboundGatewayTests.java b/org.springframework.integration.rmi/src/test/java/org/springframework/integration/rmi/RmiOutboundGatewayTests.java index 29902fa4ee..915123133c 100644 --- a/org.springframework.integration.rmi/src/test/java/org/springframework/integration/rmi/RmiOutboundGatewayTests.java +++ b/org.springframework.integration.rmi/src/test/java/org/springframework/integration/rmi/RmiOutboundGatewayTests.java @@ -86,11 +86,14 @@ public class RmiOutboundGatewayTests { gateway.onMessage(requestMessage); } - @Test(expected = MessageHandlingException.class) + @Test public void nonSerializableAttribute() throws RemoteException { Message requestMessage = MessageBuilder.withPayload("test") .setHeader("testAttribute", new NonSerializableTestObject()).build(); gateway.onMessage(requestMessage); + Message reply = output.receive(0); + assertNotNull(requestMessage.getHeaders().get("testAttribute")); + assertNotNull(reply.getHeaders().get("testAttribute")); } @Test