From b2fec20f1f1081607b54b3e7dd20b12d03cef113 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 19:01:30 -0400 Subject: [PATCH] Improve plugin manager based on upstreamed contributions to pf4j --- src/main/java/com/gitblit/manager/IPluginManager.java | 103 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 92 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gitblit/manager/IPluginManager.java b/src/main/java/com/gitblit/manager/IPluginManager.java index 1f7f85e..33763aa 100644 --- a/src/main/java/com/gitblit/manager/IPluginManager.java +++ b/src/main/java/com/gitblit/manager/IPluginManager.java @@ -15,15 +15,74 @@ */ package com.gitblit.manager; +import java.io.IOException; import java.util.List; -import ro.fortsoft.pf4j.PluginManager; +import ro.fortsoft.pf4j.PluginState; import ro.fortsoft.pf4j.PluginWrapper; +import com.gitblit.models.PluginRegistry.InstallState; import com.gitblit.models.PluginRegistry.PluginRegistration; import com.gitblit.models.PluginRegistry.PluginRelease; -public interface IPluginManager extends IManager, PluginManager { +public interface IPluginManager extends IManager { + + /** + * Starts all plugins. + */ + void startPlugins(); + + /** + * Stops all plugins. + */ + void stopPlugins(); + + /** + * Starts the specified plugin. + * + * @param pluginId + * @return the state of the plugin + */ + PluginState startPlugin(String pluginId); + + /** + * Stops the specified plugin. + * + * @param pluginId + * @return the state of the plugin + */ + PluginState stopPlugin(String pluginId); + + /** + * Returns the list of extensions the plugin provides. + * + * @param type + * @return a list of extensions the plugin provides + */ + List<Class<?>> getExtensionClasses(String pluginId); + + /** + * Returns the list of extension instances for a given extension point. + * + * @param type + * @return a list of extension instances + */ + <T> List<T> getExtensions(Class<T> type); + + /** + * Returns the list of all resolved plugins. + * + * @return a list of resolved plugins + */ + List<PluginWrapper> getPlugins(); + + /** + * Retrieves the {@link PluginWrapper} for the specified plugin id. + * + * @param pluginId + * @return the plugin wrapper + */ + PluginWrapper getPlugin(String pluginId); /** * Retrieves the {@link PluginWrapper} that loaded the given class 'clazz'. @@ -34,12 +93,28 @@ PluginWrapper whichPlugin(Class<?> clazz); /** - * Delete the plugin represented by {@link PluginWrapper}. + * Disable the plugin represented by pluginId. * - * @param wrapper + * @param pluginId * @return true if successful */ - boolean deletePlugin(PluginWrapper wrapper); + boolean disablePlugin(String pluginId); + + /** + * Enable the plugin represented by pluginId. + * + * @param pluginId + * @return true if successful + */ + boolean enablePlugin(String pluginId); + + /** + * Delete the plugin represented by pluginId. + * + * @param pluginId + * @return true if successful + */ + boolean deletePlugin(String pluginId); /** * Refresh the plugin registry. @@ -48,13 +123,11 @@ /** * Install the plugin from the specified url. + * + * @param url + * @param verifyChecksum */ - boolean installPlugin(String url); - - /** - * Install the plugin. - */ - boolean installPlugin(PluginRelease pr); + boolean installPlugin(String url, boolean verifyChecksum) throws IOException; /** * The list of all registered plugins. @@ -64,6 +137,14 @@ List<PluginRegistration> getRegisteredPlugins(); /** + * Return a list of registered plugins that match the install state. + * + * @param state + * @return the list of plugins that match the install state + */ + List<PluginRegistration> getRegisteredPlugins(InstallState state); + + /** * Lookup a plugin registration from the plugin registries. * * @param idOrName -- Gitblit v1.9.1