/*
* Copyright (c) 2005 Aetrion LLC.
*/
package com.googlecode.flickr2twitter.com.aetrion.flickr.util;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/**
* A FilterInputStream which will print all read data to the specified PrintWriter.
*
* @author Anthony Eden
*/
public class DebugInputStream extends FilterInputStream {
private OutputStream debugOut;
/**
* Creates a <code>FilterInputStream</code> by assigning the argument <code>in</code> to the field
* <code>this.in</code> so as to remember it for later use.
*
* @param in the underlying input stream, or <code>null</code> if this instance is to be created without an
* underlying stream.
*/
public DebugInputStream(InputStream in, OutputStream debugOut) {
super(in);
this.debugOut = debugOut;
}
public int read() throws IOException {
int c = super.read();
debugOut.write((char) c);
return c;
}
public int read(byte[] b) throws IOException {
int readCount = super.read(b);
for (int i = 0; i < readCount; i++) {
debugOut.write((char) b[i]);
}
return readCount;
}
public int read(byte[] b, int offset, int length) throws IOException {
int readCount = super.read(b, offset, length);
int readTo = offset + readCount;
for (int i = offset; i < readTo; i++) {
debugOut.write((char) b[i]);
}
return readCount;
}
}