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 5019152951ad0d9fe65961b5f6e0d1527f876bd5
Author: Gary D. Gregory <[email protected]>
AuthorDate: Wed Aug 20 18:14:14 2025 -0400

    Add 
org.apache.commons.lang3.concurrent.ConcurrentException.ConcurrentException(String)
---
 src/changes/changes.xml                                       |  1 +
 .../apache/commons/lang3/concurrent/ConcurrentException.java  | 11 +++++++++++
 .../apache/commons/lang3/concurrent/ConcurrentUtilsTest.java  |  8 +++++++-
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 305fcc4e2..7eb7038ba 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                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add 
org.apache.commons.lang3.reflect.MethodUtils.getAccessibleMethod(Class, 
Method).</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add documentation to site for CVE-2025-48924 ClassUtils.getClass(...) 
can throw a StackOverflowError on very long inputs.</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add org.apache.commons.lang3.StringUtils.indexOfAny(CharSequence, int, 
char...).</action>
+    <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add 
org.apache.commons.lang3.concurrent.ConcurrentException.ConcurrentException(String).</action>
     <!-- UPDATE -->
     <action type="update" dev="ggregory" due-to="Gary Gregory">[test] Bump 
org.apache.commons:commons-text from 1.13.1 to 1.14.0.</action>
   </release>
diff --git 
a/src/main/java/org/apache/commons/lang3/concurrent/ConcurrentException.java 
b/src/main/java/org/apache/commons/lang3/concurrent/ConcurrentException.java
index 28514d548..8b25a92fd 100644
--- a/src/main/java/org/apache/commons/lang3/concurrent/ConcurrentException.java
+++ b/src/main/java/org/apache/commons/lang3/concurrent/ConcurrentException.java
@@ -41,6 +41,17 @@ public class ConcurrentException extends Exception {
     protected ConcurrentException() {
     }
 
+    /**
+     * Constructs a new exception with the specified detail message. The cause 
is not initialized, and may subsequently be initialized by a call to
+     * {@link #initCause}.
+     *
+     * @param message the detail message. The detail message is saved for 
later retrieval by the {@link #getMessage()} method.
+     * @since 3.19.0
+     */
+    public ConcurrentException(final String message) {
+        super(message);
+    }
+
     /**
      * Creates a new instance of {@link ConcurrentException} and initializes it
      * with the given message and cause.
diff --git 
a/src/test/java/org/apache/commons/lang3/concurrent/ConcurrentUtilsTest.java 
b/src/test/java/org/apache/commons/lang3/concurrent/ConcurrentUtilsTest.java
index 6b074d53a..8e12f3061 100644
--- a/src/test/java/org/apache/commons/lang3/concurrent/ConcurrentUtilsTest.java
+++ b/src/test/java/org/apache/commons/lang3/concurrent/ConcurrentUtilsTest.java
@@ -52,7 +52,13 @@ void testConcurrentExceptionCauseError() {
      */
     @Test
     void testConcurrentExceptionCauseNull() {
-        assertIllegalArgumentException(() -> new ConcurrentException(null));
+        assertIllegalArgumentException(() -> new 
ConcurrentException((Throwable) null));
+    }
+
+    @Test
+    void testConcurrentExceptionCauseString() {
+        assertEquals("test", new ConcurrentException("test").getMessage());
+        assertNull(new ConcurrentException((String) null).getMessage());
     }
 
     /**

Reply via email to