![JAR search and dependency download from the Maven repository](/logo.png)
pro.verron.officestamper.core.ExceptionUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of engine Show documentation
Show all versions of engine Show documentation
Office-stamper is a Java template engine for docx documents, forked from org.wickedsource.docx-stamper
package pro.verron.officestamper.core;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.expression.ExpressionException;
import pro.verron.officestamper.api.OfficeStamperException;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class ExceptionUtil {
private static final Logger logger;
private static final Map>> EXCEPTION_HANDLERS;
private static final BiConsumer stacktraceLogger;
private static final Consumer simpleLogger;
static {
logger = LoggerFactory.getLogger(ExceptionUtil.class);
stacktraceLogger = (Exception e, String msg) -> logger.warn(msg, e);
simpleLogger = logger::warn;
EXCEPTION_HANDLERS = new HashMap<>();
var verboseHandlers = new HashMap>();
verboseHandlers.put(true, ExceptionUtil::throwStacktrace); // TRACE ON - THROW WITH STACKTRACE
verboseHandlers.put(false, ExceptionUtil::logStacktrace); // TRACE ON - LOG WITH STACKTRACE
EXCEPTION_HANDLERS.put(true, verboseHandlers);
var quietHandlers = new HashMap>();
quietHandlers.put(true, ExceptionUtil::throwSimple); // TRACE OFF - THROW W/O STACKTRACE
quietHandlers.put(false, ExceptionUtil::logSimple); // TRACE OFF - LOG W/O STACKTRACE
EXCEPTION_HANDLERS.put(false, quietHandlers);
}
private ExceptionUtil() {
throw new OfficeStamperException("ExceptionUtil cannot be instantiated");
}
static void treatException(ExpressionException exception, boolean shouldThrow, String msg) {
treatException(exception, shouldThrow, msg, () -> "Do not expect a return");
}
static T treatException(
ExpressionException exception, boolean shouldThrow, String msg,
Supplier supplier
) {
EXCEPTION_HANDLERS
.get(logger.isTraceEnabled())
.get(shouldThrow)
.accept(exception, msg);
if (!logger.isTraceEnabled())
simpleLogger.accept("Set log level to TRACE to view Stacktrace.");
return supplier.get();
}
private static void throwStacktrace(Exception e, String msg) {
throw new OfficeStamperException(msg, e);
}
private static void logStacktrace(Exception e, String msg) {
stacktraceLogger.accept(e, msg);
}
private static void throwSimple(Exception e, String msg) {
throw new OfficeStamperException(msg);
}
private static void logSimple(Exception e, String msg) {
simpleLogger.accept(msg);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy