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;
+        }
+    }
+
 }