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/01/06 15:49:15 UTC

(commons-cli) branch master updated: Add FinalParameters

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 5db0035  Add FinalParameters
5db0035 is described below

commit 5db0035d27cce3d8ffa630d5b9186e1bd0a9cd0f
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sat Jan 6 10:49:05 2024 -0500

    Add FinalParameters
---
 src/conf/checkstyle.xml                            |  1 +
 .../java/org/apache/commons/cli/DefaultParser.java | 12 +++---
 .../java/org/apache/commons/cli/HelpFormatter.java | 26 ++++++------
 src/main/java/org/apache/commons/cli/Option.java   | 13 +++---
 src/main/java/org/apache/commons/cli/Options.java  | 46 +++++++++-------------
 src/main/java/org/apache/commons/cli/Parser.java   |  9 ++---
 src/main/java/org/apache/commons/cli/Util.java     |  6 +--
 7 files changed, 51 insertions(+), 62 deletions(-)

diff --git a/src/conf/checkstyle.xml b/src/conf/checkstyle.xml
index 00f5e14..41cd921 100644
--- a/src/conf/checkstyle.xml
+++ b/src/conf/checkstyle.xml
@@ -45,6 +45,7 @@
     <!-- Checks for Naming Conventions. -->
     <!-- See http://checkstyle.sf.net/config_naming.html -->
     <module name="ConstantName" />
+    <module name="FinalParameters"/>
     <module name="LocalFinalVariableName" />
     <module name="LocalVariableName" />
     <module name="MemberName" />
diff --git a/src/main/java/org/apache/commons/cli/DefaultParser.java b/src/main/java/org/apache/commons/cli/DefaultParser.java
index 8a02709..0ec390d 100644
--- a/src/main/java/org/apache/commons/cli/DefaultParser.java
+++ b/src/main/java/org/apache/commons/cli/DefaultParser.java
@@ -389,18 +389,18 @@ public class DefaultParser implements CommandLineParser {
         }
     }
 
