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 80f2d7b5e875a41c05ed42656fcd25830ada1b1b Author: Gary D. Gregory <garydgreg...@gmail.com> AuthorDate: Tue Jun 10 18:59:32 2025 -0400 Sort members --- .../java/org/apache/commons/cli/DefaultParser.java | 124 ++++++++++----------- .../java/org/apache/commons/cli/HelpFormatter.java | 14 +-- .../java/org/apache/commons/cli/OptionGroup.java | 14 +-- src/main/java/org/apache/commons/cli/Options.java | 14 +-- .../apache/commons/cli/PatternOptionBuilder.java | 26 ++--- .../org/apache/commons/cli/DefaultParserTest.java | 46 ++++---- 6 files changed, 119 insertions(+), 119 deletions(-) diff --git a/src/main/java/org/apache/commons/cli/DefaultParser.java b/src/main/java/org/apache/commons/cli/DefaultParser.java index bfd7c5f1..c219113f 100644 --- a/src/main/java/org/apache/commons/cli/DefaultParser.java +++ b/src/main/java/org/apache/commons/cli/DefaultParser.java @@ -153,21 +153,6 @@ public class DefaultParser implements CommandLineParser { } } - /** - * Creates a new {@link Builder} to create an {@link DefaultParser} using descriptive - * methods. - * - * @return a new {@link Builder} instance - * @since 1.5.0 - */ - public static Builder builder() { - return new Builder(); - } - - static int indexOfEqual(final String token) { - return token.indexOf(Char.EQUAL); - } - /** * Enum representing possible actions that may be done when "non option" is discovered during parsing. * @@ -194,6 +179,21 @@ public class DefaultParser implements CommandLineParser { THROW; } + /** + * Creates a new {@link Builder} to create an {@link DefaultParser} using descriptive + * methods. + * + * @return a new {@link Builder} instance + * @since 1.5.0 + */ + public static Builder builder() { + return new Builder(); + } + + static int indexOfEqual(final String token) { + return token.indexOf(Char.EQUAL); + } + /** The command-line instance. */ protected CommandLine cmd; @@ -308,6 +308,16 @@ public class DefaultParser implements CommandLineParser { this.deprecatedHandler = deprecatedHandler; } + /** + * Adds token to command line {@link CommandLine#addArg(String)}. + * + * @param token the unrecognized option/argument. + * @since 1.10.0 + */ + protected void addArg(final String token) { + cmd.addArg(token); + } + /** * Throws a {@link MissingArgumentException} if the current option didn't receive the number of arguments expected. */ @@ -633,16 +643,6 @@ public class DefaultParser implements CommandLineParser { } } - /** - * Adds token to command line {@link CommandLine#addArg(String)}. - * - * @param token the unrecognized option/argument. - * @since 1.10.0 - */ - protected void addArg(final String token) { - cmd.addArg(token); - } - /** * Tests if the token is a valid argument. * @@ -726,6 +726,43 @@ public class DefaultParser implements CommandLineParser { return !optName.isEmpty() && options.hasShortOption(String.valueOf(optName.charAt(0))); } + /** + * Parses the arguments according to the specified options and properties. + * + * @param options the specified Options + * @param properties command line option name-value pairs + * @param nonOptionAction see {@link NonOptionAction}. + * @param arguments the command line arguments + * + * @return the list of atomic option and value tokens + * @throws ParseException if there are any problems encountered while parsing the command line tokens. + * @since 1.10.0 + */ + public CommandLine parse(final Options options, final Properties properties, final NonOptionAction nonOptionAction, final String... arguments) + throws ParseException { + this.options = options; + this.nonOptionAction = nonOptionAction; + skipParsing = false; + currentOption = null; + expectedOpts = new ArrayList<>(options.getRequiredOptions()); + // clear the data from the groups + for (final OptionGroup group : options.getOptionGroups()) { + group.setSelected(null); + } + cmd = CommandLine.builder().setDeprecatedHandler(deprecatedHandler).get(); + if (arguments != null) { + for (final String argument : arguments) { + handleToken(argument); + } + } + // check the arguments of the last option + checkRequiredArgs(); + // add the default options + handleProperties(properties); + checkRequiredOptions(); + return cmd; + } + @Override public CommandLine parse(final Options options, final String[] arguments) throws ParseException { return parse(options, arguments, null); @@ -771,43 +808,6 @@ public class DefaultParser implements CommandLineParser { return parse(options, properties, stopAtNonOption ? NonOptionAction.STOP : NonOptionAction.THROW, arguments); } - /** - * Parses the arguments according to the specified options and properties. - * - * @param options the specified Options - * @param properties command line option name-value pairs - * @param nonOptionAction see {@link NonOptionAction}. - * @param arguments the command line arguments - * - * @return the list of atomic option and value tokens - * @throws ParseException if there are any problems encountered while parsing the command line tokens. - * @since 1.10.0 - */ - public CommandLine parse(final Options options, final Properties properties, final NonOptionAction nonOptionAction, final String... arguments) - throws ParseException { - this.options = options; - this.nonOptionAction = nonOptionAction; - skipParsing = false; - currentOption = null; - expectedOpts = new ArrayList<>(options.getRequiredOptions()); - // clear the data from the groups - for (final OptionGroup group : options.getOptionGroups()) { - group.setSelected(null); - } - cmd = CommandLine.builder().setDeprecatedHandler(deprecatedHandler).get(); - if (arguments != null) { - for (final String argument : arguments) { - handleToken(argument); - } - } - // check the arguments of the last option - checkRequiredArgs(); - // add the default options - handleProperties(properties); - checkRequiredOptions(); - return cmd; - } - /** * Strips balanced leading and trailing quotes if the stripLeadingAndTrailingQuotes is set * If stripLeadingAndTrailingQuotes is null, then do not strip diff --git a/src/main/java/org/apache/commons/cli/HelpFormatter.java b/src/main/java/org/apache/commons/cli/HelpFormatter.java index 9e598eb2..04f71090 100644 --- a/src/main/java/org/apache/commons/cli/HelpFormatter.java +++ b/src/main/java/org/apache/commons/cli/HelpFormatter.java @@ -78,13 +78,6 @@ public class HelpFormatter { // TODO All other instance HelpFormatter instance variables. // Make HelpFormatter immutable for 2.0 - /** - * Constructs a new instance. - */ - public Builder() { - // empty - } - /** * A function to convert a description (not null) and a deprecated Option (not null) to help description */ @@ -103,6 +96,13 @@ public class HelpFormatter { /** The flag to determine if the since values should be dispalyed */ private boolean showSince; + /** + * Constructs a new instance. + */ + public Builder() { + // empty + } + @Override public HelpFormatter get() { return new HelpFormatter(deprecatedFormatFunction, printStream, showSince); diff --git a/src/main/java/org/apache/commons/cli/OptionGroup.java b/src/main/java/org/apache/commons/cli/OptionGroup.java index 1644df80..945ca9f2 100644 --- a/src/main/java/org/apache/commons/cli/OptionGroup.java +++ b/src/main/java/org/apache/commons/cli/OptionGroup.java @@ -28,13 +28,6 @@ import java.util.Map; */ public class OptionGroup implements Serializable { - /** - * Constructs a new instance. - */ - public OptionGroup() { - // empty - } - /** The serial version UID. */ private static final long serialVersionUID = 1L; @@ -47,6 +40,13 @@ public class OptionGroup implements Serializable { /** Specified whether this group is required */ private boolean required; + /** + * Constructs a new instance. + */ + public OptionGroup() { + // empty + } + /** * Adds the given {@code Option} to this group. * diff --git a/src/main/java/org/apache/commons/cli/Options.java b/src/main/java/org/apache/commons/cli/Options.java index 9c689834..5dfb1e2f 100644 --- a/src/main/java/org/apache/commons/cli/Options.java +++ b/src/main/java/org/apache/commons/cli/Options.java @@ -40,13 +40,6 @@ import java.util.Map; */ public class Options implements Serializable { - /** - * Constructs new instance. - */ - public Options() { - // empty - } - /** The serial version UID. */ private static final long serialVersionUID = 1L; @@ -64,6 +57,13 @@ public class Options implements Serializable { /** A map of the option groups */ private final Map<String, OptionGroup> optionGroups = new LinkedHashMap<>(); + /** + * Constructs new instance. + */ + public Options() { + // empty + } + /** * Adds an option instance * diff --git a/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java b/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java index 78acae30..dc11c697 100644 --- a/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java +++ b/src/main/java/org/apache/commons/cli/PatternOptionBuilder.java @@ -74,16 +74,6 @@ import java.util.Map; */ public class PatternOptionBuilder { - /** - * Deprecated, only provides static methods. - * - * @deprecated Will be private or class will be final. - */ - @Deprecated - public PatternOptionBuilder() { - // empty - } - /** String class */ public static final Class<String> STRING_VALUE = String.class; @@ -99,13 +89,13 @@ public class PatternOptionBuilder { /** Class class */ public static final Class<?> CLASS_VALUE = Class.class; + /** FileInputStream class */ + public static final Class<FileInputStream> EXISTING_FILE_VALUE = FileInputStream.class; + /// can we do this one?? // is meant to check that the file exists, else it errors. // ie) it's for reading not writing. - /** FileInputStream class */ - public static final Class<FileInputStream> EXISTING_FILE_VALUE = FileInputStream.class; - /** File class */ public static final Class<File> FILE_VALUE = File.class; @@ -236,4 +226,14 @@ public class PatternOptionBuilder { static <T> T unsupported() { return (T) UNSUPPORTED; } + + /** + * Deprecated, only provides static methods. + * + * @deprecated Will be private or class will be final. + */ + @Deprecated + public PatternOptionBuilder() { + // empty + } } diff --git a/src/test/java/org/apache/commons/cli/DefaultParserTest.java b/src/test/java/org/apache/commons/cli/DefaultParserTest.java index 35f96d5b..24894413 100644 --- a/src/test/java/org/apache/commons/cli/DefaultParserTest.java +++ b/src/test/java/org/apache/commons/cli/DefaultParserTest.java @@ -151,15 +151,8 @@ class DefaultParserTest extends AbstractParserTestCase { } } - @Override - @BeforeEach - public void setUp() { - super.setUp(); - parser = new DefaultParser(); - } - @Test - void chainingParsersSkipHappyPath() throws ParseException { + void chainingParsersIgnoreHappyPath() throws ParseException { Option a = Option.builder().option("a").longOpt("first-letter").build(); Option b = Option.builder().option("b").longOpt("second-letter").build(); Option c = Option.builder().option("c").longOpt("third-letter").build(); @@ -178,17 +171,17 @@ class DefaultParserTest extends AbstractParserTestCase { DefaultParser parser = new DefaultParser(); - CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.SKIP, args); + CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.IGNORE, args); assertEquals(2, baseCommandLine.getOptions().length); - assertEquals(4, baseCommandLine.getArgs().length); + assertEquals(2, baseCommandLine.getArgs().length); assertTrue(baseCommandLine.hasOption("a")); assertTrue(baseCommandLine.hasOption("b")); assertFalse(baseCommandLine.hasOption("c")); assertFalse(baseCommandLine.hasOption("d")); assertFalse(baseCommandLine.getArgList().contains("-a")); assertFalse(baseCommandLine.getArgList().contains("-b")); - assertTrue(baseCommandLine.getArgList().contains("-c")); - assertTrue(baseCommandLine.getArgList().contains("-d")); + assertFalse(baseCommandLine.getArgList().contains("-c")); + assertFalse(baseCommandLine.getArgList().contains("-d")); assertTrue(baseCommandLine.getArgList().contains("arg1")); assertTrue(baseCommandLine.getArgList().contains("arg2")); @@ -208,7 +201,7 @@ class DefaultParserTest extends AbstractParserTestCase { } @Test - void chainingParsersSkipNonHappyPath() throws ParseException { + void chainingParsersIgnoreNonHappyPath() throws ParseException { Option a = Option.builder().option("a").longOpt("first-letter").build(); Option b = Option.builder().option("b").longOpt("second-letter").build(); Option c = Option.builder().option("c").longOpt("third-letter").build(); @@ -225,9 +218,9 @@ class DefaultParserTest extends AbstractParserTestCase { DefaultParser parser = new DefaultParser(); - CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.SKIP, args); + CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.IGNORE, args); assertEquals(2, baseCommandLine.getOptions().length); - assertEquals(4, baseCommandLine.getArgs().length); + assertEquals(2, baseCommandLine.getArgs().length); UnrecognizedOptionException e = assertThrows(UnrecognizedOptionException.class, () -> parser.parse(specificOptions, null, DefaultParser.NonOptionAction.THROW, args)); @@ -235,7 +228,7 @@ class DefaultParserTest extends AbstractParserTestCase { } @Test - void chainingParsersIgnoreHappyPath() throws ParseException { + void chainingParsersSkipHappyPath() throws ParseException { Option a = Option.builder().option("a").longOpt("first-letter").build(); Option b = Option.builder().option("b").longOpt("second-letter").build(); Option c = Option.builder().option("c").longOpt("third-letter").build(); @@ -254,17 +247,17 @@ class DefaultParserTest extends AbstractParserTestCase { DefaultParser parser = new DefaultParser(); - CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.IGNORE, args); + CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.SKIP, args); assertEquals(2, baseCommandLine.getOptions().length); - assertEquals(2, baseCommandLine.getArgs().length); + assertEquals(4, baseCommandLine.getArgs().length); assertTrue(baseCommandLine.hasOption("a")); assertTrue(baseCommandLine.hasOption("b")); assertFalse(baseCommandLine.hasOption("c")); assertFalse(baseCommandLine.hasOption("d")); assertFalse(baseCommandLine.getArgList().contains("-a")); assertFalse(baseCommandLine.getArgList().contains("-b")); - assertFalse(baseCommandLine.getArgList().contains("-c")); - assertFalse(baseCommandLine.getArgList().contains("-d")); + assertTrue(baseCommandLine.getArgList().contains("-c")); + assertTrue(baseCommandLine.getArgList().contains("-d")); assertTrue(baseCommandLine.getArgList().contains("arg1")); assertTrue(baseCommandLine.getArgList().contains("arg2")); @@ -284,7 +277,7 @@ class DefaultParserTest extends AbstractParserTestCase { } @Test - void chainingParsersIgnoreNonHappyPath() throws ParseException { + void chainingParsersSkipNonHappyPath() throws ParseException { Option a = Option.builder().option("a").longOpt("first-letter").build(); Option b = Option.builder().option("b").longOpt("second-letter").build(); Option c = Option.builder().option("c").longOpt("third-letter").build(); @@ -301,9 +294,9 @@ class DefaultParserTest extends AbstractParserTestCase { DefaultParser parser = new DefaultParser(); - CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.IGNORE, args); + CommandLine baseCommandLine = parser.parse(baseOptions, null, DefaultParser.NonOptionAction.SKIP, args); assertEquals(2, baseCommandLine.getOptions().length); - assertEquals(2, baseCommandLine.getArgs().length); + assertEquals(4, baseCommandLine.getArgs().length); UnrecognizedOptionException e = assertThrows(UnrecognizedOptionException.class, () -> parser.parse(specificOptions, null, DefaultParser.NonOptionAction.THROW, args)); @@ -336,6 +329,13 @@ class DefaultParserTest extends AbstractParserTestCase { assertTrue(e.getMessage().contains("-d")); } + @Override + @BeforeEach + public void setUp() { + super.setUp(); + parser = new DefaultParser(); + } + @Test void testBuilder() { // @formatter:off