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

io.horizon.fn.HSupplier Maven / Gradle / Ivy

The newest version!
package io.horizon.fn;

import io.horizon.exception.AbstractException;
import io.horizon.exception.ProgramException;
import io.horizon.specification.uca.HLogger;
import io.horizon.util.HUt;

import java.util.function.Supplier;

/**
 * @author lang : 2023/4/28
 */
class HSupplier {
    private HSupplier() {
    }

    public static  T jvmOr(final T defaultValue, final ErrorSupplier supplier,
                              final HLogger logger) {
        return HFunction.jvmAt(defaultValue, (t) -> supplier.get(), logger);
    }

    public static  T failOr(final T defaultValue, final ExceptionSupplier supplier,
                               final HLogger logger) {
        return HFunction.failAt(defaultValue, (t) -> supplier.get(), logger);
    }

    static  T failOr(final Supplier supplier,
                        final Class runCls, final Object... args) {
        T ret = null;
        try {
            ret = supplier.get();
        } catch (final Throwable ex) {
            final Object[] argument = HUt.elementAdd(args, ex);
            final AbstractException error = HUt.instance(runCls, argument);
            if (null != error) {
                throw error;
            }
        }
        return ret;
    }

    public static  T bugOr(final T defaultValue, final ProgramSupplier supplier,
                              final HLogger logger) throws ProgramException {
        return HFunction.bugAt(defaultValue, (t) -> supplier.get(), logger);
    }

    public static  T runOr(final T defaultValue, final Supplier supplier) {
        return HFunction.runAt(defaultValue, (t) -> supplier.get());
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy