INT-901 Removed shouldSplitMessages() method and factored out a protected handleResult() method instead.
This commit is contained in:
@@ -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 + "'");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user