[main] Enhance Try DSL
This commit is contained in:
parent
246ebfac32
commit
c2681c29c5
|
@ -1,34 +1,58 @@
|
|||
package io.gitlab.jfronny.libjf.generic;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.Objects;
|
||||
import java.util.function.*;
|
||||
|
||||
public class Try {
|
||||
public static void orElse(ThrowingRunnable<?> tr, Consumer<Throwable> alternative) {
|
||||
tr.addHandler(alternative).run();
|
||||
Objects.requireNonNull(tr).addHandler(alternative).run();
|
||||
}
|
||||
|
||||
public static <T> T orElse(ThrowingSupplier<T, ?> tr, Function<Throwable, ? extends T> alternative) {
|
||||
return tr.addHandler(alternative).get();
|
||||
return Objects.requireNonNull(tr).addHandler(alternative).get();
|
||||
}
|
||||
|
||||
public static void orThrow(ThrowingRunnable<?> tr) {
|
||||
try {
|
||||
tr.run();
|
||||
} catch (Throwable e) {
|
||||
throw runtimeException(e);
|
||||
}
|
||||
Objects.requireNonNull(tr).orThrow().run();
|
||||
}
|
||||
|
||||
public static <T> T orThrow(ThrowingSupplier<T, ?> tr) {
|
||||
try {
|
||||
return tr.get();
|
||||
} catch (Throwable e) {
|
||||
throw runtimeException(e);
|
||||
}
|
||||
return Objects.requireNonNull(tr).orThrow().get();
|
||||
}
|
||||
|
||||
public static <T, U> BiConsumer<T, U> handle(ThrowingBiConsumer<T, U, ?> tr, Consumer<Throwable> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static <T, U, R> BiFunction<T, U, R> handle(ThrowingBiFunction<T, U, R, ?> tr, Function<Throwable, ? extends R> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static BooleanSupplier handle(ThrowingBooleanSupplier<?> tr, Predicate<Throwable> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static <T> Consumer<T> handle(ThrowingConsumer<T, ?> tr, Consumer<Throwable> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static <T, R> Function<T, R> handle(ThrowingFunction<T, R, ?> tr, Function<Throwable, ? extends R> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static <T> Predicate<T> handle(ThrowingPredicate<T, ?> tr, Predicate<Throwable> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static Runnable handle(ThrowingRunnable<?> tr, Consumer<Throwable> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
public static <T> Supplier<T> handle(ThrowingSupplier<T, ?> tr, Function<Throwable, ? extends T> handler) {
|
||||
return Objects.requireNonNull(tr).addHandler(handler);
|
||||
}
|
||||
|
||||
protected static RuntimeException runtimeException(Throwable t) {
|
||||
return t instanceof RuntimeException e ? e : new RuntimeException(t);
|
||||
return t == null ? null : t instanceof RuntimeException e ? e : new RuntimeException(t);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue