Java tutorial
package org.apache.http.impl.io; import java.io.IOException; import java.io.OutputStream; import org.apache.http.annotation.NotThreadSafe; import org.apache.http.io.SessionOutputBuffer; import org.apache.http.util.Args; @NotThreadSafe public class IdentityOutputStream extends OutputStream { private boolean closed; private final SessionOutputBuffer out; public IdentityOutputStream(SessionOutputBuffer sessionOutputBuffer) { this.closed = false; this.out = (SessionOutputBuffer) Args.notNull(sessionOutputBuffer, "Session output buffer"); } public void close() throws IOException { if (!this.closed) { this.closed = true; this.out.flush(); } } public void flush() throws IOException { this.out.flush(); } public void write(byte[] bArr, int i, int i2) throws IOException { if (this.closed) { throw new IOException("Attempted write to closed stream."); } this.out.write(bArr, i, i2); } public void write(byte[] bArr) throws IOException { write(bArr, 0, bArr.length); } public void write(int i) throws IOException { if (this.closed) { throw new IOException("Attempted write to closed stream."); } this.out.write(i); } }