PrettyPrintHelper.java

package io.swagger.v3.core.util;

import org.slf4j.Logger;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.function.Consumer;

class PrettyPrintHelper {

    private static final ThreadLocal<Consumer<String>> OVERRIDE = new ThreadLocal<>();

    private PrettyPrintHelper() {
        // utility class
    }

    static void setOverride(Consumer<String> consumer) {
        OVERRIDE.set(consumer);
    }

    static void clearOverride() {
        OVERRIDE.remove();
    }

    static void emit(Logger logger, String message) {
        Consumer<String> consumer = OVERRIDE.get();
        if (consumer != null) {
            consumer.accept(message);
        } else {
            logger.debug(message);
        }
    }

    static void emitError(Logger logger, String message, Throwable throwable) {
        Consumer<String> consumer = OVERRIDE.get();
        if (consumer != null) {
            StringBuilder builder = new StringBuilder(message);
            if (throwable != null) {
                builder.append(System.lineSeparator());
                StringWriter writer = new StringWriter();
                throwable.printStackTrace(new PrintWriter(writer));
                builder.append(writer);
            }
            consumer.accept(builder.toString());
        }
        logger.error(message, throwable);
    }
}