silentbalanceyh/vertx-zero

View on GitHub
vertx-gaia/vertx-ams/src/main/java/io/horizon/fn/_Fail.java

Summary

Maintainability
A
0 mins
Test Coverage
package io.horizon.fn;

import io.horizon.specification.uca.HLogger;
import io.horizon.util.HUt;

/**
 * @author lang : 2023/4/28
 */
class _Fail extends _Combine {
    protected _Fail() {
    }

    /**
     * 纯执行器版本(不支持日志记录),可抛 Exception 异常
     *
     * @param actuator 执行器
     */
    public static void failAt(final ExceptionActuator actuator) {
        HActuator.failAt(actuator, null);
    }

    /**
     * 纯执行器版本(支持日志记录),可抛 Exception 异常
     *
     * @param actuator 执行器
     * @param logger   日志记录器
     */
    public static void failAt(final ExceptionActuator actuator, final HLogger logger) {
        HActuator.failAt(actuator, logger);
    }

    /**
     * (带输入检查)纯执行器版本(支持日志记录),可抛 Exception 异常
     *
     * @param actuator 执行器
     * @param logger   日志记录器
     * @param input    输入
     */
    public static void failAt(final ExceptionActuator actuator, final HLogger logger,
                              final Object... input) {
        if (HUt.isNotNull(input)) {
            HActuator.failAt(actuator, logger);
        }
    }

    /**
     * (带输入检查)纯执行器版本(不支持日志记录),可抛 Exception 异常
     *
     * @param actuator 执行器
     * @param input    输入
     */
    public static void failAt(final ExceptionActuator actuator, final Object... input) {
        if (HUt.isNotNull(input)) {
            HActuator.failAt(actuator, null);
        }
    }

    /**
     * Supplier函数的Exception版本(不支持日志记录),执行失败时抛出 Exception 异常
     *
     * @param supplier Supplier函数
     * @param <T>      返回值类型
     *
     * @return T
     */
    public static <T> T failOr(final ExceptionSupplier<T> supplier) {
        return HSupplier.failOr(null, supplier, (HLogger) null);
    }

    /**
     * Supplier函数的 Exception 版本(支持日志记录),执行失败时抛出 Exception 异常
     *
     * @param supplier Supplier函数
     * @param logger   日志记录器
     * @param <T>      返回值类型
     *
     * @return T
     */
    public static <T> T failOr(final ExceptionSupplier<T> supplier, final HLogger logger) {
        return HSupplier.failOr(null, supplier, logger);
    }


    /**
     * (参数非空检查)Supplier函数的 Exception 版本(默认值 null),可抛 Exception 异常
     *
     * @param supplier Supplier函数
     * @param input    待检查的输入信息
     * @param <T>      返回值类型
     *
     * @return T
     */
    public static <T> T failOr(final ExceptionSupplier<T> supplier, final Object... input) {
        return failOr(null, supplier, input);
    }

    /**
     * (参数非空检查)Supplier函数的 Exception 版本(支持默认值),可抛 Exception 异常
     *
     * @param defaultValue 默认值
     * @param supplier     Supplier函数
     * @param input        待检查的输入信息
     * @param <T>          返回值类型
     *
     * @return T
     */
    public static <T> T failOr(final T defaultValue, final ExceptionSupplier<T> supplier,
                               final Object... input) {
        if (HUt.isNotNull(input)) {
            return HSupplier.failOr(defaultValue, supplier, (HLogger) null);
        } else {
            return defaultValue;
        }
    }

    /**
     * Supplier函数的 Exception 版本(支持默认值),可抛 Exception 异常
     *
     * @param defaultValue 默认值
     * @param supplier     Supplier函数
     * @param <T>          返回值类型
     *
     * @return T
     */
    public static <T> T failOr(final T defaultValue, final ExceptionSupplier<T> supplier) {
        return HSupplier.failOr(defaultValue, supplier, (HLogger) null);
    }

    /**
     * Supplier函数的 Exception 版本(支持默认值 / 日志记录器),可抛 Exception 异常
     *
     * @param defaultValue 默认值
     * @param supplier     Supplier函数
     * @param logger       日志记录器
     * @param <T>          返回值类型
     *
     * @return T
     */
    public static <T> T failOr(final T defaultValue, final ExceptionSupplier<T> supplier,
                               final HLogger logger) {
        return HSupplier.failOr(defaultValue, supplier, logger);
    }
}