// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.store; import java.io.DataInputStream; /** * This class reads objects from an ObjectInputStream until the end of stream is * reached or a maximum number of objects is reached. * * @param <T> * The type of data to be returned by the iterator. * @author Brett Henderson */ public class SubObjectStreamIterator<T extends Storeable> extends ObjectStreamIterator<T> { private long maxObjectCount; private long objectCount; /** * Creates a new instance. * * @param inStream * The stream to read objects from. * @param objectReader * The reader containing the objects to be deserialized. * @param maxObjectCount * The maximum number of objects to read. */ public SubObjectStreamIterator(DataInputStream inStream, ObjectReader objectReader, long maxObjectCount) { super(inStream, objectReader); this.maxObjectCount = maxObjectCount; objectCount = 0; } /** * {@inheritDoc} */ @Override public boolean hasNext() { if (objectCount >= maxObjectCount) { return false; } return super.hasNext(); } /** * {@inheritDoc} */ @Override public T next() { T result; result = super.next(); objectCount++; return result; } }