Package org.apache.commons.lang3

## Class Functions

- java.lang.Object
- - org.apache.commons.lang3.Functions

    @Deprecated
    public class Functions
    extends java.lang.Object

Deprecated.
Use `Failable`.
This class provides utility functions, and classes for working with the `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.

Since:
  3.9

### Nested Class Summary

Nested Classes
`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 Summary

Constructors
`Functions()` Deprecated.

### Method Summary

All Methods Static Methods Concrete Methods Deprecated Methods
`static <O1,​O2,​T extends java.lang.Throwable> void` `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> void` `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> O` `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> O` `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> O` `call​(Functions.FailableCallable<O,​T> callable)` Deprecated. Calls a callable and rethrows any exception as a `RuntimeException`.
`static <O,​T extends java.lang.Throwable> O` `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> void` `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> boolean` `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> boolean` `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.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Functions

    public Functions()

Deprecated.

### Method Detail

#### accept

    public static <O1,​O2,​T extends java.lang.Throwable> void accept​(Functions.FailableBiConsumer<O1,​O2,​T> consumer,
                                                                                O1 object1,
                                                                                O2 object2)

Deprecated.
Consumes a consumer and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `O1` - the type of the first argument the consumer accepts
  `O2` - the type of the second argument the consumer accepts
  `T` - the type of checked exception the consumer may throw
Parameters:
  `consumer` - the consumer to consume
  `object1` - the first object to consume by `consumer`
  `object2` - the second object to consume by `consumer`

#### accept

    public static <O,​T extends java.lang.Throwable> void accept​(Functions.FailableConsumer<O,​T> consumer,
                                                                      O object)

Deprecated.
Consumes a consumer and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `O` - the type the consumer accepts
  `T` - the type of checked exception the consumer may throw
Parameters:
  `consumer` - the consumer to consume
  `object` - the object to consume by `consumer`

#### apply

    public static <O1,​O2,​O,​T extends java.lang.Throwable> O apply​(Functions.FailableBiFunction<O1,​O2,​O,​T> function,
                                                                                    O1 input1,
                                                                                    O2 input2)

Deprecated.
Applies a function and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `O1` - the type of the first argument the function accepts
  `O2` - the type of the second argument the function accepts
  `O` - the return type of the function
  `T` - the type of checked exception the function may throw
Parameters:
  `function` - the function to apply
  `input1` - the first input to apply `function` on
  `input2` - the second input to apply `function` on
Returns:
  the value returned from the function

#### apply

    public static <I,​O,​T extends java.lang.Throwable> O apply​(Functions.FailableFunction<I,​O,​T> function,
                                                                          I input)

Deprecated.
Applies a function and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `I` - the type of the argument the function accepts
  `O` - the return type of the function
  `T` - the type of checked exception the function may throw
Parameters:
  `function` - the function to apply
  `input` - the input to apply `function` on
Returns:
  the value returned from the function

#### asBiConsumer

    public 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`.

Type Parameters:
  `O1` - the type of the first argument of the consumers
  `O2` - the type of the second argument of the consumers
Parameters:
  `consumer` - a failable `BiConsumer`
Returns:
  a standard `BiConsumer`
Since:
  3.10

#### asBiFunction

    public 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`.

Type Parameters:
  `O1` - the type of the first argument of the input of the functions
  `O2` - the type of the second argument of the input of the functions
  `O` - the type of the output of the functions
Parameters:
  `function` - a `FailableBiFunction`
Returns:
  a standard `BiFunction`
Since:
  3.10

#### asBiPredicate

    public 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`.

Type Parameters:
  `O1` - the type of the first argument used by the predicates
  `O2` - the type of the second argument used by the predicates
Parameters:
  `predicate` - a `FailableBiPredicate`
Returns:
  a standard `BiPredicate`
Since:
  3.10

#### asCallable

    public static <O> java.util.concurrent.Callable<O> asCallable​(Functions.FailableCallable<O,​?> callable)

Deprecated.
Converts the given `Functions.FailableCallable` into a standard `Callable`.

Type Parameters:
  `O` - the type used by the callables
Parameters:
  `callable` - a `FailableCallable`
Returns:
  a standard `Callable`
Since:
  3.10

#### asConsumer

    public static <I> java.util.function.Consumer<I> asConsumer​(Functions.FailableConsumer<I,​?> consumer)

Deprecated.
Converts the given `Functions.FailableConsumer` into a standard `Consumer`.

Type Parameters:
  `I` - the type used by the consumers
Parameters:
  `consumer` - a `FailableConsumer`
Returns:
  a standard `Consumer`
Since:
  3.10

