Failable
.@Deprecated public class Functions extends 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 Throwable>
Deprecated.
Use
FailableBiConsumer . |
static interface |
Functions.FailableBiFunction<O1,O2,R,T extends Throwable>
Deprecated.
Use
FailableBiFunction . |
static interface |
Functions.FailableBiPredicate<O1,O2,T extends Throwable>
Deprecated.
Use
FailableBiPredicate . |
static interface |
Functions.FailableCallable<R,T extends Throwable>
Deprecated.
Use
FailableCallable . |
static interface |
Functions.FailableConsumer<O,T extends Throwable>
Deprecated.
Use
FailableConsumer . |
static interface |
Functions.FailableFunction<I,R,T extends Throwable>
Deprecated.
Use
FailableFunction . |
static interface |
Functions.FailablePredicate<I,T extends Throwable>
Deprecated.
Use
FailablePredicate . |
static interface |
Functions.FailableRunnable<T extends Throwable>
Deprecated.
Use
FailableRunnable . |
static interface |
Functions.FailableSupplier<R,T extends Throwable>
Deprecated.
Use
FailableSupplier . |
Constructor and Description |
---|
Functions()
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
static <O1,O2,T extends 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 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 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 Throwable> |
apply(Functions.FailableFunction<I,O,T> function,
I input)
Deprecated.
Applies a function and rethrows any exception as a
RuntimeException . |
static <O1,O2> BiConsumer<O1,O2> |
asBiConsumer(Functions.FailableBiConsumer<O1,O2,?> consumer)
Deprecated.
Converts the given
Functions.FailableBiConsumer into a standard BiConsumer . |
static <O1,O2,O> BiFunction<O1,O2,O> |
asBiFunction(Functions.FailableBiFunction<O1,O2,O,?> function)
Deprecated.
Converts the given
Functions.FailableBiFunction into a standard BiFunction . |
static <O1,O2> BiPredicate<O1,O2> |
asBiPredicate(Functions.FailableBiPredicate<O1,O2,?> predicate)
Deprecated.
Converts the given
Functions.FailableBiPredicate into a standard BiPredicate . |
static <O> Callable<O> |
asCallable(Functions.FailableCallable<O,?> callable)
Deprecated.
Converts the given
Functions.FailableCallable into a standard Callable . |
static <I> Consumer<I> |
asConsumer(Functions.FailableConsumer<I,?> consumer)
Deprecated.
Converts the given
Functions.FailableConsumer into a standard Consumer . |
static <I,O> Function<I,O> |
asFunction(Functions.FailableFunction<I,O,?> function)
Deprecated.
Converts the given
Functions.FailableFunction into a standard Function . |
static <I> Predicate<I> |
asPredicate(Functions.FailablePredicate<I,?> predicate)
Deprecated.
Converts the given
Functions.FailablePredicate into a standard Predicate . |
static Runnable |
asRunnable(Functions.FailableRunnable<?> runnable)
Deprecated.
Converts the given
Functions.FailableRunnable into a standard Runnable . |
static <O> Supplier<O> |
asSupplier(Functions.FailableSupplier<O,?> supplier)
Deprecated.
Converts the given
Functions.FailableSupplier into a standard Supplier . |
static <O,T extends Throwable> |
call(Functions.FailableCallable<O,T> callable)
Deprecated.
Calls a callable and rethrows any exception as a
RuntimeException . |
static <O,T extends Throwable> |
get(Functions.FailableSupplier<O,T> supplier)
Deprecated.
Invokes a supplier, and returns the result.
|
static RuntimeException |
rethrow(Throwable throwable)
Deprecated.
Rethrows a
Throwable as an unchecked exception. |
static <T extends Throwable> |
run(Functions.FailableRunnable<T> runnable)
Deprecated.
Runs a runnable and rethrows any exception as a
RuntimeException . |
static <O> Streams.FailableStream<O> |
stream(Collection<O> collection)
Deprecated.
Converts the given collection into a
Streams.FailableStream . |
static <O> Streams.FailableStream<O> |
stream(Stream<O> stream)
Deprecated.
Converts the given stream into a
Streams.FailableStream . |
static <O1,O2,T extends 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 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 Throwable> action,
Functions.FailableConsumer<Throwable,? extends Throwable> errorHandler,
Functions.FailableRunnable<? extends 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 Throwable> action,
Functions.FailableRunnable<? extends Throwable>... resources)
Deprecated.
A simple try-with-resources implementation, that can be used, if your objects do not implement the
AutoCloseable interface. |
public Functions()
public static <O1,O2,T extends 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 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 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 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> 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> 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 FailableBiFunction
BiFunction
public static <O1,O2> 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 FailableBiPredicate
BiPredicate
public static <O> Callable<O> asCallable(Functions.FailableCallable<O,?> callable)
Functions.FailableCallable
into a standard Callable
.O
- the type used by the callablescallable
- a FailableCallable
Callable
public static <I> Consumer<I> asConsumer(Functions.FailableConsumer<I,?> consumer)
Functions.FailableConsumer
into a standard Consumer
.I
- the type used by the consumersconsumer
- a FailableConsumer
Consumer
public static <I,O> 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> Predicate<I> asPredicate(Functions.FailablePredicate<I,?> predicate)
Functions.FailablePredicate
into a standard Predicate
.I
- the type used by the predicatespredicate
- a FailablePredicate
Predicate
public static Runnable asRunnable(Functions.FailableRunnable<?> runnable)
Functions.FailableRunnable
into a standard Runnable
.runnable
- a FailableRunnable
Runnable
public static <O> Supplier<O> asSupplier(Functions.FailableSupplier<O,?> supplier)
Functions.FailableSupplier
into a standard Supplier
.O
- the type supplied by the supplierssupplier
- a FailableSupplier
Supplier
public static <O,T extends 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 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 RuntimeException rethrow(Throwable throwable)
Rethrows a 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 ossibly wrapped into an unchecked exceptionpublic static <T extends 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(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(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 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 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 Throwable> action, Functions.FailableConsumer<Throwable,? extends Throwable> errorHandler, Functions.FailableRunnable<? extends 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 Throwable> action, Functions.FailableRunnable<? extends 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 © 2001–2020 The Apache Software Foundation. All rights reserved.