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");
         }

Reply via email to