public void injectExtensions() { // add extensions from classpath (non plugin) Set<String> extensionClassNames = pluginManager.getExtensionClassNames(null); for (String extensionClassName : extensionClassNames) { try { log.debug("Register extension '{}' as bean", extensionClassName); Class<?> extensionClass = getClass().getClassLoader().loadClass(extensionClassName); registerExtension(extensionClass); } catch (ClassNotFoundException e) { log.error(e.getMessage(), e); } } // add extensions for each started plugin List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins(); for (PluginWrapper plugin : startedPlugins) { log.debug("Registering extensions of the plugin '{}' as beans", plugin.getPluginId()); extensionClassNames = pluginManager.getExtensionClassNames(plugin.getPluginId()); for (String extensionClassName : extensionClassNames) { try { log.debug("Register extension '{}' as bean", extensionClassName); Class<?> extensionClass = plugin.getPluginClassLoader().loadClass(extensionClassName); registerExtension(extensionClass); } catch (ClassNotFoundException e) { log.error(e.getMessage(), e); } } } }
@Override public void destroy(Application application) { List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins(); Collections.reverse(startedPlugins); // stop plugins pluginManager.stopPlugins(); // destroy started plugins in reverse order for (PluginWrapper plugin : startedPlugins) { if (plugin.getPlugin() instanceof WicketPlugin) { ((WicketPlugin) plugin.getPlugin()).destroy(application); } } }
List<PluginWrapper> startedPlugins = pluginManager.getStartedPlugins(); for (PluginWrapper plugin : startedPlugins) { classResolver.add(new PluginClassResolver(plugin));