package de.skuzzle.polly.process;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* {@link StreamHandler} implementation that stores all read data in a
* {@link StringBuilder} which can be retrieved using {@link #getBuffer()}.
*
* @author Simon Taddiken
*/
public class BufferedStreamHandler extends StreamHandler {
private StringBuilder buffer;
/**
* Creates a new BufferedStreamHandler with the given name.
*
* @param name Name of the thread for this StreamHandler.
*/
public BufferedStreamHandler(String name) {
super(name);
this.buffer = new StringBuilder();
}
/**
* Creates a new BufferedStreamHandler for the given InputStream and name.
*
* @param stream The {@link InputStream} from which this StreamHandler reads data.
* @param name Name of the thread for this StreamHandler.
*/
public BufferedStreamHandler(InputStream stream, String name) {
super(stream, name);
this.buffer = new StringBuilder();
}
/**
* Creates a new BufferedStreamHandler for the given InputStream using a generated
* default thread name.
*
* @param stream The {@link InputStream} from which this StreamHandler reads data.
*/
public BufferedStreamHandler(InputStream stream) {
super(stream);
this.buffer = new StringBuilder();
}
/**
* Gets the buffer that contains the so far read data.
*
* @return Tha buffer used by this StreamHandler.
*/
public StringBuilder getBuffer() {
return this.buffer;
}
@Override
protected void handle(InputStream stream) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
String line = null;
while ((line = reader.readLine()) != null) {
this.buffer.append(line);
this.buffer.append("\n");
}
}
}