package org.gbif.checklistbank.iterable;
import java.util.Iterator;
import java.util.concurrent.Future;
/**
* A simple wrapper for a list of futures providing an iterator for their results.
*/
public class FutureIterator<T> implements Iterator<T> {
private final Iterator<Future<T>> iter;
public FutureIterator(Iterable<Future<T>> futures) {
this.iter = futures.iterator();
}
@Override
public boolean hasNext() {
return iter.hasNext();
}
@Override
public T next() {
Future<T> f = iter.next();
try {
return f.get();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
public void remove() {
iter.remove();
}
}