diff --git a/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java b/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java index ec35e755794..0185b516cd4 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/splitter/AbstractMessageSplitter.java @@ -34,6 +34,7 @@ import org.springframework.integration.support.json.JacksonPresent; import org.springframework.integration.util.FunctionIterator; import org.springframework.messaging.Message; +import org.springframework.util.ObjectUtils; import com.fasterxml.jackson.core.TreeNode; import reactor.core.publisher.Flux; @@ -62,7 +63,7 @@ public void setApplySequence(boolean applySequence) { @Override @SuppressWarnings("unchecked") protected final Object handleRequestMessage(Message message) { - Object result = this.splitMessage(message); + Object result = splitMessage(message); // return null if 'null' if (result == null) { return null; @@ -87,7 +88,7 @@ protected final Object handleRequestMessage(Message message) { } } else if (result.getClass().isArray()) { - Object[] items = (Object[]) result; + Object[] items = ObjectUtils.toObjectArray(result); sequenceSize = items.length; if (reactive) { flux = Flux.fromArray(items); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/splitter/DefaultSplitterTests.java b/spring-integration-core/src/test/java/org/springframework/integration/splitter/DefaultSplitterTests.java index 787cc649ddb..74ceeaa00a4 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/splitter/DefaultSplitterTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/splitter/DefaultSplitterTests.java @@ -54,7 +54,7 @@ public class DefaultSplitterTests { @Test - public void splitMessageWithArrayPayload() throws Exception { + public void splitMessageWithArrayPayload() { String[] payload = new String[] { "x", "y", "z" }; Message message = MessageBuilder.withPayload(payload).build(); QueueChannel replyChannel = new QueueChannel(); @@ -75,7 +75,7 @@ public void splitMessageWithArrayPayload() throws Exception { } @Test - public void splitMessageWithCollectionPayload() throws Exception { + public void splitMessageWithCollectionPayload() { List payload = Arrays.asList("x", "y", "z"); Message> message = MessageBuilder.withPayload(payload).build(); QueueChannel replyChannel = new QueueChannel(); @@ -163,20 +163,20 @@ public void splitFlux() { @Test public void splitArrayPayloadReactive() { - Message message = new GenericMessage<>(new String[] { "x", "y", "z" }); + Message message = new GenericMessage<>(new int[] { 0, 1, 2 }); FluxMessageChannel replyChannel = new FluxMessageChannel(); DefaultMessageSplitter splitter = new DefaultMessageSplitter(); splitter.setOutputChannel(replyChannel); splitter.handleMessage(message); - Flux testFlux = + Flux testFlux = Flux.from(replyChannel) .map(Message::getPayload) - .cast(String.class); + .cast(Integer.class); StepVerifier.create(testFlux) - .expectNext("x", "y", "z") + .expectNext(0, 1, 2) .then(() -> ((Subscriber) TestUtils.getPropertyValue(replyChannel, "subscribers", List.class).get(0)) .onComplete())