/** * Stop all active plugins. */ @Override public void stopPlugins() { // stop started plugins in reverse order Collections.reverse(startedPlugins); Iterator<PluginWrapper> itr = startedPlugins.iterator(); while (itr.hasNext()) { PluginWrapper pluginWrapper = itr.next(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STARTED == pluginState) { try { log.info("Stop plugin '{}'", getPluginLabel(pluginWrapper.getDescriptor())); pluginWrapper.getPlugin().stop(); pluginWrapper.setPluginState(PluginState.STOPPED); itr.remove(); 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; }
/** * Start all active plugins. */ @Override public void startPlugins() { for (PluginWrapper pluginWrapper : resolvedPlugins) { PluginState pluginState = pluginWrapper.getPluginState(); if ((PluginState.DISABLED != pluginState) && (PluginState.STARTED != pluginState)) { try { log.info("Start plugin '{}'", getPluginLabel(pluginWrapper.getDescriptor())); pluginWrapper.getPlugin().start(); pluginWrapper.setPluginState(PluginState.STARTED); startedPlugins.add(pluginWrapper); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (Exception e) { log.error(e.getMessage(), e); } } } }
log.info("Unload plugin '{}'", getPluginLabel(pluginWrapper.getDescriptor()));
@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; }
/** * Check if this plugin is valid (satisfies "requires" param) for a given system version. * * @param pluginWrapper the plugin to check * @return true if plugin satisfies the "requires" or if requires was left blank */ protected boolean isPluginValid(PluginWrapper pluginWrapper) { String requires = pluginWrapper.getDescriptor().getRequires().trim(); if (!isExactVersionAllowed() && requires.matches("^\\d+\\.\\d+\\.\\d+$")) { // If exact versions are not allowed in requires, rewrite to >= expression requires = ">=" + requires; } if (systemVersion.equals("0.0.0") || versionManager.checkVersionConstraint(systemVersion, requires)) { return true; } PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); log.warn("Plugin '{}' requires a minimum system version of {}, and you have {}", getPluginLabel(pluginDescriptor), pluginWrapper.getDescriptor().getRequires(), getSystemVersion()); return false; }
PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STOPPED == pluginState) { log.debug("Already stopped plugin '{}'", getPluginLabel(pluginDescriptor)); return PluginState.STOPPED; log.info("Stop plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().stop(); pluginWrapper.setPluginState(PluginState.STOPPED);
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; log.info("Start plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().start(); pluginWrapper.setPluginState(PluginState.STARTED);
log.info("Plugin '{}' resolved", getPluginLabel(pluginWrapper.getDescriptor()));
@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; }
/** * Stop all active plugins. */ @Override public void stopPlugins() { // stop started plugins in reverse order Collections.reverse(startedPlugins); Iterator<PluginWrapper> itr = startedPlugins.iterator(); while (itr.hasNext()) { PluginWrapper pluginWrapper = itr.next(); PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STARTED == pluginState) { try { log.info("Stop plugin '{}'", getPluginLabel(pluginWrapper.getDescriptor())); pluginWrapper.getPlugin().stop(); pluginWrapper.setPluginState(PluginState.STOPPED); itr.remove(); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (PluginException e) { log.error(e.getMessage(), e); } } } }
/** * Start all active plugins. */ @Override public void startPlugins() { for (PluginWrapper pluginWrapper : resolvedPlugins) { PluginState pluginState = pluginWrapper.getPluginState(); if ((PluginState.DISABLED != pluginState) && (PluginState.STARTED != pluginState)) { try { log.info("Start plugin '{}'", getPluginLabel(pluginWrapper.getDescriptor())); pluginWrapper.getPlugin().start(); pluginWrapper.setPluginState(PluginState.STARTED); startedPlugins.add(pluginWrapper); firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState)); } catch (Exception 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; }
log.info("Unload plugin '{}'", getPluginLabel(pluginWrapper.getDescriptor()));
/** * Check if this plugin is valid (satisfies "requires" param) for a given system version. * * @param pluginWrapper the plugin to check * @return true if plugin satisfies the "requires" or if requires was left blank */ protected boolean isPluginValid(PluginWrapper pluginWrapper) { String requires = pluginWrapper.getDescriptor().getRequires().trim(); if (!isExactVersionAllowed() && requires.matches("^\\d+\\.\\d+\\.\\d+$")) { // If exact versions are not allowed in requires, rewrite to >= expression requires = ">=" + requires; } if (systemVersion.equals("0.0.0") || versionManager.checkVersionConstraint(systemVersion, requires)) { return true; } PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor(); log.warn("Plugin '{}' requires a minimum system version of {}, and you have {}", getPluginLabel(pluginDescriptor), pluginWrapper.getDescriptor().getRequires(), getSystemVersion()); return false; }
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; log.info("Start plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().start(); pluginWrapper.setPluginState(PluginState.STARTED);
PluginState pluginState = pluginWrapper.getPluginState(); if (PluginState.STOPPED == pluginState) { log.debug("Already stopped plugin '{}'", getPluginLabel(pluginDescriptor)); return PluginState.STOPPED; log.info("Stop plugin '{}'", getPluginLabel(pluginDescriptor)); pluginWrapper.getPlugin().stop(); pluginWrapper.setPluginState(PluginState.STOPPED);
log.info("Plugin '{}' resolved", getPluginLabel(pluginWrapper.getDescriptor()));