// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.store; import java.util.Iterator; import java.util.NoSuchElementException; /** * Provides functionality common to all object iterators. * * @param <T> * The type of data to be returned by the iterator. * @author Brett Henderson */ public class ObjectDataInputIterator<T> implements Iterator<T> { private ObjectReader objectReader; private T nextElement; /** * Creates a new instance. * * @param objectReader * The reader containing the objects to be deserialized. */ public ObjectDataInputIterator(ObjectReader objectReader) { this.objectReader = objectReader; } /** * {@inheritDoc} */ @SuppressWarnings("unchecked") public boolean hasNext() { if (nextElement != null) { return true; } try { nextElement = (T) objectReader.readObject(); } catch (EndOfStoreException e) { return false; } return true; } /** * {@inheritDoc} */ public T next() { if (hasNext()) { T result; result = nextElement; nextElement = null; return result; } else { throw new NoSuchElementException(); } } /** * {@inheritDoc} */ public void remove() { throw new UnsupportedOperationException(); } }