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
The following commit(s) were added to refs/heads/master by this push: new 267bdf7 Add OptionGroup.isSelected() 267bdf7 is described below commit 267bdf7777a0380d1280da0f83f2e5000440c0c5 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Sat Jun 8 09:25:55 2024 -0400 Add OptionGroup.isSelected() Next version will be 1.9.0 --- pom.xml | 8 ++++---- src/changes/changes.xml | 8 ++++++-- src/main/java/org/apache/commons/cli/DefaultParser.java | 2 +- src/main/java/org/apache/commons/cli/OptionGroup.java | 10 ++++++++++ src/main/java/org/apache/commons/cli/Parser.java | 2 +- .../java/org/apache/commons/cli/AbstractParserTestCase.java | 3 +++ src/test/java/org/apache/commons/cli/OptionGroupTest.java | 4 ++++ 7 files changed, 29 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index ef6832e..f8a9347 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> - <version>1.8.1-SNAPSHOT</version> + <version>1.9.0-SNAPSHOT</version> <name>Apache Commons CLI</name> <inceptionYear>2002</inceptionYear> <description> @@ -70,12 +70,12 @@ <maven.compiler.target>1.8</maven.compiler.target> <commons.componentid>cli</commons.componentid> <commons.module.name>org.apache.commons.cli</commons.module.name> - <commons.release.version>1.8.0</commons.release.version> - <commons.release.next>1.8.1</commons.release.next> + <commons.release.version>1.9.0</commons.release.version> + <commons.release.next>1.9.1</commons.release.next> <commons.release.name>commons-cli-${commons.release.version}</commons.release.name> <commons.release.isDistModule>true</commons.release.isDistModule> <commons.rc.version>RC2</commons.rc.version> - <commons.bc.version>1.7.0</commons.bc.version> + <commons.bc.version>1.8.0</commons.bc.version> <commons.osgi.symbolicName>org.apache.commons.cli</commons.osgi.symbolicName> <commons.jira.id>CLI</commons.jira.id> <commons.jira.pid>12310463</commons.jira.pid> diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 5c7cef6..71338b5 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -22,8 +22,12 @@ <title>Apache Commons CLI Release Notes</title> </properties> <body> - <release version="1.8.1" date="YYYY-MM-DD" description="This release contains new features and bug fixes and requires Java 8 or above."> - <action type="add" issue="CLI-334" dev="ggregory" due-to="Eric Pugh">Fix Javadoc pathing #280.</action> + <release version="1.9.0" date="YYYY-MM-DD" description="This release contains new features and bug fixes and requires Java 8 or above."> + <!-- ADD --> + <action type="add" dev="ggregory" due-to="Gary Gregory">Add OptionGroup.isSelected().</action> + <!-- FIX --> + <action type="fix" issue="CLI-334" dev="ggregory" due-to="Eric Pugh">Fix Javadoc pathing #280.</action> + <!-- UPDATE --> </release> <release version="1.8.0" date="2024-05-18" description="This release contains new features and bug fixes and requires Java 8 or above."> <!-- ADD --> diff --git a/src/main/java/org/apache/commons/cli/DefaultParser.java b/src/main/java/org/apache/commons/cli/DefaultParser.java index 528a7e7..883e74a 100644 --- a/src/main/java/org/apache/commons/cli/DefaultParser.java +++ b/src/main/java/org/apache/commons/cli/DefaultParser.java @@ -443,7 +443,7 @@ public class DefaultParser implements CommandLineParser { } // if the option is part of a group, check if another option of the group has been selected final OptionGroup group = options.getOptionGroup(opt); - final boolean selected = group != null && group.getSelected() != null; + final boolean selected = group != null && group.isSelected(); if (!cmd.hasOption(option) && !selected) { // get the value from the properties final String value = properties.getProperty(option); diff --git a/src/main/java/org/apache/commons/cli/OptionGroup.java b/src/main/java/org/apache/commons/cli/OptionGroup.java index 82dd5d4..51f75e9 100644 --- a/src/main/java/org/apache/commons/cli/OptionGroup.java +++ b/src/main/java/org/apache/commons/cli/OptionGroup.java @@ -91,6 +91,16 @@ public class OptionGroup implements Serializable { return required; } + /** + * Tests whether an option is selected. + * + * @return whether whether an option is selected. + * @since 1.9.0 + */ + public boolean isSelected() { + return selected != null; + } + /** * Sets whether this group is required. * diff --git a/src/main/java/org/apache/commons/cli/Parser.java b/src/main/java/org/apache/commons/cli/Parser.java index 44cb21a..ae35b6c 100644 --- a/src/main/java/org/apache/commons/cli/Parser.java +++ b/src/main/java/org/apache/commons/cli/Parser.java @@ -273,7 +273,7 @@ public abstract class Parser implements CommandLineParser { } // if the option is part of a group, check if another option of the group has been selected final OptionGroup group = options.getOptionGroup(opt); - final boolean selected = group != null && group.getSelected() != null; + final boolean selected = group != null && group.isSelected(); if (!cmd.hasOption(option) && !selected) { // get the value from the properties instance final String value = properties.getProperty(option); diff --git a/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java b/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java index 0114098..f61b15f 100644 --- a/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java +++ b/src/test/java/org/apache/commons/cli/AbstractParserTestCase.java @@ -542,6 +542,7 @@ public abstract class AbstractParserTestCase { @Test public void testOptionGroup() throws Exception { final OptionGroup group = new OptionGroup(); + assertFalse(group.isSelected()); group.addOption(OptionBuilder.create("a")); group.addOption(OptionBuilder.create("b")); @@ -550,6 +551,7 @@ public abstract class AbstractParserTestCase { parser.parse(options, new String[] { "-b" }); + assertTrue(group.isSelected()); assertEquals("b", group.getSelected(), "selected option"); } @@ -565,6 +567,7 @@ public abstract class AbstractParserTestCase { final CommandLine cl = parser.parse(options, new String[] { "--bar" }); assertTrue(cl.hasOption("bar")); + assertTrue(group.isSelected()); assertEquals("bar", group.getSelected(), "selected option"); } diff --git a/src/test/java/org/apache/commons/cli/OptionGroupTest.java b/src/test/java/org/apache/commons/cli/OptionGroupTest.java index 7266fd6..84e3b03 100644 --- a/src/test/java/org/apache/commons/cli/OptionGroupTest.java +++ b/src/test/java/org/apache/commons/cli/OptionGroupTest.java @@ -63,6 +63,8 @@ public class OptionGroupTest { @Test public void testGetNames() { final OptionGroup group = new OptionGroup(); + assertFalse(group.isSelected()); + group.addOption(OptionBuilder.create('a')); group.addOption(OptionBuilder.create('b')); @@ -156,6 +158,7 @@ public class OptionGroupTest { fail("two arguments from group not allowed"); } catch (final AlreadySelectedException e) { assertNotNull(e.getOptionGroup(), "null option group"); + assertTrue(e.getOptionGroup().isSelected()); assertEquals("f", e.getOptionGroup().getSelected(), "selected option"); assertEquals("d", e.getOption().getOpt(), "option"); } @@ -183,6 +186,7 @@ public class OptionGroupTest { fail("two arguments from group not allowed"); } catch (final AlreadySelectedException e) { assertNotNull(e.getOptionGroup(), "null option group"); + assertTrue(e.getOptionGroup().isSelected()); assertEquals("f", e.getOptionGroup().getSelected(), "selected option"); assertEquals("d", e.getOption().getOpt(), "option"); }