This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
commit 096b05e89f55eacf574b3214c2dfe3692123afb9 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sun Dec 1 09:23:23 2024 -0500 Make Failable.run(FailableRunnable) null-safe --- src/changes/changes.xml | 1 + .../java/org/apache/commons/lang3/function/Failable.java | 14 ++++++++------ .../commons/lang3/function/FailableFunctionsTest.java | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 805fc95f9..d8d2266d0 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -65,6 +65,7 @@ The <action> type attribute can be add,update,fix,remove. <action issue="LANG-1757" type="fix" dev="ggregory" due-to="Gary Gregory">Fix NullPointerException in MethodUtils.getMatchingAccessibleMethod((Class, String, Class...)).</action> <action issue="LANG-1698" type="fix" dev="ggregory" due-to="Jan Arne Sparka, Gary Gregory">Fix StackOverflowError in TypeUtils.typeVariableToString(TypeVariable), TypeUtils.toString(Type) on Java 17 and up.</action> <action issue="LANG-1511" type="fix" dev="ggregory" due-to="david cogen, Gary Gregory, Bruno P. Kinoshita">SystemUtils is missing important documentation.</action> + <action type="fix" dev="ggregory" due-to="Gary Gregory">Make Failable.run(FailableRunnable) null-safe.</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">Add Strings and refactor StringUtils.</action> <action issue="LANG-1747" type="add" dev="ggregory" due-to="Oliver B. Fischer, Gary Gregory">Add StopWatch.run([Failable]Runnable) and get([Failable]Supplier).</action> diff --git a/src/main/java/org/apache/commons/lang3/function/Failable.java b/src/main/java/org/apache/commons/lang3/function/Failable.java index b3edcd241..a2814e107 100644 --- a/src/main/java/org/apache/commons/lang3/function/Failable.java +++ b/src/main/java/org/apache/commons/lang3/function/Failable.java @@ -419,14 +419,16 @@ public class Failable { /** * Runs a runnable and rethrows any exception as a {@link RuntimeException}. * - * @param runnable The runnable to run - * @param <E> the type of checked exception the runnable may throw + * @param runnable The runnable to run, may be null for a noop. + * @param <E> the type of checked exception the runnable may throw. */ public static <E extends Throwable> void run(final FailableRunnable<E> runnable) { - try { - runnable.run(); - } catch (final Throwable t) { - throw rethrow(t); + if (runnable != null) { + try { + runnable.run(); + } catch (final Throwable t) { + throw rethrow(t); + } } } diff --git a/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java b/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java index 2052205ac..88c82e511 100644 --- a/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java +++ b/src/test/java/org/apache/commons/lang3/function/FailableFunctionsTest.java @@ -1493,6 +1493,7 @@ public class FailableFunctionsTest extends AbstractLangTest { // Even invocations, should not throw an exception Failable.run(FailureOnOddInvocations::new); + Failable.run(null); } /**