[rhq] modules/enterprise

John Sanda jsanda at fedoraproject.org
Thu Aug 16 17:23:28 UTC 2012


 modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java |   28 ++++++++++
 1 file changed, 28 insertions(+)

New commits:
commit 2e9bce71d9e26e1a7034650a56f6d3118b20ebaa
Author: John Sanda <jsanda at redhat.com>
Date:   Thu Aug 16 13:18:09 2012 -0400

    [BZ 826604] fix parsing of quoted named args
    
    This commit addresses the parsing problems of using quoted strings with
    named arguments.

diff --git a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
index c7f6bbf..e068272 100644
--- a/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
+++ b/modules/enterprise/remoting/cli/src/main/java/org/rhq/enterprise/client/ClientMain.java
@@ -431,6 +431,7 @@ public class ClientMain {
         boolean keep_going = true;
 
         boolean isScriptFileCommand = false;
+        boolean isNamedArgs = false;
 
         // we don't want to parse numbers and we want ' to be a normal word
         // character
@@ -471,12 +472,39 @@ public class ClientMain {
                     isScriptFileCommand = true;
                 }
                 args.add(strtok.sval);
+                if (strtok.sval.equals("--args-style=named")) {
+                    isNamedArgs = true;
+                }
             } else if (nextToken == '\"' || nextToken == '\'') {
                 args.add(strtok.sval);
             } else if ((nextToken == java.io.StreamTokenizer.TT_EOF) || (nextToken == java.io.StreamTokenizer.TT_EOL)) {
                 keep_going = false;
             }
         }
+
+        if (isNamedArgs) {
+            List<String> newArgs = new ArrayList<String>();
+            int namedArgsIndex = args.indexOf("--args-style=named");
+
+            for (int i = 0; i <= namedArgsIndex; ++i) {
+                newArgs.add(args.get(i));
+            }
+
+            String namedArg = null;
+            for (int i = namedArgsIndex + 1; i < args.size(); ++i) {
+                if (namedArg == null && args.get(i).endsWith("=")) {
+                    namedArg = args.get(i);
+                } else if (namedArg != null) {
+                    newArgs.add(args.get(i - 1) + args.get(i));
+                    namedArg = null;
+                } else {
+                    newArgs.add(args.get(i));
+                }
+            }
+
+            return newArgs.toArray(new String[newArgs.size()]);
+        }
+
         return args.toArray(new String[args.size()]);
     }
 




More information about the rhq-commits mailing list