package org.prevayler.foundation.gzip; import java.io.IOException; import java.io.OutputStream; import java.util.zip.GZIPOutputStream; public class MultiMemberGZIPOutputStream extends OutputStream { private OutputStream _stream; private GZIPOutputStream _gzip; public MultiMemberGZIPOutputStream(OutputStream stream) { _stream = new NonCloseableOutputStream(stream); _gzip = null; } public void write(int b) throws IOException { write(new byte[]{(byte) b}); } public void write(byte b[]) throws IOException { write(b, 0, b.length); } public void write(byte b[], int off, int len) throws IOException { if (_gzip == null) { _gzip = new GZIPOutputStream(_stream); } _gzip.write(b, off, len); } public void flush() throws IOException { if (_gzip != null) { _gzip.close(); _gzip = null; } _stream.flush(); } public void close() throws IOException { throw new UnsupportedOperationException(); } }