Functional.java
package com.seebie.server.function;
import java.util.function.Consumer;
import java.util.function.Function;
public class Functional {
    @FunctionalInterface
    public interface CheckedConsumer<T> {
        void apply(T t) throws Exception;
    }
    public static <T> Consumer<T> uncheck(CheckedConsumer<T> checkedConsumer) {
        return t -> {
            try {
                checkedConsumer.apply(t);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        };
    }
    // these are only used in test code, could be moved to a test package
    @FunctionalInterface
    public interface CheckedFunction<T, R> {
        R apply(T t) throws Exception;
    }
    public static <T, R> Function<T, R> uncheck(CheckedFunction<T, R> checkedFunction) {
        return t -> {
            try {
                return checkedFunction.apply(t);
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
        };
    }
}