com.github.albanseurat.springboot.plugin.executors.InputStreamHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spring-boot-frontend-maven-plugin Show documentation
Show all versions of spring-boot-frontend-maven-plugin Show documentation
Allow to create a front-end project with AngularJS / bootstrap and grunt for proper build
package com.github.albanseurat.springboot.plugin.executors;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.slf4j.Logger;
final class InputStreamHandler extends Thread {
private interface LogLevelAgnosticLogger {
void log(String value);
}
private final InputStream inputStream;
private final LogLevelAgnosticLogger logger;
private InputStreamHandler(InputStream inputStream, LogLevelAgnosticLogger logger) {
this.inputStream = inputStream;
this.logger = logger;
}
public static InputStreamHandler logInfo(InputStream inputStream, Logger logger) {
return new InputStreamHandler(inputStream, infoLoggerFor(logger));
}
public static InputStreamHandler logError(InputStream inputStream, Logger logger) {
return new InputStreamHandler(inputStream, errorLoggerFor(logger));
}
public void run() {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
try {
while ((line = reader.readLine()) != null) {
logger.log(line);
}
} catch (IOException e) {
logger.log(e.getMessage());
}
}
private static LogLevelAgnosticLogger infoLoggerFor(final Logger logger) {
return logger::info;
}
private static LogLevelAgnosticLogger errorLoggerFor(final Logger logger) {
return logger::error;
}
}