summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/manager/PluginManager.java
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/PluginManager.java
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/PluginManager.java')
-rw-r--r--src/main/java/com/gitblit/manager/PluginManager.java32
1 files changed, 27 insertions, 5 deletions
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;
+ }
}