You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2014/02/14 13:44:12 UTC
[02/15] git commit: [KARAF-2756] Fix @Completer to correctly handle
multi-valued arguments
[KARAF-2756] Fix @Completer to correctly handle multi-valued arguments
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/ef7ba257
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/ef7ba257
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/ef7ba257
Branch: refs/heads/master
Commit: ef7ba257f8517fafdd84fd61486df76bf1dee6d0
Parents: 83042cf
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Fri Feb 14 11:41:07 2014 +0100
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Fri Feb 14 13:43:57 2014 +0100
----------------------------------------------------------------------
.../shell/console/completer/ArgumentCompleter.java | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/ef7ba257/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
----------------------------------------------------------------------
diff --git a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
index ea6a5d4..26090b0 100644
--- a/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
+++ b/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
@@ -67,7 +67,6 @@ public class ArgumentCompleter implements Completer {
final Map<Option, Field> fields = new HashMap<Option, Field>();
final Map<String, Option> options = new HashMap<String, Option>();
final Map<Integer, Field> arguments = new HashMap<Integer, Field>();
- final Map<Field, org.apache.karaf.shell.commands.Completer> completerAnnotations = new HashMap<Field, org.apache.karaf.shell.commands.Completer>();
boolean strict = true;
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -98,12 +97,6 @@ public class ArgumentCompleter implements Completer {
arguments.put(key, field);
}
}
- if (option != null || argument != null) {
- org.apache.karaf.shell.commands.Completer completer = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
- if (completer != null) {
- completerAnnotations.put(field, completer);
- }
- }
}
}
options.put(HelpOption.HELP.name(), HelpOption.HELP);
@@ -115,11 +108,14 @@ public class ArgumentCompleter implements Completer {
Map<String, Completer> focl = ((CompletableFunction) function).getOptionalCompleters();
List<Completer> fcl = ((CompletableFunction) function).getCompleters();
if (focl == null && fcl == null) {
+ boolean multi = false;
for (int key = 0; key < arguments.size(); key++) {
Completer completer = null;
Field field = arguments.get(key);
if (field != null) {
- org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
+ Argument argument = field.getAnnotation(Argument.class);
+ multi = (argument != null && argument.multiValued());
+ org.apache.karaf.shell.commands.Completer ann = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
if (ann != null) {
Class clazz = ann.value();
String[] values = ann.values();
@@ -138,7 +134,7 @@ public class ArgumentCompleter implements Completer {
}
argsCompleters.add(completer);
}
- if (argsCompleters.isEmpty()) {
+ if (argsCompleters.isEmpty() || !multi) {
argsCompleters.add(NullCompleter.INSTANCE);
}
optionalCompleters = new HashMap<String, Completer>();
@@ -146,7 +142,7 @@ public class ArgumentCompleter implements Completer {
Completer completer = null;
Field field = fields.get(option);
if (field != null) {
- org.apache.karaf.shell.commands.Completer ann = completerAnnotations.get(field);
+ org.apache.karaf.shell.commands.Completer ann = field.getAnnotation(org.apache.karaf.shell.commands.Completer.class);
if (ann != null) {
Class clazz = ann.value();
String[] values = ann.values();