Author: gnodet
Date: Sat Sep 18 03:54:57 2010
New Revision: 998396
URL: http://svn.apache.org/viewvc?rev=998396&view=rev
Log:
Add an automatic enum completer
Modified:
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/StringsCompleter.java
Modified:
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java?rev=998396&r1=998395&r2=998396&view=diff
==============================================================================
---
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
(original)
+++
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/ArgumentCompleter.java
Sat Sep 18 03:54:57 2010
@@ -30,9 +30,12 @@ import java.lang.reflect.InvocationTarge
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.EnumSet;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.felix.gogo.commands.Action;
import org.apache.felix.gogo.commands.Argument;
@@ -156,7 +159,13 @@ public class ArgumentCompleter implement
if (type.isAssignableFrom(File.class)) {
argCompleter = new FileCompleter(session);
} else if (type.isAssignableFrom(Boolean.class) ||
type.isAssignableFrom(boolean.class)) {
- argCompleter = new StringsCompleter(new String[]
{"false", "true"});
+ argCompleter = new StringsCompleter(new String[]
{"false", "true"}, false);
+ } else if (type.isAssignableFrom(Enum.class)) {
+ Set<String> values = new HashSet<String>();
+ for (Object o : EnumSet.allOf((Class<Enum>) type)) {
+ values.add(o.toString());
+ }
+ argCompleter = new StringsCompleter(values, false);
} else {
// TODO any other completers we can add?
}
Modified:
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/StringsCompleter.java
URL:
http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/StringsCompleter.java?rev=998396&r1=998395&r2=998396&view=diff
==============================================================================
---
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/StringsCompleter.java
(original)
+++
karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/StringsCompleter.java
Sat Sep 18 03:54:57 2010
@@ -35,12 +35,30 @@ public class StringsCompleter
implements Completer
{
private final SortedSet<String> strings = new TreeSet<String>();
+ private final boolean caseSensitive;
+
+ public StringsCompleter() {
+ this(true);
+ }
- public StringsCompleter() {}
+
+ public StringsCompleter(final boolean caseSensitive) {
+ this.caseSensitive = caseSensitive;
+ }
public StringsCompleter(final Collection<String> strings) {
+ this();
assert strings != null;
+ getStrings().addAll(strings);
+ }
+
+ public StringsCompleter(final String[] strings, boolean caseSensitive) {
+ this(Arrays.asList(strings), caseSensitive);
+ }
+ public StringsCompleter(final Collection<String> strings, boolean
caseSensitive) {
+ this(caseSensitive);
+ assert strings != null;
getStrings().addAll(strings);
}
@@ -59,11 +77,15 @@ public class StringsCompleter
if (buffer == null) {
buffer = "";
}
+ if (!caseSensitive) {
+ buffer = buffer.toLowerCase();
+ }
SortedSet<String> matches = strings.tailSet(buffer);
for (String match : matches) {
- if (!match.startsWith(buffer)) {
+ String s = caseSensitive ? match : match.toLowerCase();
+ if (!s.startsWith(buffer)) {
break;
}