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-text.git


The following commit(s) were added to refs/heads/master by this push:
     new 78b50843 Deprecate Builder in favor of Supplier
78b50843 is described below

commit 78b50843d700cad94ca41210b09be20d6941bae4
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Sun Apr 7 09:02:31 2024 -0400

    Deprecate Builder in favor of Supplier
    
    Javadoc improvements
---
 src/changes/changes.xml                            |  1 +
 src/main/java/org/apache/commons/text/Builder.java | 53 +++++++++++++---------
 .../apache/commons/text/RandomStringGenerator.java | 21 +++++++--
 .../java/org/apache/commons/text/StrBuilder.java   | 18 +++++++-
 .../org/apache/commons/text/TextStringBuilder.java | 18 +++++++-
 .../commons/text/lookup/StringLookupFactory.java   | 20 ++++----
 .../apache/commons/text/TextStringBuilderTest.java |  6 +++
 7 files changed, 97 insertions(+), 40 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 724f5098..e284df29 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -54,6 +54,7 @@ The <action> type attribute can be add,update,fix,remove.
     <!-- FIX -->
     <action issue="TEXT-232" type="fix" dev="ggregory" due-to="Arnout Engelen, 
Gary Gregory">WordUtils.containsAllWords​() may throw 
PatternSyntaxException.</action>
     <action issue="TEXT-175" type="fix" dev="ggregory" due-to="David Lavati, 
seanfabs, Gary Gregory, Bruno P. Kinoshita">Fix regression for determining 
whitespace in WordUtils #519.</action>
+    <action                  type="fix" dev="ggregory" due-to="Gary 
Gregory">Deprecate Builder in favor of Supplier.</action>
     <!-- UPDATE -->
     <action                  type="update" dev="ggregory" due-to="Gary 
Gregory">Bump commons-lang3 from 3.13.0 to 3.14.0.</action>
     <action                  type="update" dev="ggregory" 
due-to="Dependabot">Bump commons.bytebuddy.version from 1.14.9 to 1.14.13 #476, 
#482, #505, #521.</action>
diff --git a/src/main/java/org/apache/commons/text/Builder.java 
b/src/main/java/org/apache/commons/text/Builder.java
index ca4c2d34..4007fe60 100644
--- a/src/main/java/org/apache/commons/text/Builder.java
+++ b/src/main/java/org/apache/commons/text/Builder.java
@@ -16,28 +16,29 @@
  */
 package org.apache.commons.text;
 
+import java.util.function.Supplier;
+
 /**
- * The Builder interface is designed to designate a class as a <em>builder</em>
- * object in the Builder design pattern. Builders are capable of creating and
- * configuring objects or results that normally take multiple steps to 
construct
- * or are very complex to derive.
- *
+ * Duplicates the functionality of {@link Supplier}.
  * <p>
- * The builder interface defines a single method, {@link #build()}, that
- * classes must implement. The result of this method should be the final
- * configured object or result after all building operations are performed.
+ * Defines a class as a <em>builder</em> following the Builder design pattern. 
Builders are capable of creating and configuring objects or results that 
normally
+ * take multiple steps to construct or are very complex to derive.
+ * </p>
+ * <p>
+ * The builder interface defines a single method, {@link #get()}, that classes 
must implement. The result of this method should be the final configured object
+ * or result after all building operations are performed.
  * </p>
- *
  * <p>
- * It is a recommended practice that the methods supplied to configure the
- * object or result being built return a reference to {@code this} so that
- * method calls can be chained together.
+ * It is a recommended practice that the methods supplied to configure the 
object or result being built return a reference to {@code this} so that method 
calls
+ * can be chained together.
  * </p>
  *
  * <p>
  * Example Builder:
  * </p>
- * <pre><code>
+ *
+ * <pre>
+ * <code>
  * class FontBuilder implements Builder&lt;Font&gt; {
  *     private Font font;
  *
@@ -61,26 +62,34 @@ package org.apache.commons.text;
  *         return this.font;
  *     }
  * }
- * </code></pre>
+ * </code>
+ * </pre>
  *
  * Example Builder Usage:
- * <pre><code>
- * Font bold14ptSansSerifFont = new FontBuilder(Font.SANS_SERIF).bold()
- *                                                              .size(14.0f)
- *                                                              .build();
- * </code></pre>
+ *
+ * <pre>
+ * <code>
+ * Font bold14ptSansSerifFont = new FontBuilder(Font.SANS_SERIF)
+ *      .bold()
+ *      .size(14.0f)
+ *      .get();
+ * </code>
+ * </pre>
  *
  *
  * @param <T> the type of object that the builder will construct or compute.
  * @since 1.0
+ * @see Supplier
+ * @deprecated Use :@link Supplier}.
  */
