me.dinowernli.grpc.polyglot.io.OutputImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of qaf-support-grpc Show documentation
Show all versions of qaf-support-grpc Show documentation
QAF support library for grpc test automation
The newest version!
package me.dinowernli.grpc.polyglot.io;
import java.io.FileNotFoundException;
import java.io.PrintStream;
import java.nio.file.Path;
import org.slf4j.Logger;
class OutputImpl implements Output {
private final OutputWriter writer;
OutputImpl(OutputWriter writer) {
this.writer = writer;
}
@Override
public void close() {
writer.close();
}
@Override
public void write(String content) {
writer.write(content);
}
@Override
public void writeLine(String content) {
write(content + "\n");
}
@Override
public void newLine() {
write("\n");
}
private interface OutputWriter {
void write(String content);
void close();
}
/** An {@link OutputWriter} which writes to a logger. */
static class LogWriter implements OutputWriter {
private final Logger logger;
LogWriter(Logger logger) {
this.logger = logger;
}
@Override
public void write(String content) {
logger.info(content);
}
@Override
public void close() {
// Do nothing.
}
}
/** An {@link OutputWriter} which writes to a stream. */
static class PrintStreamWriter implements OutputWriter {
private final PrintStream printStream;
static PrintStreamWriter forStdout() {
return PrintStreamWriter.forStream(System.out);
}
static PrintStreamWriter forStream(PrintStream printStream) {
return new PrintStreamWriter(printStream);
}
static PrintStreamWriter forFile(Path path) {
try {
return new PrintStreamWriter(new PrintStream(path.toString()));
} catch (FileNotFoundException e) {
throw new IllegalArgumentException("Could not create writer for file: " + path, e);
}
}
private PrintStreamWriter(PrintStream printStream) {
this.printStream = printStream;
}
@Override
public void write(String content) {
printStream.print(content);
}
@Override
public void close() {
printStream.close();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy