WriterCommandOutput.java
package org.cyclopsgroup.jmxterm.io;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import org.apache.commons.io.output.NullWriter;
import org.apache.commons.lang3.Validate;
/**
* A command output that writes result and message to given writers
*
* @author <a href="mailto:jiaqi.guo@gmail.com">Jiaqi Guo</a>
*/
public class WriterCommandOutput extends CommandOutput {
private final Writer messageOutput;
private final Writer resultOutput;
/**
* @param output Writer for both result and message
*/
public WriterCommandOutput(Writer output) {
this(output, output);
}
/**
* @param resultOutput IO Writer for result output
* @param messageOutput IO Writer for message output
*/
public WriterCommandOutput(Writer resultOutput, Writer messageOutput) {
Validate.notNull(resultOutput, "Result output can't be NULL");
this.resultOutput = resultOutput;
this.messageOutput = messageOutput == null ? new NullWriter() : messageOutput;
}
@Override
public void print(String output) {
if (output == null) {
return;
}
try {
resultOutput.write(output);
} catch (IOException e) {
throw new RuntimeIOException("Can't print out result", e);
}
}
@Override
public void printError(Throwable e) {
e.printStackTrace(new PrintWriter(messageOutput, true));
}
@Override
public void printMessage(String message) {
try {
messageOutput.write(message);
} catch (IOException e) {
throw new RuntimeIOException("Can't print out message", e);
}
}
}