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()) {
