package org.keycloak.client.registration.cli.util; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; /** * @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a> */ public class DebugBufferedInputStream extends BufferedInputStream { public DebugBufferedInputStream(InputStream in) { super(in); } @Override public synchronized int read() throws IOException { log("read() >>>"); int b = super.read(); log("read() <<< " + (char) b + " (" + b + ")"); return b; } @Override public synchronized int read(byte[] b, int off, int len) throws IOException { log("read(buf, off, len) >>>"); int c = super.read(b, off, len); log("read(buf, off, len) <<< " + (c != -1 ? "[" + new String(b, off, c) + "]" : "-1")); return c; } @Override public synchronized long skip(long n) throws IOException { log("skip()"); return super.skip(n); } @Override public synchronized int available() throws IOException { log("available() >>>"); int c = super.available(); log("available() >>> " + c); return c; } @Override public synchronized void mark(int readlimit) { log("mark()"); super.mark(readlimit); } @Override public synchronized void reset() throws IOException { log("reset()"); super.reset(); } @Override public boolean markSupported() { log("markSupported()"); return super.markSupported(); } @Override public void close() throws IOException { log("close()"); super.close(); } @Override public int read(byte[] b) throws IOException { return read(b, 0, b.length); } private void log(String msg) { System.err.println(msg); } }