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<CommandLine>.</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());
