James Moger
2014-03-30 413e9b486b1a84960d4c8ddac130e87280f64c6a
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 @@
 * @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;
   }
}