-    private void handleOption(Option option) throws ParseException {
+    private void handleOption(final Option option) throws ParseException {
         // check the previous option before handling the next one
         checkRequiredArgs();
 
-        option = (Option) option.clone();
+        final Option copy = (Option) option.clone();
 
-        updateRequiredOptions(option);
+        updateRequiredOptions(copy);
 
-        cmd.addOption(option);
+        cmd.addOption(copy);
 
-        if (option.hasArg()) {
-            currentOption = option;
+        if (copy.hasArg()) {
+            currentOption = copy;
         } else {
             currentOption = null;
         }
diff --git a/src/main/java/org/apache/commons/cli/HelpFormatter.java b/src/main/java/org/apache/commons/cli/HelpFormatter.java
index 0bf245e..fba4032 100644
--- a/src/main/java/org/apache/commons/cli/HelpFormatter.java
+++ b/src/main/java/org/apache/commons/cli/HelpFormatter.java
@@ -749,39 +749,41 @@ public class HelpFormatter {
      *
      * @return the StringBuffer with the rendered Options contents.
      */
-    protected StringBuffer renderWrappedText(final StringBuffer sb, final int width, int nextLineTabStop, String text) {
-        int pos = findWrapPos(text, width, 0);
+    protected StringBuffer renderWrappedText(final StringBuffer sb, final int width, final int nextLineTabStop, final String text) {
+        String render = text;
+        int nextLineTabStopPos = nextLineTabStop;
+        int pos = findWrapPos(render, width, 0);
 
         if (pos == -1) {
-            sb.append(rtrim(text));
+            sb.append(rtrim(render));
 
             return sb;
         }
-        sb.append(rtrim(text.substring(0, pos))).append(getNewLine());
+        sb.append(rtrim(render.substring(0, pos))).append(getNewLine());
 
-        if (nextLineTabStop >= width) {
+        if (nextLineTabStopPos >= width) {
             // stops infinite loop happening
-            nextLineTabStop = 1;
+            nextLineTabStopPos = 1;
         }
 
         // all following lines must be padded with nextLineTabStop space characters
-        final String padding = createPadding(nextLineTabStop);
+        final String padding = createPadding(nextLineTabStopPos);
 
         while (true) {
-            text = padding + text.substring(pos).trim();
-            pos = findWrapPos(text, width, 0);
+            render = padding + render.substring(pos).trim();
+            pos = findWrapPos(render, width, 0);
 
             if (pos == -1) {
-                sb.append(text);
+                sb.append(render);
 
                 return sb;
             }
 
-            if (text.length() > width && pos == nextLineTabStop - 1) {
+            if (render.length() > width && pos == nextLineTabStopPos - 1) {
                 pos = width;
             }
 
-            sb.append(rtrim(text.substring(0, pos))).append(getNewLine());
+            sb.append(rtrim(render.substring(0, pos))).append(getNewLine());
         }
     }
 
diff --git a/src/main/java/org/apache/commons/cli/Option.java b/src/main/java/org/apache/commons/cli/Option.java
index 7834fc8..dd2623d 100644
--- a/src/main/java/org/apache/commons/cli/Option.java
+++ b/src/main/java/org/apache/commons/cli/Option.java
@@ -729,14 +729,15 @@ public class Option implements Cloneable, Serializable {
      *
      * @since 1.0.1
      */
-    private void processValue(String value) {
+    private void processValue(final String value) {
+        String add = value;
         // this Option has a separator character
         if (hasValueSeparator()) {
             // get the separator character
             final char sep = getValueSeparator();
 
             // store the index for the value separator
-            int index = value.indexOf(sep);
+            int index = add.indexOf(sep);
 
             // while there are more value separators
             while (index != -1) {
@@ -746,18 +747,18 @@ public class Option implements Cloneable, Serializable {
                 }
 
                 // store
-                add(value.substring(0, index));
+                add(add.substring(0, index));
 
                 // parse
-                value = value.substring(index + 1);
+                add = add.substring(index + 1);
 
                 // get new index
-                index = value.indexOf(sep);
+                index = add.indexOf(sep);
             }
         }
 
         // store the actual value or the last value that has been parsed
-        add(value);
+        add(add);
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/cli/Options.java b/src/main/java/org/apache/commons/cli/Options.java
index 63fa86b..e9a6ad7 100644
--- a/src/main/java/org/apache/commons/cli/Options.java
+++ b/src/main/java/org/apache/commons/cli/Options.java
@@ -193,22 +193,18 @@ public class Options implements Serializable {
      * @return the options matching the partial name specified, or an empty list if none matches
      * @since 1.3
      */
-    public List<String> getMatchingOptions(String opt) {
-        opt = Util.stripLeadingHyphens(opt);
-
+    public List<String> getMatchingOptions(final String opt) {
+        final String clean = Util.stripLeadingHyphens(opt);
         final List<String> matchingOpts = new ArrayList<>();
-
         // for a perfect match return the single option only
-        if (longOpts.containsKey(opt)) {
-            return Collections.singletonList(opt);
+        if (longOpts.containsKey(clean)) {
+            return Collections.singletonList(clean);
         }
-
         for (final String longOpt : longOpts.keySet()) {
-            if (longOpt.startsWith(opt)) {
+            if (longOpt.startsWith(clean)) {
                 matchingOpts.add(longOpt);
             }
         }
-
         return matchingOpts;
     }
 
@@ -222,11 +218,10 @@ public class Options implements Serializable {
      * @param opt short or long name of the {@link Option}
      * @return the option represented by opt
      */
-    public Option getOption(String opt) {
-        opt = Util.stripLeadingHyphens(opt);
-
-        final Option option = shortOpts.get(opt);
-        return option != null ? option : longOpts.get(opt);
+    public Option getOption(final String opt) {
+        final String clean = Util.stripLeadingHyphens(opt);
+        final Option option = shortOpts.get(clean);
+        return option != null ? option : longOpts.get(clean);
     }
 
     /**
@@ -273,10 +268,9 @@ public class Options implements Serializable {
      * @return true if the named {@link Option} is a member of this {@link Options}
      * @since 1.3
      */
-    public boolean hasLongOption(String opt) {
-        opt = Util.stripLeadingHyphens(opt);
-
-        return longOpts.containsKey(opt);
+    public boolean hasLongOption(final String opt) {
+        final String clean = Util.stripLeadingHyphens(opt);
+        return longOpts.containsKey(clean);
     }
 
     /**
@@ -285,10 +279,9 @@ public class Options implements Serializable {
      * @param opt short or long name of the {@link Option}
      * @return true if the named {@link Option} is a member of this {@link Options}
      */
-    public boolean hasOption(String opt) {
-        opt = Util.stripLeadingHyphens(opt);
-
-        return shortOpts.containsKey(opt) || longOpts.containsKey(opt);
+    public boolean hasOption(final String opt) {
+        final String clean = Util.stripLeadingHyphens(opt);
+        return shortOpts.containsKey(clean) || longOpts.containsKey(clean);
     }
 
     /**
@@ -298,10 +291,9 @@ public class Options implements Serializable {
      * @return true if the named {@link Option} is a member of this {@link Options}
      * @since 1.3
      */
-    public boolean hasShortOption(String opt) {
-        opt = Util.stripLeadingHyphens(opt);
-
-        return shortOpts.containsKey(opt);
+    public boolean hasShortOption(final String opt) {
+        final String clean = Util.stripLeadingHyphens(opt);
+        return shortOpts.containsKey(clean);
     }
 
     /**
@@ -321,13 +313,11 @@ public class Options implements Serializable {
     @Override
     public String toString() {
         final StringBuilder buf = new StringBuilder();
-
         buf.append("[ Options: [ short ");
         buf.append(shortOpts.toString());
         buf.append(" ] [ long ");
         buf.append(longOpts);
         buf.append(" ]");
-
         return buf.toString();
     }
 }
diff --git a/src/main/java/org/apache/commons/cli/Parser.java b/src/main/java/org/apache/commons/cli/Parser.java
index a524e00..b3b5510 100644
--- a/src/main/java/org/apache/commons/cli/Parser.java
+++ b/src/main/java/org/apache/commons/cli/Parser.java
@@ -141,7 +141,8 @@ public abstract class Parser implements CommandLineParser {
      *
      * @since 1.1
      */
-    public CommandLine parse(final Options options, String[] arguments, final Properties properties, final boolean stopAtNonOption) throws ParseException {
+    public CommandLine parse(final Options options, final String[] arguments, final Properties properties, final boolean stopAtNonOption)
+            throws ParseException {
         // clear out the data in options in case it's been used before (CLI-71)
         for (final Option opt : options.helpOptions()) {
             opt.clearValues();
@@ -159,11 +160,7 @@ public abstract class Parser implements CommandLineParser {
 
         boolean eatTheRest = false;
 
-        if (arguments == null) {
-            arguments = new String[0];
-        }
-
-        final List<String> tokenList = Arrays.asList(flatten(getOptions(), arguments, stopAtNonOption));
+        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/main/java/org/apache/commons/cli/Util.java b/src/main/java/org/apache/commons/cli/Util.java
index fff1005..dce9d6d 100644
--- a/src/main/java/org/apache/commons/cli/Util.java
+++ b/src/main/java/org/apache/commons/cli/Util.java
@@ -33,12 +33,11 @@ final class Util {
      * @param str The string from which the leading and trailing quotes should be removed.
      * @return The string without the leading and trailing quotes.
      */
-    static String stripLeadingAndTrailingQuotes(String str) {
+    static String stripLeadingAndTrailingQuotes(final String str) {
         final int length = str.length();
         if (length > 1 && str.startsWith("\"") && str.endsWith("\"") && str.substring(1, length - 1).indexOf('"') == -1) {
-            str = str.substring(1, length - 1);
+            return str.substring(1, length - 1);
         }
-
         return str;
     }
 
@@ -58,7 +57,6 @@ final class Util {
         if (str.startsWith("-")) {
             return str.substring(1);
         }
-
         return str;
     }
 }