/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.routing.outbound; import org.mule.runtime.core.routing.AbstractMessageSequence; import org.mule.runtime.core.routing.MessageSequence; import java.util.Iterator; import org.apache.commons.lang.Validate; /** * A {@link MessageSequence} that delegates its {@link #hasNext()} and {@link #next()} methods to an {@link Iterator}, and has no * estimated size * * @author flbulgarelli * @param <T> */ public final class IteratorMessageSequence extends AbstractMessageSequence { private final Iterator iter; public IteratorMessageSequence(Iterator iter) { Validate.notNull(iter); this.iter = iter; } @Override public Integer size() { return UNKNOWN_SIZE; } @Override public boolean hasNext() { return iter.hasNext(); } @Override public Object next() { if (iter instanceof EventBuilderConfigurerIterator) { return ((EventBuilderConfigurerIterator) iter).nextEventBuilderConfigurer(); } else { return iter.next(); } } }