This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 1dcef9f CAMEL-13064: Multicast/splitter EIP should deal with iterators not honouring hasNext/next contract 100% accurate. The zip and tarfile iterators do not do that. 1dcef9f is described below commit 1dcef9f13dac3512715235bd53216244299cbba1 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Jan 16 07:56:39 2019 +0100 CAMEL-13064: Multicast/splitter EIP should deal with iterators not honouring hasNext/next contract 100% accurate. The zip and tarfile iterators do not do that. --- .../java/org/apache/camel/processor/MulticastProcessor.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java index 5a2e9b6..90b36b2 100644 --- a/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java +++ b/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java @@ -282,17 +282,23 @@ public class MulticastProcessor extends AsyncProcessorSupport implements Navigat } // Check if the iterator is empty - // This can only happen the very first time we check the existence + // This can happen the very first time we check the existence // of an item before queuing the run. + // or some iterators may return true for hasNext() but then null in next() if (!iterator.hasNext()) { - doDone(null, true); + doDone(result.get(), true); return; } ProcessorExchangePair pair = iterator.next(); boolean hasNext = iterator.hasNext(); - Exchange exchange = pair.getExchange(); + // some iterators may return true for hasNext() but then null in next() + if (pair == null && !hasNext) { + doDone(result.get(), true); + return; + } + Exchange exchange = pair.getExchange(); int index = nbExchangeSent.getAndIncrement(); updateNewExchange(exchange, index, pairs, hasNext);