@Override public boolean disablePlugin(String pluginId) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.DISABLED == pluginState) { log.debug("Already disabled plugin '{}'", getPluginLabel(pluginDescriptor)); return true; } if (PluginState.STOPPED == stopPlugin(pluginId)) { pluginWrapper.setPluginState(PluginState.DISABLED); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, PluginState.STOPPED)); if (!pluginStatusProvider.disablePlugin(pluginId)) { return false; } log.info("Disabled plugin '{}'", getPluginLabel(pluginDescriptor)); return true; } return false; }
protected void initialize() { plugins = new HashMap<>(); pluginClassLoaders = new HashMap<>(); unresolvedPlugins = new ArrayList<>(); resolvedPlugins = new ArrayList<>(); startedPlugins = new ArrayList<>(); pluginStateListeners = new ArrayList<>(); if (pluginsRoot == null) { pluginsRoot = createPluginsRoot(); } pluginRepository = createPluginRepository(); pluginFactory = createPluginFactory(); extensionFactory = createExtensionFactory(); pluginDescriptorFinder = createPluginDescriptorFinder(); extensionFinder = createExtensionFinder(); pluginStatusProvider = createPluginStatusProvider(); pluginLoader = createPluginLoader(); versionManager = createVersionManager(); dependencyResolver = new DependencyResolver(versionManager); }
@Override public boolean enablePlugin(String pluginId) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); if (!isPluginValid(pluginWrapper)) { log.warn("Plugin '{}' can not be enabled", getPluginLabel(pluginWrapper.getDescriptor())); return false; } PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.DISABLED != pluginState) { log.debug("Plugin '{}' is not disabled", getPluginLabel(pluginDescriptor)); return true; } if (!pluginStatusProvider.enablePlugin(pluginId)) { return false; } pluginWrapper.setPluginState(PluginState.CREATED); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); log.info("Enabled plugin '{}'", getPluginLabel(pluginDescriptor)); return true; }
checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STARTED == pluginState) { log.debug("Already started plugin '{}'", getPluginLabel(pluginDescriptor)); return PluginState.STARTED; log.warn("Cannot start an unresolved plugin '{}'", getPluginLabel(pluginDescriptor)); return pluginState; if (!enablePlugin(pluginId)) { return pluginState; startPlugin(dependency.getPluginId()); log.info("Start plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().start(); pluginWrapper.setPluginState(PluginState.STARTED); startedPlugins.add(pluginWrapper); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (PluginException e) { log.error(e.getMessage(), e);
@Override public boolean deletePlugin(String pluginId) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginState pluginState = stopPlugin(pluginId); if (PluginState.STARTED == pluginState) { log.error("Failed to stop plugin '{}' on delete", pluginId); return false; } if (!unloadPlugin(pluginId)) { log.error("Failed to unload plugin '{}' on delete", pluginId); return false; } try { pluginWrapper.getPlugin().delete(); } catch (PluginException e) { log.error(e.getMessage(), e); return false; } Path pluginPath = pluginWrapper.getPluginPath(); return pluginRepository.deletePluginPath(pluginPath); }
checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STARTED == pluginState) { log.debug("Already started plugin '{}'", getPluginLabel(pluginDescriptor)); return PluginState.STARTED; log.warn("Cannot start an unresolved plugin '{}'", getPluginLabel(pluginDescriptor)); return pluginState; if (!enablePlugin(pluginId)) { return pluginState; startPlugin(dependency.getPluginId()); log.info("Start plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().start(); pluginWrapper.setPluginState(PluginState.STARTED); startedPlugins.add(pluginWrapper); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (PluginException e) { log.error(e.getMessage(), e);
@Override public boolean enablePlugin(String pluginId) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); if (!isPluginValid(pluginWrapper)) { log.warn("Plugin '{}' can not be enabled", getPluginLabel(pluginWrapper.getDescriptor())); return false; } PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.DISABLED != pluginState) { log.debug("Plugin '{}' is not disabled", getPluginLabel(pluginDescriptor)); return true; } if (!pluginStatusProvider.enablePlugin(pluginId)) { return false; } pluginWrapper.setPluginState(PluginState.CREATED); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); log.info("Enabled plugin '{}'", getPluginLabel(pluginDescriptor)); return true; }
@Override public boolean deletePlugin(String pluginId) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginState pluginState = stopPlugin(pluginId); if (PluginState.STARTED == pluginState) { log.error("Failed to stop plugin '{}' on delete", pluginId); return false; } if (!unloadPlugin(pluginId)) { log.error("Failed to unload plugin '{}' on delete", pluginId); return false; } try { pluginWrapper.getPlugin().delete(); } catch (PluginException e) { log.error(e.getMessage(), e); return false; } Path pluginPath = pluginWrapper.getPluginPath(); return pluginRepository.deletePluginPath(pluginPath); }
protected void initialize() { plugins = new HashMap<>(); pluginClassLoaders = new HashMap<>(); unresolvedPlugins = new ArrayList<>(); resolvedPlugins = new ArrayList<>(); startedPlugins = new ArrayList<>(); pluginStateListeners = new ArrayList<>(); if (pluginsRoot == null) { pluginsRoot = createPluginsRoot(); } pluginRepository = createPluginRepository(); pluginFactory = createPluginFactory(); extensionFactory = createExtensionFactory(); pluginDescriptorFinder = createPluginDescriptorFinder(); extensionFinder = createExtensionFinder(); pluginStatusProvider = createPluginStatusProvider(); pluginLoader = createPluginLoader(); versionManager = createVersionManager(); dependencyResolver = new DependencyResolver(versionManager); }
private PluginState stopPlugin(String pluginId, boolean stopDependents) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STOPPED == pluginState) { log.debug("Already stopped plugin '{}'", getPluginLabel(pluginDescriptor)); return PluginState.STOPPED; while (!dependents.isEmpty()) { String dependent = dependents.remove(0); stopPlugin(dependent, false); dependents.addAll(0, dependencyResolver.getDependents(dependent)); log.info("Stop plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().stop(); pluginWrapper.setPluginState(PluginState.STOPPED); startedPlugins.remove(pluginWrapper); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (PluginException e) { log.error(e.getMessage(), e);
@Override public boolean disablePlugin(String pluginId) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.DISABLED == pluginState) { log.debug("Already disabled plugin '{}'", getPluginLabel(pluginDescriptor)); return true; } if (PluginState.STOPPED == stopPlugin(pluginId)) { pluginWrapper.setPluginState(PluginState.DISABLED); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, PluginState.STOPPED)); if (!pluginStatusProvider.disablePlugin(pluginId)) { return false; } log.info("Disabled plugin '{}'", getPluginLabel(pluginDescriptor)); return true; } return false; }
private PluginState stopPlugin(String pluginId, boolean stopDependents) { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STOPPED == pluginState) { log.debug("Already stopped plugin '{}'", getPluginLabel(pluginDescriptor)); return PluginState.STOPPED; while (!dependents.isEmpty()) { String dependent = dependents.remove(0); stopPlugin(dependent, false); dependents.addAll(0, dependencyResolver.getDependents(dependent)); log.info("Stop plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().stop(); pluginWrapper.setPluginState(PluginState.STOPPED); startedPlugins.remove(pluginWrapper); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (PluginException e) { log.error(e.getMessage(), e);