#### asFunction

    public 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`.

Type Parameters:
  `I` - the type of the input of the functions
  `O` - the type of the output of the functions
Parameters:
  `function` - a {code FailableFunction}
Returns:
  a standard `Function`
Since:
  3.10

#### asPredicate

    public static <I> java.util.function.Predicate<I> asPredicate​(Functions.FailablePredicate<I,​?> predicate)

Deprecated.
Converts the given `Functions.FailablePredicate` into a standard `Predicate`.

Type Parameters:
  `I` - the type used by the predicates
Parameters:
  `predicate` - a `FailablePredicate`
Returns:
  a standard `Predicate`
Since:
  3.10

#### asRunnable

    public static java.lang.Runnable asRunnable​(Functions.FailableRunnable<?> runnable)

Deprecated.
Converts the given `Functions.FailableRunnable` into a standard `Runnable`.

Parameters:
  `runnable` - a `FailableRunnable`
Returns:
  a standard `Runnable`
Since:
  3.10

#### asSupplier

    public static <O> java.util.function.Supplier<O> asSupplier​(Functions.FailableSupplier<O,​?> supplier)

Deprecated.
Converts the given `Functions.FailableSupplier` into a standard `Supplier`.

Type Parameters:
  `O` - the type supplied by the suppliers
Parameters:
  `supplier` - a `FailableSupplier`
Returns:
  a standard `Supplier`
Since:
  3.10

#### call

    public static <O,​T extends java.lang.Throwable> O call​(Functions.FailableCallable<O,​T> callable)

Deprecated.
Calls a callable and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `O` - the return type of the callable
  `T` - the type of checked exception the callable may throw
Parameters:
  `callable` - the callable to call
Returns:
  the value returned from the callable

#### get

    public static <O,​T extends java.lang.Throwable> O get​(Functions.FailableSupplier<O,​T> supplier)

Deprecated.
Invokes a supplier, and returns the result.

Type Parameters:
  `O` - The suppliers output type.
  `T` - The type of checked exception, which the supplier can throw.
Parameters:
  `supplier` - The supplier to invoke.
Returns:
  The object, which has been created by the supplier
Since:
  3.10

#### rethrow

    public static java.lang.RuntimeException rethrow​(java.lang.Throwable throwable)

Deprecated.

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.

Parameters:
  `throwable` - The throwable to rethrow ossibly wrapped into an unchecked exception
Returns:
  Never returns anything, this method never terminates normally.

#### run

    public static <T extends java.lang.Throwable> void run​(Functions.FailableRunnable<T> runnable)

Deprecated.
Runs a runnable and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `T` - the type of checked exception the runnable may throw
Parameters:
  `runnable` - The runnable to run

#### stream

    public static <O> Streams.FailableStream<O> stream​(java.util.Collection<O> collection)

Deprecated.
Converts the given collection into a `Streams.FailableStream`. The `Streams.FailableStream` consists of the collections elements. Shortcut for

     Functions.stream(collection.stream());

Type Parameters:
  `O` - The collections element type. (In turn, the result streams element type.)
Parameters:
  `collection` - The collection, which is being converted into a `Streams.FailableStream`.
Returns:
  The created `Streams.FailableStream`.
Since:
  3.10

#### stream

    public static <O> Streams.FailableStream<O> stream​(java.util.stream.Stream<O> stream)

Deprecated.
Converts the given stream into a `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.

Type Parameters:
  `O` - The streams element type.
Parameters:
  `stream` - The stream, which is being converted into a `Streams.FailableStream`.
Returns:
  The created `Streams.FailableStream`.
Since:
  3.10

#### test

    public static <O1,​O2,​T extends java.lang.Throwable> boolean test​(Functions.FailableBiPredicate<O1,​O2,​T> predicate,
                                                                                 O1 object1,
                                                                                 O2 object2)

Deprecated.
Tests a predicate and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `O1` - the type of the first argument the predicate tests
  `O2` - the type of the second argument the predicate tests
  `T` - the type of checked exception the predicate may throw
Parameters:
  `predicate` - the predicate to test
  `object1` - the first input to test by `predicate`
  `object2` - the second input to test by `predicate`
Returns:
  the boolean value returned by the predicate

#### test

    public static <O,​T extends java.lang.Throwable> boolean test​(Functions.FailablePredicate<O,​T> predicate,
                                                                       O object)

Deprecated.
Tests a predicate and rethrows any exception as a `RuntimeException`.

Type Parameters:
  `O` - the type of argument the predicate tests
  `T` - the type of checked exception the predicate may throw
Parameters:
  `predicate` - the predicate to test
  `object` - the input to test by `predicate`
Returns:
  the boolean value returned by the predicate

#### tryWithResources

    @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)

Deprecated.
A simple try-with-resources implementation, that can be used, if your objects do not implement the `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());

Parameters:
  `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.
See Also:
  `tryWithResources(FailableRunnable, FailableRunnable...)`

#### tryWithResources

    @SafeVarargs
    public 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. 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());

Parameters:
  `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.
See Also:
  `tryWithResources(FailableRunnable, FailableConsumer, FailableRunnable...)`