IssuedResource.java
package eu.javaexperience.resource.pool;
import java.io.Closeable;
import java.io.IOException;
public class IssuedResource<T> implements Closeable
{
protected final TrackedResourcePool<T> pool;
protected T resource;
protected boolean issued = true;
public IssuedResource(TrackedResourcePool<T> pool, T resource)
{
this.pool = pool;
this.resource = resource;
}
public TrackedResourcePool<T> getPool()
{
return pool;
}
public void release()
{
synchronized(this)
{
if(!issued)
{
throw new RuntimeException("Resource double release!");
}
pool.releaseResource(this);
resource = null;
issued = false;
}
}
public T getResource()
{
return resource;
}
@Override
public void close() throws IOException
{
release();
}
}