package org.infinispan.query.impl; import java.util.Iterator; import java.util.NoSuchElementException; /** * An iterator wrapper that filters out (skips over) any null values returned by the wrapped iterator. * * @author Marko Luksa */ public class NullFilteringIterator<E> implements Iterator<E> { private Iterator<E> delegate; private E next; public NullFilteringIterator(Iterator<E> delegate) { this.delegate = delegate; } @Override public boolean hasNext() { if (next != null) { return true; } while (delegate.hasNext()) { next = delegate.next(); if (next != null) { return true; } } return false; } @Override public E next() { if (!hasNext()) { throw new NoSuchElementException(); } try { return next; } finally { next = null; } } @Override public void remove() { throw new UnsupportedOperationException("remove() is not supported"); } }