You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by js...@apache.org on 2010/09/16 12:08:22 UTC
svn commit: r997677 - in /karaf/trunk/shell/console/src:
main/java/org/apache/karaf/shell/console/completer/
test/java/org/apache/karaf/shell/console/completer/
Author: jstrachan
Date: Thu Sep 16 10:08:22 2010
New Revision: 997677
URL: http://svn.apache.org/viewvc?rev=997677&view=rev
Log:
Another fix for KARAF-208 so that in single scope mode we do not list all commands twice, one with a scope prefix and one without
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/CommandsCompleter.java
karaf/trunk/shell/console/src/test/java/org/apache/karaf/shell/console/completer/ArgumentCompleterTest.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=997677&r1=997676&r2=997677&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 Thu Sep 16 10:08:22 2010
@@ -35,6 +35,8 @@ import org.apache.felix.gogo.commands.ba
import org.apache.felix.gogo.commands.basic.DefaultActionPreparator;
import org.apache.karaf.shell.console.CompletableFunction;
import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.console.NameScoping;
+import org.osgi.service.command.CommandSession;
public class ArgumentCompleter implements Completer {
final Completer commandCompleter;
@@ -45,10 +47,10 @@ public class ArgumentCompleter implement
final Map<String, Option> options = new HashMap<String, Option>();
boolean strict = true;
- public ArgumentCompleter(AbstractCommand function, String command) {
+ public ArgumentCompleter(CommandSession session, AbstractCommand function, String command) {
this.function = function;
// Command name completer
- commandCompleter = new StringsCompleter(getNames(command));
+ commandCompleter = new StringsCompleter(getNames(session, command));
// Build options completer
for (Class type = function.getActionClass(); type != null; type = type.getSuperclass()) {
for (Field field : type.getDeclaredFields()) {
@@ -83,9 +85,14 @@ public class ArgumentCompleter implement
}
}
- private String[] getNames(String command) {
+ private String[] getNames(CommandSession session, String scopedCommand) {
+ String command = NameScoping.getCommandNameWithoutGlobalPrefix(session, scopedCommand);
String[] s = command.split(":");
- return new String[] { command, s[1] };
+ if (s.length == 1) {
+ return s;
+ } else {
+ return new String[] { command, s[1] };
+ }
}
/**
Modified: karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java?rev=997677&r1=997676&r2=997677&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java (original)
+++ karaf/trunk/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java Thu Sep 16 10:08:22 2010
@@ -66,7 +66,7 @@ public class CommandsCompleter implement
Function function = (Function) session.get(command);
function = unProxy(function);
if (function instanceof AbstractCommand) {
- completers.add(new ArgumentCompleter((AbstractCommand) function, command));
+ completers.add(new ArgumentCompleter(session, (AbstractCommand) function, command));
}
commands.add(command);
}
Modified: karaf/trunk/shell/console/src/test/java/org/apache/karaf/shell/console/completer/ArgumentCompleterTest.java
URL: http://svn.apache.org/viewvc/karaf/trunk/shell/console/src/test/java/org/apache/karaf/shell/console/completer/ArgumentCompleterTest.java?rev=997677&r1=997676&r2=997677&view=diff
==============================================================================
--- karaf/trunk/shell/console/src/test/java/org/apache/karaf/shell/console/completer/ArgumentCompleterTest.java (original)
+++ karaf/trunk/shell/console/src/test/java/org/apache/karaf/shell/console/completer/ArgumentCompleterTest.java Thu Sep 16 10:08:22 2010
@@ -16,14 +16,16 @@
*/
package org.apache.karaf.shell.console.completer;
+import java.io.InputStream;
+import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
import org.apache.felix.gogo.commands.Action;
import org.apache.felix.gogo.commands.Option;
import org.apache.felix.gogo.commands.basic.SimpleCommand;
+import org.apache.felix.gogo.runtime.shell.CommandSessionImpl;
import org.apache.karaf.shell.console.CompletableFunction;
import org.apache.karaf.shell.console.Completer;
import org.junit.Test;
@@ -85,7 +87,8 @@ public class ArgumentCompleterTest {
@Test
public void testCompleteOptions() throws Exception {
- Completer comp = new ArgumentCompleter(new MyFunction(), "my:action");
+ CommandSession session = new DummyCommandSession();
+ Completer comp = new ArgumentCompleter(session, new MyFunction(), "my:action");
assertEquals(Arrays.asList("--check", "--foo", "--help", "-c", "-f"), complete(comp, "action -"));
assertEquals(Arrays.asList(), complete(comp, "action --foo "));
assertEquals(Arrays.asList("action "), complete(comp, "acti"));
@@ -127,4 +130,29 @@ public class ArgumentCompleterTest {
}
}
+ protected static class DummyCommandSession implements CommandSession {
+ public Object convert(Class<?> type, Object instance) {
+ return null;
+ }
+ public CharSequence format(Object target, int level) {
+ return null;
+ }
+ public void put(String name, Object value) {
+ }
+ public Object get(String name) {
+ return null;
+ }
+ public PrintStream getConsole() {
+ return null;
+ }
+ public InputStream getKeyboard() {
+ return null;
+ }
+ public void close() {
+ }
+ public Object execute(CharSequence commandline) throws Exception {
+ return null;
+ }
+ }
+
}