From b47c48c9c9df0cf71c8d32a2033dea488c97ae7d Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 10 Dec 2009 22:53:53 +0000 Subject: [PATCH] INT-901 Removed shouldSplitMessages() method and factored out a protected handleResult() method instead. --- .../AbstractReplyProducingMessageHandler.java | 28 ++++--------------- .../splitter/AbstractMessageSplitter.java | 20 +++++++++---- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/handler/AbstractReplyProducingMessageHandler.java b/org.springframework.integration/src/main/java/org/springframework/integration/handler/AbstractReplyProducingMessageHandler.java index 88166e2b33..e06be14f97 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/handler/AbstractReplyProducingMessageHandler.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/handler/AbstractReplyProducingMessageHandler.java @@ -92,15 +92,10 @@ public abstract class AbstractReplyProducingMessageHandler extends AbstractMessa } } - protected boolean shouldSplitReplies() { - return false; - } - /** * {@inheritDoc} */ @Override - @SuppressWarnings("unchecked") protected final void handleMessageInternal(Message message) { Object result = this.handleRequestMessage(message); if (result == null) { @@ -115,25 +110,14 @@ public abstract class AbstractReplyProducingMessageHandler extends AbstractMessa } MessageChannel replyChannel = resolveReplyChannel(message, this.outputChannel, this.channelResolver); MessageHeaders requestHeaders = message.getHeaders(); - if (this.shouldSplitReplies() && result instanceof Iterable) { - this.sendReplyMessages((Iterable) result, requestHeaders, replyChannel); - } - else { - Message replyMessage = this.createReplyMessage(result, requestHeaders); - if (!this.sendReplyMessage(replyMessage, replyChannel)) { - throw new MessageDeliveryException(replyMessage, - "failed to send reply Message to channel '" + replyChannel + "'"); - } - } + this.handleResult(result, requestHeaders, replyChannel); } - private void sendReplyMessages(Iterable replies, MessageHeaders requestHeaders, MessageChannel replyChannel) { - for (Object reply : replies) { - Message replyMessage = this.createReplyMessage(reply, requestHeaders); - if (!this.sendReplyMessage(replyMessage, replyChannel)) { - throw new MessageDeliveryException(replyMessage, - "failed to send reply Message to channel '" + replyChannel + "'"); - } + protected void handleResult(Object result, MessageHeaders requestHeaders, MessageChannel replyChannel) { + Message replyMessage = this.createReplyMessage(result, requestHeaders); + if (!this.sendReplyMessage(replyMessage, replyChannel)) { + throw new MessageDeliveryException(replyMessage, + "failed to send reply Message to channel '" + replyChannel + "'"); } } diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java b/org.springframework.integration/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java index 1246e4a55e..359f70b6f3 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.UUID; import org.springframework.integration.core.Message; +import org.springframework.integration.core.MessageChannel; import org.springframework.integration.core.MessageHeaders; import org.springframework.integration.handler.AbstractReplyProducingMessageHandler; import org.springframework.integration.message.MessageBuilder; @@ -34,11 +35,7 @@ import org.springframework.integration.message.MessageBuilder; public abstract class AbstractMessageSplitter extends AbstractReplyProducingMessageHandler { @Override - protected boolean shouldSplitReplies() { - return true; - } - - @Override + @SuppressWarnings("unchecked") protected final Object handleRequestMessage(Message message) { Object result = this.splitMessage(message); if (result == null) { @@ -80,6 +77,19 @@ public abstract class AbstractMessageSplitter extends AbstractReplyProducingMess return builder; } + @Override + @SuppressWarnings("unchecked") + protected void handleResult(Object result, MessageHeaders requestHeaders, MessageChannel replyChannel) { + if (result instanceof Iterable) { + for (Object o : (Iterable) result) { + super.handleResult(o, requestHeaders, replyChannel); + } + } + else { + super.handleResult(result, requestHeaders, replyChannel); + } + } + /** * Subclasses must override this method to split the received Message. The * return value may be a Collection or Array. The individual elements may