You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2024/06/08 13:25:59 UTC
(commons-cli) branch master updated: Add OptionGroup.isSelected()
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 <ga...@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");
}