Author: gnodet
Date: Wed Jun 13 07:08:20 2012
New Revision: 1349659

URL: http://svn.apache.org/viewvc?rev=1349659&view=rev
Log:
[KARAF-1162] A command that can not be loaded breaks the whole completion

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=1349659&r1=1349658&r2=1349659&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
 Wed Jun 13 07:08:20 2012
@@ -31,11 +31,12 @@ import org.apache.felix.gogo.runtime.Com
 import org.apache.felix.gogo.runtime.CommandSessionImpl;
 import org.apache.felix.service.command.CommandSession;
 import org.apache.felix.service.command.Function;
-import org.apache.karaf.shell.console.CompletableFunction;
 import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.console.jline.CommandSessionHolder;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.ServiceReference;
-import org.apache.karaf.shell.console.jline.CommandSessionHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Like the {@link org.apache.karaf.shell.console.completer.CommandsCompleter} 
but does not use OSGi but is
@@ -43,6 +44,8 @@ import org.apache.karaf.shell.console.jl
  */
 public class CommandsCompleter implements Completer {
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(CommandsCompleter.class);
+
     private CommandSession session;
     private final List<Completer> completers = new ArrayList<Completer>();
     private final Set<String> commands = new HashSet<String>();
@@ -83,7 +86,11 @@ public class CommandsCompleter implement
                 Function function = (Function) session.get(command);
                 function = unProxy(function);
                 if (function instanceof AbstractCommand) {
-                    completers.add(new ArgumentCompleter(session, 
(AbstractCommand) function, command));
+                    try {
+                        completers.add(new ArgumentCompleter(session, 
(AbstractCommand) function, command));
+                    } catch (Throwable t) {
+                        LOGGER.debug("Unable to create completers for command 
'" + command + "'", t);
+                    }
                 }
                 commands.add(command);
             }


Reply via email to