/* See LICENSE for licensing and NOTICE for copyright. */
package org.cryptacular.io;
import java.io.IOException;
import java.io.InputStream;
/**
* Resource descriptor that provides a strategy to get an {@link InputStream} to read bytes.
*
* @author Middleware Services
*/
public interface Resource
{
/**
* Gets an input stream around the resource. Callers of this method are responsible for resource cleanup; it should be
* sufficient to simply call {@link java.io.InputStream#close()} unless otherwise noted.
*
* <p>Implementers should produce a new instance on every call to this method to provide for thread-safe usage
* patterns on a shared resource.</p>
*
* @return Input stream around underlying resource, e.g. file, remote resource (URI), etc.
*
* @throws IOException On IO errors.
*/
InputStream getInputStream()
throws IOException;
}