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