package org.xmlsh.core;
import java.io.Closeable;
import java.io.IOException;
import org.xmlsh.util.IManagable;
import org.xmlsh.util.ReferenceCounter;
@SuppressWarnings("serial")
public abstract class ReferenceCounted extends ReferenceCounter
implements IManagable, IReferenceCounted, Closeable {
private boolean bClosed = true;
public ReferenceCounted() {
super();
bClosed = true;
}
/*
* (non-Javadoc)
*
* @see org.xmlsh.core.IManagedHandle#release()
*/
@Override
final public boolean release() throws IOException {
if(super.decrement() <= 0) {
doClose();
return true;
}
return false;
}
@Override
public void addRef() {
super.increment();
}
@Override
public final void close() throws IOException {
if(!bClosed)
doClose();
bClosed = true;
}
}