All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.albanseurat.springboot.plugin.executors.InputStreamHandler Maven / Gradle / Ivy

There is a newer version: 0.3
Show newest version
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;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy