Failable
.@Deprecated
public class Functions
extends java.lang.Object
java.util.function
package, or more
generally, with Java 8 lambdas. More specifically, it attempts to address the fact that lambdas are supposed not to
throw Exceptions, at least not checked Exceptions, AKA instances of Exception
. This enforces the use of
constructs like:
Consumer<java.lang.reflect.Method> consumer = m -> {
try {
m.invoke(o, args);
} catch (Throwable t) {
throw Functions.rethrow(t);
}
};
By replacing a Consumer<O>
with a FailableConsumer<O,? extends Throwable>
, this can be written like follows:
Functions.accept((m) -> m.invoke(o,args));
Obviously, the second version is much more concise and the spirit of Lambda expressions is met better than the second version.
Modifier and Type | Class and Description |
---|---|
static interface |
Functions.FailableBiConsumer<O1,O2,T extends java.lang.Throwable>
Deprecated.
Use
FailableBiConsumer . |
static interface |
Functions.FailableBiFunction<O1,O2,R,T extends java.lang.Throwable>
Deprecated.
Use
FailableBiFunction . |
static interface |
Functions.FailableBiPredicate<O1,O2,T extends java.lang.Throwable>
Deprecated.
Use
FailableBiPredicate . |
static interface |
Functions.FailableCallable<R,T extends java.lang.Throwable>
Deprecated.
Use
FailableCallable . |
static interface |
Functions.FailableConsumer<O,T extends java.lang.Throwable>
Deprecated.
Use
FailableConsumer . |
static interface |
Functions.FailableFunction<I,R,T extends java.lang.Throwable>
Deprecated.
Use
FailableFunction . |
static interface |
Functions.FailablePredicate<I,T extends java.lang.Throwable>
Deprecated.
Use
FailablePredicate . |
static interface |
Functions.FailableRunnable<T extends java.lang.Throwable>
Deprecated.
Use
FailableRunnable . |
static interface |
Functions.FailableSupplier<R,T extends java.lang.Throwable>
Deprecated.
Use
FailableSupplier . |
Constructor and Description |
---|
Functions()
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
static <O1,O2,T extends java.lang.Throwable> |
accept(Functions.FailableBiConsumer<O1,O2,T> consumer,
O1 object1,
O2 object2)
Deprecated.
Consumes a consumer and rethrows any exception as a
RuntimeException . |
static <O,T extends java.lang.Throwable> |
accept(Functions.FailableConsumer<O,T> consumer,
O object)
Deprecated.
Consumes a consumer and rethrows any exception as a
RuntimeException . |
static <O1,O2,O,T extends java.lang.Throwable> |
apply(Functions.FailableBiFunction<O1,O2,O,T> function,
O1 input1,
O2 input2)
Deprecated.
Applies a function and rethrows any exception as a
RuntimeException . |
static <I,O,T extends java.lang.Throwable> |
apply(Functions.FailableFunction<I,O,T> function,
I input)
Deprecated.
Applies a function and rethrows any exception as a
RuntimeException . |
static <O1,O2> java.util.function.BiConsumer<O1,O2> |
asBiConsumer(Functions.FailableBiConsumer<O1,O2,?> consumer)
Deprecated.
Converts the given
Functions.FailableBiConsumer into a standard BiConsumer . |
static <O1,O2,O> java.util.function.BiFunction<O1,O2,O> |
asBiFunction(Functions.FailableBiFunction<O1,O2,O,?> function)
Deprecated.
Converts the given
Functions.FailableBiFunction into a standard BiFunction . |
static <O1,O2> java.util.function.BiPredicate<O1,O2> |
asBiPredicate(Functions.FailableBiPredicate<O1,O2,?> predicate)
Deprecated.
Converts the given
Functions.FailableBiPredicate into a standard BiPredicate . |
static <O> java.util.concurrent.Callable<O> |
asCallable(Functions.FailableCallable<O,?> callable)
Deprecated.
Converts the given
Functions.FailableCallable into a standard Callable . |
static <I> java.util.function.Consumer<I> |
asConsumer(Functions.FailableConsumer<I,?> consumer)
Deprecated.
Converts the given
Functions.FailableConsumer into a standard Consumer . |
static <I,O> java.util.function.Function<I,O> |
asFunction(Functions.FailableFunction<I,O,?> function)
Deprecated.
Converts the given
Functions.FailableFunction into a standard Function . |
static <I> java.util.function.Predicate<I> |
asPredicate(Functions.FailablePredicate<I,?> predicate)
Deprecated.
Converts the given
Functions.FailablePredicate into a standard Predicate . |
static java.lang.Runnable |
asRunnable(Functions.FailableRunnable<?> runnable)
Deprecated.
Converts the given
Functions.FailableRunnable into a standard Runnable . |
static <O> java.util.function.Supplier<O> |
asSupplier(Functions.FailableSupplier<O,?> supplier)
Deprecated.
Converts the given
Functions.FailableSupplier into a standard Supplier . |
static <O,T extends java.lang.Throwable> |
call(Functions.FailableCallable<O,T> callable)
Deprecated.
Calls a callable and rethrows any exception as a
RuntimeException . |
static <O,T extends java.lang.Throwable> |
get(Functions.FailableSupplier<O,T> supplier)
Deprecated.
Invokes a supplier, and returns the result.
|
static java.lang.RuntimeException |
rethrow(java.lang.Throwable throwable)
Deprecated.
Rethrows a
Throwable as an unchecked exception. |
static <T extends java.lang.Throwable> |
run(Functions.FailableRunnable<T> runnable)
Deprecated.
Runs a runnable and rethrows any exception as a
RuntimeException . |
static <O> Streams.FailableStream<O> |
stream(java.util.Collection<O> collection)
Deprecated.
Converts the given collection into a
Streams.FailableStream . |
static <O> Streams.FailableStream<O> |
stream(java.util.stream.Stream<O> stream)
Deprecated.
Converts the given stream into a
Streams.FailableStream . |
static <O1,O2,T extends java.lang.Throwable> |
test(Functions.FailableBiPredicate<O1,O2,T> predicate,
O1 object1,
O2 object2)
Deprecated.
Tests a predicate and rethrows any exception as a
RuntimeException . |
static <O,T extends java.lang.Throwable> |
test(Functions.FailablePredicate<O,T> predicate,
O object)
Deprecated.
Tests a predicate and rethrows any exception as a
RuntimeException . |
static void |
tryWithResources(Functions.FailableRunnable<? extends java.lang.Throwable> action,
Functions.FailableConsumer<java.lang.Throwable,? extends java.lang.Throwable> errorHandler,
Functions.FailableRunnable<? extends java.lang.Throwable>... resources)
Deprecated.
A simple try-with-resources implementation, that can be used, if your objects do not implement the
AutoCloseable interface. |
static void |
tryWithResources(Functions.FailableRunnable<? extends java.lang.Throwable> action,
Functions.FailableRunnable<? extends java.lang.Throwable>... resources)
Deprecated.
A simple try-with-resources implementation, that can be used, if your objects do not implement the
AutoCloseable interface. |
public static <O1,O2,T extends java.lang.Throwable> void accept(Functions.FailableBiConsumer<O1,O2,T> consumer, O1 object1, O2 object2)
RuntimeException
.O1
- the type of the first argument the consumer acceptsO2
- the type of the second argument the consumer acceptsT
- the type of checked exception the consumer may throwconsumer
- the consumer to consumeobject1
- the first object to consume by consumer
object2
- the second object to consume by consumer
public static <O,T extends java.lang.Throwable> void accept(Functions.FailableConsumer<O,T> consumer, O object)
RuntimeException
.O
- the type the consumer acceptsT
- the type of checked exception the consumer may throwconsumer
- the consumer to consumeobject
- the object to consume by consumer
public static <O1,O2,O,T extends java.lang.Throwable> O apply(Functions.FailableBiFunction<O1,O2,O,T> function, O1 input1, O2 input2)
RuntimeException
.O1
- the type of the first argument the function acceptsO2
- the type of the second argument the function acceptsO
- the return type of the functionT
- the type of checked exception the function may throwfunction
- the function to applyinput1
- the first input to apply function
oninput2
- the second input to apply function
onpublic static <I,O,T extends java.lang.Throwable> O apply(Functions.FailableFunction<I,O,T> function, I input)
RuntimeException
.I
- the type of the argument the function acceptsO
- the return type of the functionT
- the type of checked exception the function may throwfunction
- the function to applyinput
- the input to apply function
onpublic static <O1,O2> java.util.function.BiConsumer<O1,O2> asBiConsumer(Functions.FailableBiConsumer<O1,O2,?> consumer)
Functions.FailableBiConsumer
into a standard BiConsumer
.O1
- the type of the first argument of the consumersO2
- the type of the second argument of the consumersconsumer
- a failable BiConsumer
BiConsumer
public static <O1,O2,O> java.util.function.BiFunction<O1,O2,O> asBiFunction(Functions.FailableBiFunction<O1,O2,O,?> function)
Functions.FailableBiFunction
into a standard BiFunction
.O1
- the type of the first argument of the input of the functionsO2
- the type of the second argument of the input of the functionsO
- the type of the output of the functionsfunction
- a Functions.FailableBiFunction
BiFunction
public static <O1,O2> java.util.function.BiPredicate<O1,O2> asBiPredicate(Functions.FailableBiPredicate<O1,O2,?> predicate)
Functions.FailableBiPredicate
into a standard BiPredicate
.O1
- the type of the first argument used by the predicatesO2
- the type of the second argument used by the predicatespredicate
- a Functions.FailableBiPredicate
BiPredicate
public static <O> java.util.concurrent.Callable<O> asCallable(Functions.FailableCallable<O,?> callable)
Functions.FailableCallable
into a standard Callable
.O
- the type used by the callablescallable
- a Functions.FailableCallable
Callable
public static <I> java.util.function.Consumer<I> asConsumer(Functions.FailableConsumer<I,?> consumer)
Functions.FailableConsumer
into a standard Consumer
.I
- the type used by the consumersconsumer
- a Functions.FailableConsumer
Consumer
public static <I,O> java.util.function.Function<I,O> asFunction(Functions.FailableFunction<I,O,?> function)
Functions.FailableFunction
into a standard Function
.I
- the type of the input of the functionsO
- the type of the output of the functionsfunction
- a {code FailableFunction}Function
public static <I> java.util.function.Predicate<I> asPredicate(Functions.FailablePredicate<I,?> predicate)
Functions.FailablePredicate
into a standard Predicate
.I
- the type used by the predicatespredicate
- a Functions.FailablePredicate
Predicate
public static java.lang.Runnable asRunnable(Functions.FailableRunnable<?> runnable)
Functions.FailableRunnable
into a standard Runnable
.runnable
- a Functions.FailableRunnable
Runnable
public static <O> java.util.function.Supplier<O> asSupplier(Functions.FailableSupplier<O,?> supplier)
Functions.FailableSupplier
into a standard Supplier
.O
- the type supplied by the supplierssupplier
- a Functions.FailableSupplier
Supplier
public static <O,T extends java.lang.Throwable> O call(Functions.FailableCallable<O,T> callable)
RuntimeException
.O
- the return type of the callableT
- the type of checked exception the callable may throwcallable
- the callable to callpublic static <O,T extends java.lang.Throwable> O get(Functions.FailableSupplier<O,T> supplier)
O
- The suppliers output type.T
- The type of checked exception, which the supplier can throw.supplier
- The supplier to invoke.public static java.lang.RuntimeException rethrow(java.lang.Throwable throwable)
Throwable
as an unchecked exception. If the argument is already unchecked, namely a
RuntimeException
or Error
then the argument will be rethrown without modification. If the
exception is IOException
then it will be wrapped into a UncheckedIOException
. In every other
cases the exception will be wrapped into a UndeclaredThrowableException
Note that there is a declared return type for this method, even though it never returns. The reason for that is to support the usual pattern:
throw rethrow(myUncheckedException);
instead of just calling the method. This pattern may help the Java compiler to recognize that at that point an
exception will be thrown and the code flow analysis will not demand otherwise mandatory commands that could
follow the method call, like a return
statement from a value returning method.
throwable
- The throwable to rethrow possibly wrapped into an unchecked exceptionpublic static <T extends java.lang.Throwable> void run(Functions.FailableRunnable<T> runnable)
RuntimeException
.T
- the type of checked exception the runnable may throwrunnable
- The runnable to runpublic static <O> Streams.FailableStream<O> stream(java.util.Collection<O> collection)
Streams.FailableStream
. The Streams.FailableStream
consists of the
collections elements. Shortcut for
Functions.stream(collection.stream());
O
- The collections element type. (In turn, the result streams element type.)collection
- The collection, which is being converted into a Streams.FailableStream
.Streams.FailableStream
.public static <O> Streams.FailableStream<O> stream(java.util.stream.Stream<O> stream)
Streams.FailableStream
. The Streams.FailableStream
consists of the same
elements, than the input stream. However, failable lambdas, like Functions.FailablePredicate
,
Functions.FailableFunction
, and Functions.FailableConsumer
may be applied, rather than Predicate
,
Function
, Consumer
, etc.O
- The streams element type.stream
- The stream, which is being converted into a Streams.FailableStream
.Streams.FailableStream
.public static <O1,O2,T extends java.lang.Throwable> boolean test(Functions.FailableBiPredicate<O1,O2,T> predicate, O1 object1, O2 object2)
RuntimeException
.O1
- the type of the first argument the predicate testsO2
- the type of the second argument the predicate testsT
- the type of checked exception the predicate may throwpredicate
- the predicate to testobject1
- the first input to test by predicate
object2
- the second input to test by predicate
public static <O,T extends java.lang.Throwable> boolean test(Functions.FailablePredicate<O,T> predicate, O object)
RuntimeException
.O
- the type of argument the predicate testsT
- the type of checked exception the predicate may throwpredicate
- the predicate to testobject
- the input to test by predicate
@SafeVarargs public static void tryWithResources(Functions.FailableRunnable<? extends java.lang.Throwable> action, Functions.FailableConsumer<java.lang.Throwable,? extends java.lang.Throwable> errorHandler, Functions.FailableRunnable<? extends java.lang.Throwable>... resources)
AutoCloseable
interface. The method executes the action
. The method guarantees, that all
the resources
are being executed, in the given order, afterwards, and regardless of success, or failure.
If either the original action, or any of the resource action fails, then the first failure (AKA
Throwable
) is rethrown. Example use:
final FileInputStream fis = new FileInputStream("my.file");
Functions.tryWithResources(useInputStream(fis), null, () -> fis.close());
action
- The action to execute. This object will always be invoked.errorHandler
- An optional error handler, which will be invoked finally, if any error occurred. The error
handler will receive the first error, AKA Throwable
.resources
- The resource actions to execute. All resource actions will be invoked, in the given
order. A resource action is an instance of Functions.FailableRunnable
, which will be executed.tryWithResources(FailableRunnable, FailableRunnable...)
@SafeVarargs public static void tryWithResources(Functions.FailableRunnable<? extends java.lang.Throwable> action, Functions.FailableRunnable<? extends java.lang.Throwable>... resources)
AutoCloseable
interface. The method executes the action
. The method guarantees, that all
the resources
are being executed, in the given order, afterwards, and regardless of success, or failure.
If either the original action, or any of the resource action fails, then the first failure (AKA
Throwable
) is rethrown. Example use:
final FileInputStream fis = new FileInputStream("my.file");
Functions.tryWithResources(useInputStream(fis), () -> fis.close());
action
- The action to execute. This object will always be invoked.resources
- The resource actions to execute. All resource actions will be invoked, in the given
order. A resource action is an instance of Functions.FailableRunnable
, which will be executed.tryWithResources(FailableRunnable, FailableConsumer, FailableRunnable...)
Copyright © 2010 - 2023 Adobe. All Rights Reserved