You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2011/05/28 15:35:17 UTC

svn commit: r1128644 - /karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java

Author: jbonofre
Date: Sat May 28 13:35:17 2011
New Revision: 1128644

URL: http://svn.apache.org/viewvc?rev=1128644&view=rev
Log:
[KARAF-445] Add console aliases completer.

Modified:
    karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java

Modified: karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java?rev=1128644&r1=1128643&r2=1128644&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java (original)
+++ karaf/branches/karaf-2.2.x/shell/console/src/main/java/org/apache/karaf/shell/console/completer/CommandsCompleter.java Sat May 28 13:35:17 2011
@@ -26,6 +26,7 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.felix.gogo.commands.basic.AbstractCommand;
+import org.apache.felix.gogo.runtime.Closure;
 import org.apache.felix.gogo.runtime.CommandProxy;
 import org.apache.felix.gogo.runtime.CommandSessionImpl;
 import org.apache.felix.service.command.CommandSession;
@@ -64,6 +65,12 @@ public class CommandsCompleter implement
         if (!names.equals(commands)) {
             commands.clear();
             completers.clear();
+
+            // get command aliases
+            Set<String> aliases = this.getAliases();
+            completers.add(new StringsCompleter(aliases));
+
+            // add argument completers for each command
             for (String command : names) {
                 Function function = (Function) session.get(command);
                 function = unProxy(function);
@@ -75,6 +82,23 @@ public class CommandsCompleter implement
         }
     }
 
+    /**
+     * Get the aliases defined in the console session.
+     *
+     * @return the aliases set
+     */
+    private Set<String> getAliases() {
+        Set<String> vars = (Set<String>) session.get(null);
+        Set<String> aliases = new HashSet<String>();
+        for (String var : vars) {
+            Object content = session.get(var);
+            if (content instanceof Closure)  {
+                aliases.add(var);
+            }
+        }
+        return aliases;
+    }
+
     protected Function unProxy(Function function) {
         try {
             if (function instanceof CommandProxy) {