-public interface Builder<T> {
+@Deprecated
+public interface Builder<T> extends Supplier<T> {
 
     /**
-     * Returns a reference to the object being constructed or result being
-     * calculated by the builder.
+     * Returns a reference to the object being constructed or result being 
calculated by the builder.
      *
      * @return The object constructed or result calculated by the builder.
      */
     T build();
+
 }
diff --git a/src/main/java/org/apache/commons/text/RandomStringGenerator.java 
b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
index c1cf9a12..aa3f43c7 100644
--- a/src/main/java/org/apache/commons/text/RandomStringGenerator.java
+++ b/src/main/java/org/apache/commons/text/RandomStringGenerator.java
@@ -126,14 +126,15 @@ public final class RandomStringGenerator {
         private List<Character> characterList;
 
         /**
-         * Builds the {@code RandomStringGenerator} using the properties 
specified.
+         * Builds a new {@code RandomStringGenerator}.
          *
-         * @return The configured {@code RandomStringGenerator}
+         * @return A new {@code RandomStringGenerator}
+         * @deprecated Use {@link #get()}.
          */
+        @Deprecated
         @Override
         public RandomStringGenerator build() {
-            return new RandomStringGenerator(minimumCodePoint, 
maximumCodePoint, inclusivePredicates,
-                    random, characterList);
+            return get();
         }
 
         /**
@@ -164,6 +165,18 @@ public final class RandomStringGenerator {
             return this;
         }
 
+        /**
+         * Builds a new {@code RandomStringGenerator}.
+         *
+         * @return A new {@code RandomStringGenerator}
+         * @since 1.12.0
+         */
+        @Override
+        public RandomStringGenerator get() {
+            return new RandomStringGenerator(minimumCodePoint, 
maximumCodePoint, inclusivePredicates,
+                    random, characterList);
+        }
+
         /**
          * Limits the characters in the generated string to those who match at
          * supplied list of Character.
diff --git a/src/main/java/org/apache/commons/text/StrBuilder.java 
b/src/main/java/org/apache/commons/text/StrBuilder.java
index 27249954..c84c5f2c 100644
--- a/src/main/java/org/apache/commons/text/StrBuilder.java
+++ b/src/main/java/org/apache/commons/text/StrBuilder.java
@@ -1510,11 +1510,13 @@ public class StrBuilder implements CharSequence, 
Appendable, Serializable, Build
     }
 
     /**
-     * Builds a string.
+     * Converts this instance to a String.
      *
-     * @return The builder as a String
+     * @return This instance as a String
      * @see #toString()
+     * @deprecated Use {@link #get()}.
      */
+    @Deprecated
     @Override
     public String build() {
         return toString();
@@ -1868,6 +1870,18 @@ public class StrBuilder implements CharSequence, 
Appendable, Serializable, Build
         return true;
     }
 
+    /**
+     * Converts this instance to a String.
+     *
+     * @return This instance as a String
+     * @see #toString()
+     * @since 1.12.0
+     */
+    @Override
+    public String get() {
+        return toString();
+    }
+
     /**
      * Copies the character array into the specified array.
      *
diff --git a/src/main/java/org/apache/commons/text/TextStringBuilder.java 
b/src/main/java/org/apache/commons/text/TextStringBuilder.java
index 7b978707..ca48a293 100644
--- a/src/main/java/org/apache/commons/text/TextStringBuilder.java
+++ b/src/main/java/org/apache/commons/text/TextStringBuilder.java
@@ -1548,11 +1548,13 @@ public class TextStringBuilder implements CharSequence, 
Appendable, Serializable
     }
 
     /**
-     * Implement the {@link Builder} interface.
+     * Converts this instance to a String.
      *
-     * @return The builder as a String
+     * @return This instance as a String
      * @see #toString()
+     * @deprecated Use {@link #get()}.
      */
+    @Deprecated
     @Override
     public String build() {
         return toString();
@@ -1961,6 +1963,18 @@ public class TextStringBuilder implements CharSequence, 
Appendable, Serializable
         return true;
     }
 
+    /**
+     * Converts this instance to a String.
+     *
+     * @return This instance as a String
+     * @see #toString()
+     * @since 1.12.0
+     */
+    @Override
+    public String get() {
+        return toString();
+    }
+
     /** Gets a direct reference to internal storage, not for public 
consumption. */
     char[] getBuffer() {
         return buffer;
diff --git 
a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java 
b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
index 3c4015a6..c4a2d98a 100644
--- a/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
+++ b/src/main/java/org/apache/commons/text/lookup/StringLookupFactory.java
@@ -250,16 +250,6 @@ public final class StringLookupFactory {
 
     }
 
-    /**
-     * Constructs a new {@link Builder}.
-     *
-     * @return a new {@link Builder}
-     * @since 1.12.0
-     */
-    public static Builder builder() {
-        return new Builder();
-    }
-
     /**
      * Internal class used to construct the default {@link StringLookup} map 
used by {@link StringLookupFactory#addDefaultStringLookups(Map)}.
      */
@@ -582,6 +572,16 @@ public final class StringLookupFactory {
      */
     public static final String KEY_XML_ENCODER = "xmlEncoder";
 
+    /**
+     * Constructs a new {@link Builder}.
+     *
+     * @return a new {@link Builder}
+     * @since 1.12.0
+     */
+    public static Builder builder() {
+        return new Builder();
+    }
+
     /**
      * Clears any static resources.
      *
diff --git a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java 
b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
index b3d63dd9..524ae3c5 100644
--- a/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
+++ b/src/test/java/org/apache/commons/text/TextStringBuilderTest.java
@@ -340,6 +340,12 @@ public class TextStringBuilderTest {
         }
     }
 
+    @Test
+    public void testAsSupplier() {
+        final TextStringBuilder sb = new 
TextStringBuilder().appendAll("Lorem", " ", "ipsum", " ", "dolor");
+        assertEquals(sb.toString(), sb.get());
+    }
+
     @Test
     public void testAsTokenizer() throws Exception {
         // from Javadoc

Reply via email to