summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/manager
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-03-30 14:21:19 -0400
committerJames Moger <james.moger@gitblit.com>2014-04-10 19:00:52 -0400
commit413e9b486b1a84960d4c8ddac130e87280f64c6a (patch)
tree92468e43da3eb8125a5da9f5e39e1a7aee1dd9a8 /src/main/java/com/gitblit/manager
parenta9dc74e73eea068b8cbb5c96958abccae88b4abc (diff)
downloadgitblit-413e9b486b1a84960d4c8ddac130e87280f64c6a.tar.gz
gitblit-413e9b486b1a84960d4c8ddac130e87280f64c6a.zip
Split administration commands into a plugin, enhance plugin manager
Diffstat (limited to 'src/main/java/com/gitblit/manager')
-rw-r--r--src/main/java/com/gitblit/manager/GitblitManager.java52
-rw-r--r--src/main/java/com/gitblit/manager/IPluginManager.java23
-rw-r--r--src/main/java/com/gitblit/manager/PluginManager.java32
3 files changed, 90 insertions, 17 deletions
diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java
index 0001706c..6b1cc8a5 100644
--- a/src/main/java/com/gitblit/manager/GitblitManager.java
+++ b/src/main/java/com/gitblit/manager/GitblitManager.java
@@ -42,7 +42,9 @@ import org.eclipse.jgit.transport.RefSpec;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import ro.fortsoft.pf4j.PluginClassLoader;
import ro.fortsoft.pf4j.PluginWrapper;
+import ro.fortsoft.pf4j.RuntimeMode;
import com.gitblit.Constants;
import com.gitblit.Constants.AccessPermission;
@@ -1187,4 +1189,54 @@ public class GitblitManager implements IGitblit {
public PluginWrapper whichPlugin(Class<?> clazz) {
return pluginManager.whichPlugin(clazz);
}
+
+ @Override
+ public boolean deletePlugin(PluginWrapper wrapper) {
+ return pluginManager.deletePlugin(wrapper);
+ }
+
+ @Override
+ public List<PluginWrapper> getPlugins() {
+ return pluginManager.getPlugins();
+ }
+
+ @Override
+ public List<PluginWrapper> getResolvedPlugins() {
+ return pluginManager.getResolvedPlugins();
+ }
+
+ @Override
+ public List<PluginWrapper> getUnresolvedPlugins() {
+ return pluginManager.getUnresolvedPlugins();
+ }
+
+ @Override
+ public List<PluginWrapper> getStartedPlugins() {
+ return pluginManager.getStartedPlugins();
+ }
+
+ @Override
+ public void loadPlugins() {
+ pluginManager.loadPlugins();
+ }
+
+ @Override
+ public void startPlugins() {
+ pluginManager.startPlugins();
+ }
+
+ @Override
+ public void stopPlugins() {
+ pluginManager.stopPlugins();
+ }
+
+ @Override
+ public PluginClassLoader getPluginClassLoader(String pluginId) {
+ return pluginManager.getPluginClassLoader(pluginId);
+ }
+
+ @Override
+ public RuntimeMode getRuntimeMode() {
+ return pluginManager.getRuntimeMode();
+ }
}
diff --git a/src/main/java/com/gitblit/manager/IPluginManager.java b/src/main/java/com/gitblit/manager/IPluginManager.java
index 670e9769..11b81ea3 100644
--- a/src/main/java/com/gitblit/manager/IPluginManager.java
+++ b/src/main/java/com/gitblit/manager/IPluginManager.java
@@ -15,19 +15,10 @@
*/
package com.gitblit.manager;
-import java.util.List;
-
+import ro.fortsoft.pf4j.PluginManager;
import ro.fortsoft.pf4j.PluginWrapper;
-public interface IPluginManager extends IManager {
-
- /**
- * Retrieves the extension for given class 'clazz'.
- *
- * @param clazz extension point class to retrieve extension for
- * @return list of extensions
- */
- public <T> List<T> getExtensions(Class<T> clazz);
+public interface IPluginManager extends IManager, PluginManager {
/**
* Retrieves the {@link PluginWrapper} that loaded the given class 'clazz'.
@@ -35,5 +26,13 @@ public interface IPluginManager extends IManager {
* @param clazz extension point class to retrieve extension for
* @return PluginWrapper that loaded the given class
*/
- public PluginWrapper whichPlugin(Class<?> clazz);
+ PluginWrapper whichPlugin(Class<?> clazz);
+
+ /**
+ * Delete the plugin represented by {@link PluginWrapper}.
+ *
+ * @param wrapper
+ * @return true if successful
+ */
+ boolean deletePlugin(PluginWrapper wrapper);
}
diff --git a/src/main/java/com/gitblit/manager/PluginManager.java b/src/main/java/com/gitblit/manager/PluginManager.java
index 5eb00e92..e23aaec0 100644
--- a/src/main/java/com/gitblit/manager/PluginManager.java
+++ b/src/main/java/com/gitblit/manager/PluginManager.java
@@ -15,12 +15,16 @@
*/
package com.gitblit.manager;
+import java.io.File;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ro.fortsoft.pf4j.DefaultPluginManager;
+import ro.fortsoft.pf4j.PluginWrapper;
import com.gitblit.Keys;
+import com.gitblit.utils.FileUtils;
/**
* The plugin manager maintains the lifecycle of plugins. It is exposed as
@@ -30,27 +34,45 @@ import com.gitblit.Keys;
* @author David Ostrovsky
*
*/
-public class PluginManager extends DefaultPluginManager implements
- IPluginManager {
+public class PluginManager extends DefaultPluginManager implements IPluginManager {
private final Logger logger = LoggerFactory.getLogger(getClass());
+
+ private final IRuntimeManager runtimeManager;
public PluginManager(IRuntimeManager runtimeManager) {
- super(runtimeManager.getFileOrFolder(Keys.plugins.folder,
- "${baseFolder}/plugins"));
+ super(runtimeManager.getFileOrFolder(Keys.plugins.folder, "${baseFolder}/plugins"));
+ this.runtimeManager = runtimeManager;
}
@Override
public PluginManager start() {
- logger.info("Plugin manager started");
+ logger.info("Loading plugins...");
loadPlugins();
+ logger.info("Starting loaded plugins...");
startPlugins();
return this;
}
@Override
public PluginManager stop() {
+ logger.info("Stopping loaded plugins...");
stopPlugins();
return null;
}
+
+ @Override
+ public boolean deletePlugin(PluginWrapper pw) {
+ File folder = runtimeManager.getFileOrFolder(Keys.plugins.folder, "${baseFolder}/plugins");
+ File pluginFolder = new File(folder, pw.getPluginPath());
+ File pluginZip = new File(folder, pw.getPluginPath() + ".zip");
+
+ if (pluginFolder.exists()) {
+ FileUtils.delete(pluginFolder);
+ }
+ if (pluginZip.exists()) {
+ FileUtils.delete(pluginZip);
+ }
+ return true;
+ }
}