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);
     }
 
     /**

Reply via email to