James Moger
2014-05-22 fd8cea4761b5382f23d06ed52608d1f556c4dbe5
src/main/java/com/gitblit/servlet/GitblitContext.java
@@ -38,15 +38,18 @@
import com.gitblit.Keys;
import com.gitblit.WebXmlSettings;
import com.gitblit.dagger.DaggerContext;
import com.gitblit.extensions.LifeCycleListener;
import com.gitblit.manager.IAuthenticationManager;
import com.gitblit.manager.IFederationManager;
import com.gitblit.manager.IGitblit;
import com.gitblit.manager.IManager;
import com.gitblit.manager.INotificationManager;
import com.gitblit.manager.IPluginManager;
import com.gitblit.manager.IProjectManager;
import com.gitblit.manager.IRepositoryManager;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.manager.IUserManager;
import com.gitblit.transport.ssh.IPublicKeyManager;
import com.gitblit.utils.ContainerUtils;
import com.gitblit.utils.StringUtils;
@@ -77,9 +80,7 @@
    * Construct a Gitblit WAR/Express context.
    */
   public GitblitContext() {
      this.goSettings = null;
      this.goBaseFolder = null;
      gitblit = this;
      this(null, null);
   }
   /**
@@ -149,7 +150,7 @@
         String contextRealPath = context.getRealPath("/");
         File contextFolder = (contextRealPath != null) ? new File(contextRealPath) : null;
         // if the base folder dosen't match the default assume they don't want to use express,
         // if the base folder dosen't match the default assume they don't want to use express,
         // this allows for other containers to customise the basefolder per context.
         String defaultBase = Constants.contextFolder$ + "/WEB-INF/data";
         String base = lookupBaseFolderFromJndi();
@@ -178,14 +179,28 @@
      startManager(injector, INotificationManager.class);
      startManager(injector, IUserManager.class);
      startManager(injector, IAuthenticationManager.class);
      startManager(injector, IPublicKeyManager.class);
      startManager(injector, IRepositoryManager.class);
      startManager(injector, IProjectManager.class);
      startManager(injector, IFederationManager.class);
      startManager(injector, IGitblit.class);
      // start the plugin manager last so that plugins can depend on
      // deterministic access to all other managers in their start() methods
      startManager(injector, IPluginManager.class);
      logger.info("");
      logger.info("All managers started.");
      logger.info("");
      IPluginManager pluginManager = injector.get(IPluginManager.class);
      for (LifeCycleListener listener : pluginManager.getExtensions(LifeCycleListener.class)) {
         try {
            listener.onStartup();
         } catch (Throwable t) {
            logger.error(null, t);
         }
      }
   }
   private String lookupBaseFolderFromJndi() {
@@ -220,6 +235,16 @@
   @Override
   protected void destroyContext(ServletContext context) {
      logger.info("Gitblit context destroyed by servlet container.");
      IPluginManager pluginManager = getManager(IPluginManager.class);
      for (LifeCycleListener listener : pluginManager.getExtensions(LifeCycleListener.class)) {
         try {
            listener.onShutdown();
         } catch (Throwable t) {
            logger.error(null, t);
         }
      }
      for (IManager manager : managers) {
         logger.debug("stopping {}", manager.getClass().getSimpleName());
         manager.stop();