Repository: karaf
Updated Branches:
  refs/heads/master b6f444bf0 -> 35f7c6acd


KARAF-5105 workaround bin/shell parameters issue


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/35f7c6ac
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/35f7c6ac
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/35f7c6ac

Branch: refs/heads/master
Commit: 35f7c6acd143e5d4ce36f1f15a4efc8b834f37eb
Parents: b6f444b
Author: Frédéric Curvat <[email protected]>
Authored: Tue Apr 25 16:15:44 2017 +0200
Committer: Christian Schneider <[email protected]>
Committed: Tue Apr 25 16:47:59 2017 +0200

----------------------------------------------------------------------
 .../action/command/DefaultActionPreparator.java | 29 ++++++++++++++------
 1 file changed, 20 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/35f7c6ac/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/DefaultActionPreparator.java
----------------------------------------------------------------------
diff --git 
a/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/DefaultActionPreparator.java
 
b/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/DefaultActionPreparator.java
index 689202c..3717bad 100644
--- 
a/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/DefaultActionPreparator.java
+++ 
b/shell/core/src/main/java/org/apache/karaf/shell/impl/action/command/DefaultActionPreparator.java
@@ -40,6 +40,7 @@ import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.felix.gogo.runtime.Token;
 import org.apache.karaf.shell.api.action.Action;
 import org.apache.karaf.shell.api.action.Argument;
 import org.apache.karaf.shell.api.action.Command;
@@ -107,15 +108,25 @@ public class DefaultActionPreparator {
         for (Iterator<Object> it = params.iterator(); it.hasNext(); ) {
             Object param = it.next();
 
-            if (processOptions && param instanceof String && ((String) 
param).startsWith("-")) {
-                boolean isKeyValuePair = ((String) param).indexOf('=') != -1;
+            String paramValue = null;
+            if (param instanceof String) {
+                paramValue = (String)param;
+            }
+            if (param instanceof Token) {
+                paramValue = ((Token)param).toString();
+            }
+
+            if (processOptions
+                    && paramValue != null
+                    && paramValue.startsWith("-")) {
+                boolean isKeyValuePair = paramValue.indexOf('=') != -1;
                 String name;
                 Object value = null;
                 if (isKeyValuePair) {
-                    name = ((String) param).substring(0, ((String) 
param).indexOf('='));
-                    value = ((String) param).substring(((String) 
param).indexOf('=') + 1);
+                    name = paramValue.substring(0, paramValue.indexOf('='));
+                    value = paramValue.substring(paramValue.indexOf('=') + 1);
                 } else {
-                    name = (String) param;
+                    name = paramValue;
                 }
                 Option option = null;
                 for (Option opt : options.keySet()) {
@@ -126,9 +137,9 @@ public class DefaultActionPreparator {
                 }
                 if (option == null) {
                     throw new CommandException(commandErrorSt
-                                + "undefined option " + INTENSITY_BOLD + param 
+ INTENSITY_NORMAL + "\n"
+                                + "undefined option " + INTENSITY_BOLD + 
paramValue + INTENSITY_NORMAL + "\n"
                                 + "Try <command> --help' for more 
information.",
-                                        "Undefined option: " + param);
+                                        "Undefined option: " + paramValue);
                 }
                 Field field = options.get(option);
                 if (value == null && (field.getType() == boolean.class || 
field.getType() == Boolean.class)) {
@@ -139,8 +150,8 @@ public class DefaultActionPreparator {
                 }
                 if (value == null) {
                         throw new CommandException(commandErrorSt
-                                + "missing value for option " + INTENSITY_BOLD 
+ param + INTENSITY_NORMAL,
-                                "Missing value for option: " + param
+                                + "missing value for option " + INTENSITY_BOLD 
+ paramValue + INTENSITY_NORMAL,
+                                "Missing value for option: " + paramValue
                         );
                 }
                 if (option.multiValued()) {

Reply via email to