/** * Get model for showing plugin configuration * * @param configuration current plugin configuration * @return ModelAndView */ private ModelAndView getModel(PluginConfiguration configuration) { Map<String, String> labels = new HashMap<>(); List<Plugin> plugins = pluginLoader.getPlugins(new NameFilter(configuration.getName())); if (!plugins.isEmpty()) { Plugin plugin = plugins.get(0); if (plugin != null) { labels = translatePropertiesLabels(configuration.getProperties(), plugin); } } return new ModelAndView("plugin/pluginConfiguration") .addObject("pluginConfiguration", configuration) .addObject("labelsTranslation", labels); }
public static PluginConfiguration getDefaultPluginConfiguration() { PluginConfiguration configuration = new PluginConfiguration("Default name", true, Collections.<PluginProperty>emptyList()); persist(configuration); return configuration; }
/** * Get plugin id by plugin name * * @param pluginName plugin name * @return plugin id * @throws NotFoundException if plugin with specified name not found */ private long getPluginId(String pluginName) throws NotFoundException { return getDao().get(pluginName).getId(); }
private void loadConfigurationFor(List<Plugin> plugins) { for (Plugin plugin : plugins) { String name = plugin.getName(); PluginConfiguration configuration; try { configuration = pluginConfigurationDao.get(name); if (configuration.getProperties().isEmpty()) { // Wee can't use #setProperties method. It will lead to exception configuration.getProperties().addAll(plugin.getDefaultConfiguration()); } } catch (NotFoundException e) { configuration = new PluginConfiguration(name, false, plugin.getDefaultConfiguration()); pluginConfigurationDao.saveOrUpdate(configuration); } try { plugin.configure(configuration); } catch (UnexpectedErrorException e) { LOGGER.error("Can't configure plugin during loading. Plugin name = " + plugin.getName()); } } }
/** * {@inheritDoc} */ @Override public void configure(PluginConfiguration configuration) throws UnexpectedErrorException { try { this.applyConfiguration(configuration.getProperties()); if (configuration.isActive()){ state = State.ENABLED; LOGGER.trace("Plugin {} is configured and activated", this.getName()); } else { state = State.CONFIGURED; LOGGER.trace("Plugin {} is configured", this.getName()); } } catch (PluginConfigurationException | RuntimeException e) { state = State.IN_ERROR; LOGGER.warn("Plugin {} configuration failed", this.getName(), e); throw new UnexpectedErrorException(e); } }
private void saveNewPluginConfiguration(PluginConfiguration newPluginConfiguration) { List<PluginProperty> properties = newPluginConfiguration.getProperties(); for (PluginProperty property : properties) { property.setPluginConfiguration(newPluginConfiguration); } this.getDao().updateProperties(newPluginConfiguration.getProperties()); }
/** * Update the configuration of plugin * * @param newConfiguration new configuration for plugin * @return redirect to the page of plugin configuration * @throws NotFoundException if configured plugin wasn't found */ @RequestMapping(value = "/configure/{name}", method = RequestMethod.POST) public ModelAndView updateConfiguration(Model model, @ModelAttribute PluginConfiguration newConfiguration) throws NotFoundException { long componentId = getForumComponentId(); try { pluginService.updateConfiguration(newConfiguration, componentId); } catch (UnexpectedErrorException ex) { model.addAttribute("error", ex.getCause().getLocalizedMessage()); model.addAttribute("errorInformation", ExceptionUtils.getFullStackTrace(ex.getCause())); model.addAttribute("pluginConfiguration", newConfiguration); return getModel(newConfiguration); } return new ModelAndView("redirect:/plugins/configure/" + newConfiguration.getName()); }
/** * {@inheritDoc} */ @Override @PreAuthorize("hasPermission(#forumComponentId, 'COMPONENT', 'GeneralPermission.ADMIN')") public void updatePluginActivating(PluginActivatingDto updatedPlugin, long forumComponentId) throws NotFoundException { PluginConfigurationDao pluginConfigurationDao = getDao(); String pluginName = updatedPlugin.getPluginName(); PluginConfiguration configuration = pluginConfigurationDao.get(pluginName); boolean isActivated = updatedPlugin.isActivated(); LOGGER.debug("Plugin activation for {} will be changed to {}.", pluginName, isActivated); configuration.setActive(isActivated); pluginConfigurationDao.saveOrUpdate(configuration); pLuginLoader.reloadPlugins(new NameFilter(updatedPlugin.getPluginName())); } }
/** * {@inheritDoc} */ @Override public void saveOrUpdate(PluginConfiguration entity) { for (PluginProperty property: entity.getProperties()) { property.setPluginConfiguration(entity); } super.saveOrUpdate(entity); }
@Override public Plugin getPluginById(String pluginId, PluginFilter... filters) throws NotFoundException { PluginConfiguration conf = getDao().get(Long.valueOf(pluginId)); Plugin plugin = findPluginByName(pLuginLoader.getPlugins(filters), conf.getName()); if (plugin == null) { throw new NotFoundException("Plugin with Id '" + pluginId + "' not found."); } return plugin; }
/** * {@inheritDoc} */ @Override @PreAuthorize("hasPermission(#forumComponentId, 'COMPONENT', 'GeneralPermission.ADMIN')") public void updateConfiguration(PluginConfiguration pluginConfiguration, long forumComponentId) throws NotFoundException, UnexpectedErrorException { String name = pluginConfiguration.getName(); List<Plugin> pluginsList = pLuginLoader.getPlugins(); Plugin willBeConfigured = findPluginByName(pluginsList, name); if (willBeConfigured == null) { throw new NotFoundException("Plugin " + name + " is not loaded"); } willBeConfigured.configure(pluginConfiguration); try { saveNewPluginConfiguration(pluginConfiguration); } catch (RuntimeException ex) { throw new UnexpectedErrorException(ex); } }
public static PluginProperty getDefaultPluginConfigurationProperty() { PluginProperty property = new PluginProperty("Property", PluginProperty.Type.BOOLEAN, "true"); PluginConfiguration configuration = new PluginConfiguration("Default name", true, Arrays.asList(property)); property.setPluginConfiguration(configuration); persist(configuration); return property; }