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 35fee6998b8d92c047f6db82fde825810fc26f4a
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Wed Dec 18 09:53:58 2024 -0500

    Add BasicThreadFactory.builder() and deprecate
    BasicThreadFactory.Builder()
    
    Add BasicThreadFactory.deamon()
---
 src/changes/changes.xml                            |  2 +
 .../lang3/concurrent/BasicThreadFactory.java       | 23 ++++++++++
 .../lang3/concurrent/BasicThreadFactoryTest.java   | 49 ++++++++++++++++++----
 3 files changed, 66 insertions(+), 8 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d5754b251..d268afaa4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -85,6 +85,8 @@ The <action> type attribute can be add,update,fix,remove.
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add ArrayUtils.containsAny(int[], int...).</action>
     <action                   type="add" dev="ggregory" due-to="asgh, Gary 
Gregory">Add CalendarUtils.toLocalDate() #725.</action>
     <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add SystemUtils.IS_OS_MAC_OSX_SEQUOIA.</action>
+    <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add BasicThreadFactory.builder() and deprecate 
BasicThreadFactory.Builder().</action>
+    <action                   type="add" dev="ggregory" due-to="Gary 
Gregory">Add BasicThreadFactory.daemon().</action>
     <!-- UPDATE -->
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">Bump org.apache.commons:commons-parent from 73 to 78 
#1267, #1277, #1283, #1288, #1302.</action>
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">[site] Bump org.codehaus.mojo:taglist-maven-plugin from 
3.1.0 to 3.2.1 #1300.</action>
diff --git 
a/src/main/java/org/apache/commons/lang3/concurrent/BasicThreadFactory.java 
b/src/main/java/org/apache/commons/lang3/concurrent/BasicThreadFactory.java
index aa0c9e24a..ff2a5d531 100644
--- a/src/main/java/org/apache/commons/lang3/concurrent/BasicThreadFactory.java
+++ b/src/main/java/org/apache/commons/lang3/concurrent/BasicThreadFactory.java
@@ -119,7 +119,10 @@ public class BasicThreadFactory implements ThreadFactory {
 
         /**
          * Constructs a new instance.
+         *
+         * @deprecated Use {@link BasicThreadFactory#builder()}.
          */
+        @Deprecated
         public Builder() {
             // empty
         }
@@ -138,6 +141,16 @@ public class BasicThreadFactory implements ThreadFactory {
             return factory;
         }
 
+        /**
+         * Sets the daemon flag for the new {@link BasicThreadFactory} to 
{@code true} causing a new thread factory to create daemon threads.
+         *
+         * @return a reference to this {@link Builder}
+         * @since 3.18.0
+         */
+        public Builder daemon() {
+            return daemon(true);
+        }
+
         /**
          * Sets the daemon flag for the new {@link BasicThreadFactory}. If this
          * flag is set to <strong>true</strong> the new thread factory will 
create daemon
@@ -221,6 +234,16 @@ public class BasicThreadFactory implements ThreadFactory {
         }
     }
 
+    /**
+     * Creates a new builder.
+     *
+     * @return a new builder.
+     * @since 3.18.0
+     */
+    public static Builder builder() {
+        return new Builder();
+    }
+
     /** A counter for the threads created by this factory. */
     private final AtomicLong threadCounter;
 
diff --git 
a/src/test/java/org/apache/commons/lang3/concurrent/BasicThreadFactoryTest.java 
b/src/test/java/org/apache/commons/lang3/concurrent/BasicThreadFactoryTest.java
index 42f945105..d75aaf12b 100644
--- 
a/src/test/java/org/apache/commons/lang3/concurrent/BasicThreadFactoryTest.java
+++ 
b/src/test/java/org/apache/commons/lang3/concurrent/BasicThreadFactoryTest.java
@@ -53,8 +53,12 @@ public class BasicThreadFactoryTest extends AbstractLangTest 
{
         final Thread t = new Thread();
         EasyMock.expect(wrapped.newThread(r)).andReturn(t);
         EasyMock.replay(wrapped, r);
-        final BasicThreadFactory factory = 
builder.wrappedFactory(wrapped).daemon(
-                flag).build();
+        // @formatter:off
+        final BasicThreadFactory factory = builder
+                .wrappedFactory(wrapped)
+                .daemon(flag)
+                .build();
+        // @formatter:on
         assertSame(t, factory.newThread(r), "Wrong thread");
         assertEquals(flag, t.isDaemon(), "Wrong daemon flag");
         EasyMock.verify(wrapped, r);
@@ -75,7 +79,7 @@ public class BasicThreadFactoryTest extends AbstractLangTest {
 
     @BeforeEach
     public void setUp() {
-        builder = new BasicThreadFactory.Builder();
+        builder = BasicThreadFactory.builder();
     }
 
     /**
@@ -87,6 +91,26 @@ public class BasicThreadFactoryTest extends AbstractLangTest 
{
         checkFactoryDefaults(factory);
     }
 
+    /**
+     * Tests the daemon() method of the builder.
+     */
+    @Test
+    public void testBuilderDaemon() {
+        builder.daemon();
+        assertTrue(builder.build().getDaemonFlag());
+    }
+
+    /**
+     * Tests the daemon() method of the builder.
+     */
+    @Test
+    public void testBuilderDaemonBoolean() {
+        builder.daemon(true);
+        assertTrue(builder.build().getDaemonFlag());
+        builder.daemon(false);
+        assertFalse(builder.build().getDaemonFlag());
+    }
+
     /**
      * Tests the reset() method of the builder.
      */
@@ -96,9 +120,13 @@ public class BasicThreadFactoryTest extends 
AbstractLangTest {
         final Thread.UncaughtExceptionHandler exHandler = EasyMock
                 .createMock(Thread.UncaughtExceptionHandler.class);
         EasyMock.replay(wrappedFactory, exHandler);
-        builder.namingPattern(PATTERN).daemon(true).priority(
-                Thread.MAX_PRIORITY).uncaughtExceptionHandler(exHandler)
-                .wrappedFactory(wrappedFactory);
+        // @formatter:off
+        builder.namingPattern(PATTERN)
+            .daemon(true)
+            .priority(Thread.MAX_PRIORITY)
+            .uncaughtExceptionHandler(exHandler)
+            .wrappedFactory(wrappedFactory);
+        // @formatter:on
         builder.reset();
         final BasicThreadFactory factory = builder.build();
         checkFactoryDefaults(factory);
@@ -111,8 +139,13 @@ public class BasicThreadFactoryTest extends 
AbstractLangTest {
      */
     @Test
     public void testBuilderResetAfterBuild() {
-        builder.wrappedFactory(EasyMock.createNiceMock(ThreadFactory.class))
-                .namingPattern(PATTERN).daemon(true).build();
+        // @formatter:off
+        builder
+            .wrappedFactory(EasyMock.createNiceMock(ThreadFactory.class))
+            .namingPattern(PATTERN)
+            .daemon(true)
+            .build();
+        // @formatter:on
         checkFactoryDefaults(builder.build());
     }
 

Reply via email to