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

commit 4535fae18f5ce7747ac77c3f1cb5eaadea9fc284
Author: Gary Gregory <[email protected]>
AuthorDate: Wed Oct 16 16:13:26 2024 -0400

    CommandLine.Builder implements Supplier<CommandLine>
---
 src/changes/changes.xml                               |  3 ++-
 src/main/java/org/apache/commons/cli/CommandLine.java | 19 ++++++++++++++++---
 .../java/org/apache/commons/cli/DefaultParser.java    |  2 +-
 src/main/java/org/apache/commons/cli/Parser.java      |  2 +-
 .../java/org/apache/commons/cli/CommandLineTest.java  | 12 +++++++++++-
 5 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2e5825c2..801e474e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -25,7 +25,8 @@
     <release version="1.9.1" date="YYYY-MM-DD" description="This is a feature 
and maintenance release. Java 8 or later is required.">
       <!-- FIX -->
       <!-- ADD -->
-      <action type="add" issue="CLI-339" dev="ggregory" due-to="Claude Warren, 
Gary Gregory">Help formatter extension #314.</action>
+      <action type="add" issue="CLI-339" dev="ggregory" due-to="Claude Warren, 
Gary Gregory">Help formatter extension in the new package #314.</action>
+      <action type="add" dev="ggregory" due-to="Gary 
Gregory">CommandLine.Builder implements Supplier&lt;CommandLine&gt;.</action>
       <!-- UPDATE -->
       <action type="update" dev="ggregory" due-to="Gary Gregory, 
Dependabot">Bump org.apache.commons:commons-parent from 72 to 77 #302, #304, 
#310, #315, #320.</action>
       <action type="update" dev="ggregory" due-to="Gary Gregory, 
Dependabot">Bump commons-io:commons-io from 2.16.1 to 2.17.0 #309.</action>
diff --git a/src/main/java/org/apache/commons/cli/CommandLine.java 
b/src/main/java/org/apache/commons/cli/CommandLine.java
index c6f02f42..761061c7 100644
--- a/src/main/java/org/apache/commons/cli/CommandLine.java
+++ b/src/main/java/org/apache/commons/cli/CommandLine.java
@@ -44,7 +44,7 @@ public class CommandLine implements Serializable {
      *
      * @since 1.4
      */
-    public static final class Builder {
+    public static final class Builder implements Supplier<CommandLine> {
 
         /**
          * Prints an Option to {@link System#out}.
@@ -91,11 +91,24 @@ public class CommandLine implements Serializable {
         }
 
         /**
-         * Creates the new instance.
+         * Creates a new instance.
          *
-         * @return the new instance.
+         * @return a new instance.
+         * @deprecated Use {@link #get()}.
          */
+        @Deprecated
         public CommandLine build() {
+            return get();
+        }
+
+        /**
+         * Creates a new instance.
+         *
+         * @return a new instance.
+         * @since 1.10.0
+         */
+        @Override
+        public CommandLine get() {
             return new CommandLine(args, options, deprecatedHandler);
         }
 
diff --git a/src/main/java/org/apache/commons/cli/DefaultParser.java 
b/src/main/java/org/apache/commons/cli/DefaultParser.java
index 883e74a3..f78d5da6 100644
--- a/src/main/java/org/apache/commons/cli/DefaultParser.java
+++ b/src/main/java/org/apache/commons/cli/DefaultParser.java
@@ -710,7 +710,7 @@ public class DefaultParser implements CommandLineParser {
         for (final OptionGroup group : options.getOptionGroups()) {
             group.setSelected(null);
         }
-        cmd = 
CommandLine.builder().setDeprecatedHandler(deprecatedHandler).build();
+        cmd = 
CommandLine.builder().setDeprecatedHandler(deprecatedHandler).get();
         if (arguments != null) {
             for (final String argument : arguments) {
                 handleToken(argument);
diff --git a/src/main/java/org/apache/commons/cli/Parser.java 
b/src/main/java/org/apache/commons/cli/Parser.java
index ae35b6ce..9f7a40b4 100644
--- a/src/main/java/org/apache/commons/cli/Parser.java
+++ b/src/main/java/org/apache/commons/cli/Parser.java
@@ -149,7 +149,7 @@ public abstract class Parser implements CommandLineParser {
         }
         // initialize members
         setOptions(options);
-        cmd = CommandLine.builder().build();
+        cmd = CommandLine.builder().get();
         boolean eatTheRest = false;
         final List<String> tokenList = Arrays.asList(flatten(getOptions(), 
arguments == null ? new String[0] : arguments, stopAtNonOption));
         final ListIterator<String> iterator = tokenList.listIterator();
diff --git a/src/test/java/org/apache/commons/cli/CommandLineTest.java 
b/src/test/java/org/apache/commons/cli/CommandLineTest.java
index f28321f8..7c80fe5c 100644
--- a/src/test/java/org/apache/commons/cli/CommandLineTest.java
+++ b/src/test/java/org/apache/commons/cli/CommandLineTest.java
@@ -218,12 +218,22 @@ public class CommandLineTest {
     }
 
     @Test
-    public void testBuilder() {
+    public void testBuilderBuild() {
         final CommandLine.Builder builder = new CommandLine.Builder();
         builder.addArg("foo").addArg("bar");
         builder.addOption(Option.builder("T").build());
         final CommandLine cmd = builder.build();
+        assertEquals("foo", cmd.getArgs()[0]);
+        assertEquals("bar", cmd.getArgList().get(1));
+        assertEquals("T", cmd.getOptions()[0].getOpt());
+    }
 
+    @Test
+    public void testBuilderGet() {
+        final CommandLine.Builder builder = new CommandLine.Builder();
+        builder.addArg("foo").addArg("bar");
+        builder.addOption(Option.builder("T").build());
+        final CommandLine cmd = builder.get();
         assertEquals("foo", cmd.getArgs()[0]);
         assertEquals("bar", cmd.getArgList().get(1));
         assertEquals("T", cmd.getOptions()[0].getOpt());

Reply via email to