// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.store; import java.io.DataInputStream; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.openstreetmap.osmosis.core.lifecycle.ReleasableIterator; /** * This class reads objects from an ObjectInputStream until the end of stream is * reached. * * @param <T> * The type of data to be returned by the iterator. * @author Brett Henderson */ public class ObjectStreamIterator<T> extends ObjectDataInputIterator<T> implements ReleasableIterator<T> { private static final Logger LOG = Logger.getLogger(ObjectStreamIterator.class.getName()); private DataInputStream inStream; /** * Creates a new instance. * * @param inStream * The stream to read objects from. * @param objectReader * The reader containing the objects to be deserialized. */ public ObjectStreamIterator(DataInputStream inStream, ObjectReader objectReader) { super(objectReader); this.inStream = inStream; } /** * {@inheritDoc} */ public void close() { if (inStream != null) { try { inStream.close(); } catch (IOException e) { // We cannot throw an exception within a release method. LOG.log(Level.WARNING, "Unable to close input stream.", e); } inStream = null; } } }