@Override public void removedService(ServiceReference<Object> reference, List<Command> commands) { for (Command command : commands) { sessionFactory.getRegistry().unregister(command); } } }
private void register(final Function command) { log.debug("Registering command: {}", command); if (sessionFactory != null) { sessionFactory.getRegistry().register(command); } else { log.warn("Unable to register command, sessionFactory is null: {}", command); } }
@Override public void removedService(ServiceReference<Object> reference, List<Command> commands) { for (Command command : commands) { sessionFactory.getRegistry().unregister(command); } } }
@Override public void removedService(ServiceReference reference, Object service) { if (service instanceof org.apache.karaf.shell.api.console.Command) { sessionFactory.getRegistry().unregister(service); } if (service instanceof List) { List<org.apache.karaf.shell.api.console.Command> commands = (List<org.apache.karaf.shell.api.console.Command>) service; for (org.apache.karaf.shell.api.console.Command command : commands) { sessionFactory.getRegistry().unregister(command); } } context.ungetService(reference); } }
@Override public Set<String> getCommands() { return factory.getRegistry().getCommands().stream() .map(c -> c.getScope() + ":" + c.getName()) .collect(Collectors.toSet()); } @Override
@Override public Set<String> getCommands() { return factory.getRegistry().getCommands().stream() .map(c -> c.getScope() + ":" + c.getName()) .collect(Collectors.toSet()); } @Override
protected void discoverCommands(Session session, ClassLoader cl, String resource) throws IOException, ClassNotFoundException { Manager manager = new ManagerImpl(session.getRegistry(), session.getFactory().getRegistry(), true); Enumeration<URL> urls = cl.getResources(resource); while (urls.hasMoreElements()) { URL url = urls.nextElement(); BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream())); String line = r.readLine(); while (line != null) { line = line.trim(); if (line.length() > 0 && line.charAt(0) != '#') { final Class<?> actionClass = cl.loadClass(line); manager.register(actionClass); } line = r.readLine(); } r.close(); } }
protected void discoverCommands(Session session, ClassLoader cl, String resource) throws IOException, ClassNotFoundException { Manager manager = new ManagerImpl(session.getRegistry(), session.getFactory().getRegistry(), true); Enumeration<URL> urls = cl.getResources(resource); while (urls.hasMoreElements()) { URL url = urls.nextElement(); BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream())); String line = r.readLine(); while (line != null) { line = line.trim(); if (line.length() > 0 && line.charAt(0) != '#') { final Class<?> actionClass = cl.loadClass(line); manager.register(actionClass); } line = r.readLine(); } r.close(); } }
@Override public void add(final BeanEntry<Named, Action> beanEntry, final BundleContext bundleContext) throws Exception { Command command = beanEntry.getImplementationClass().getAnnotation(Command.class); if (command != null) { log.debug("Registering command: {}", beanEntry); sessionFactory.getRegistry().register(new BeanEntryCommand(beanLocator, beanEntry)); } else { log.warn("Missing @Command annotation on action: {}", beanEntry); } }
/** * Unregister a command. * * The session factory must be not null. * * @param command The command that should be unregistered. */ private void unregisterCommand(final ConsoleCommandExtension command) { final Registry registry = sessionFactory.getRegistry(); final CommandWrapper wrapperOld; wrapperOld = registeredCommands.get(command); if (wrapperOld != null) { try { registry.unregister(wrapperOld); } catch (final Exception ex) { logger.error("Cannot unregister command '{}'.", command.getCommand(), ex); } } }
@Override public void remove(final BeanEntry<Named, Action> beanEntry, final BundleContext bundleContext) throws Exception { Command command = beanEntry.getImplementationClass().getAnnotation(Command.class); if (command != null) { log.debug("Unregistering command: {}", beanEntry); sessionFactory.getRegistry().unregister(new BeanEntryCommand(beanLocator, beanEntry)); } } }
@Reference(cardinality = ReferenceCardinality.OPTIONAL, policy = ReferencePolicy.DYNAMIC) public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; manager = sessionFactory.getRegistry().getService(Manager.class); manager.register(CommandWrapper.class); registerCommands(); }
@Init public void init() { sessionFactory.getRegistry().getService(Manager.class).register(SshAction.class); }
@Destroy public void destroy() { sessionFactory.getRegistry().getService(Manager.class).register(SshAction.class); }
@Destroy public void destroy() { sessionFactory.getRegistry().getService(Manager.class).register(SshAction.class); }
@Init public void init() { sessionFactory.getRegistry().getService(Manager.class).register(SshAction.class); }
@Override protected void doStop() { if (sessionFactory != null) { sessionFactory.getRegistry().getService(Manager.class).unregister(SshAction.class); sessionFactory = null; } if (server != null) { try { server.stop(true); } catch (IOException e) { LOGGER.warn("Exception caught while stopping SSH server", e); } server = null; } super.doStop(); }
@Override protected void doStop() { if (sessionFactory != null) { sessionFactory.getRegistry().getService(Manager.class).unregister(SshAction.class); sessionFactory = null; } if (server != null) { try { server.stop(true); } catch (IOException e) { LOGGER.warn("Exception caught while stopping SSH server", e); } server = null; } super.doStop(); }
public HelpCommand(SessionFactory factory) { Registry registry = factory.getRegistry(); registry.register(this); registry.register(new SimpleHelpProvider()); registry.register(new ShellHelpProvider()); registry.register(new SingleCommandHelpProvider()); registry.register(new CommandsHelpProvider()); registry.register(new CommandListHelpProvider()); registry.register(new BundleHelpProvider()); }
public HelpCommand(SessionFactory factory) { Registry registry = factory.getRegistry(); registry.register(this); registry.register(new SimpleHelpProvider()); registry.register(new ShellHelpProvider()); registry.register(new SingleCommandHelpProvider()); registry.register(new CommandsHelpProvider()); registry.register(new CommandListHelpProvider()); registry.register(new BundleHelpProvider()); }