package railo.runtime.img;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.stream.ImageOutputStreamImpl;
import railo.commons.io.res.Resource;
public class ResourceImageOutputStream extends ImageOutputStreamImpl {
private Resource res;
private OutputStream os;
public ResourceImageOutputStream(Resource res) throws IOException {
this.res=res;
os=res.getOutputStream();
}
public ResourceImageOutputStream(OutputStream os) {
this.os=os;
}
public int read() throws IOException {
throw new IOException("not supported");
}
public int read(byte[] b, int off, int len) throws IOException {
throw new IOException("not supported");
}
public void write(int b) throws IOException {
os.write(b);
}
public void write(byte[] b, int off, int len) throws IOException {
os.write(b,off,len);
}
public long length() {
if(res==null) throw new RuntimeException("not supported");
return res.length();
}
/**
* Sets the current stream position and resets the bit offset to
* 0. It is legal to seeking past the end of the file; an
* <code>EOFException</code> will be thrown only if a read is
* performed. The file length will not be increased until a write
* is performed.
*
* @exception IndexOutOfBoundsException if <code>pos</code> is smaller
* than the flushed position.
* @exception IOException if any other I/O error occurs.
*/
public void seek(long pos) throws IOException {
throw new IOException("not supported");
}
@Override
public void close() throws IOException {
try {
super.close();
}
finally {
os.close();
}
}
}