James Moger
2015-09-18 a592329a82d0a85d33abcc63f08df20b79e8e4f7
src/main/java/com/gitblit/guice/CoreModule.java
@@ -15,12 +15,9 @@
 */
package com.gitblit.guice;
import javax.inject.Singleton;
import com.gitblit.FileSettings;
import com.gitblit.GitBlit;
import com.gitblit.IStoredSettings;
import com.gitblit.Keys;
import com.gitblit.manager.AuthenticationManager;
import com.gitblit.manager.FederationManager;
import com.gitblit.manager.IAuthenticationManager;
@@ -31,20 +28,21 @@
import com.gitblit.manager.IProjectManager;
import com.gitblit.manager.IRepositoryManager;
import com.gitblit.manager.IRuntimeManager;
import com.gitblit.manager.IServicesManager;
import com.gitblit.manager.IUserManager;
import com.gitblit.manager.NotificationManager;
import com.gitblit.manager.PluginManager;
import com.gitblit.manager.ProjectManager;
import com.gitblit.manager.RepositoryManager;
import com.gitblit.manager.RuntimeManager;
import com.gitblit.manager.ServicesManager;
import com.gitblit.manager.UserManager;
import com.gitblit.transport.ssh.FileKeyManager;
import com.gitblit.tickets.ITicketService;
import com.gitblit.transport.ssh.IPublicKeyManager;
import com.gitblit.transport.ssh.MemoryKeyManager;
import com.gitblit.transport.ssh.NullKeyManager;
import com.gitblit.utils.StringUtils;
import com.gitblit.utils.JSoupXssFilter;
import com.gitblit.utils.WorkQueue;
import com.gitblit.utils.XssFilter;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
/**
 * CoreModule references all the core business objects.
@@ -58,43 +56,27 @@
   protected void configure() {
      bind(IStoredSettings.class).toInstance(new FileSettings());
      bind(XssFilter.class).to(JSoupXssFilter.class);
      // bind complex providers
      bind(IPublicKeyManager.class).toProvider(IPublicKeyManagerProvider.class);
      bind(ITicketService.class).toProvider(ITicketServiceProvider.class);
      bind(WorkQueue.class).toProvider(WorkQueueProvider.class);
      // core managers
      bind(IRuntimeManager.class).to(RuntimeManager.class).in(Singleton.class);
      bind(IPluginManager.class).to(PluginManager.class).in(Singleton.class);
      bind(INotificationManager.class).to(NotificationManager.class).in(Singleton.class);
      bind(IUserManager.class).to(UserManager.class).in(Singleton.class);
      bind(IAuthenticationManager.class).to(AuthenticationManager.class).in(Singleton.class);
      bind(IRepositoryManager.class).to(RepositoryManager.class).in(Singleton.class);
      bind(IProjectManager.class).to(ProjectManager.class).in(Singleton.class);
      bind(IFederationManager.class).to(FederationManager.class).in(Singleton.class);
      bind(IRuntimeManager.class).to(RuntimeManager.class);
      bind(IPluginManager.class).to(PluginManager.class);
      bind(INotificationManager.class).to(NotificationManager.class);
      bind(IUserManager.class).to(UserManager.class);
      bind(IAuthenticationManager.class).to(AuthenticationManager.class);
      bind(IRepositoryManager.class).to(RepositoryManager.class);
      bind(IProjectManager.class).to(ProjectManager.class);
      bind(IFederationManager.class).to(FederationManager.class);
      // the monolithic manager
      bind(IGitblit.class).to(GitBlit.class).in(Singleton.class);
   }
      bind(IGitblit.class).to(GitBlit.class);
   @Provides
   @Singleton
   IPublicKeyManager providePublicKeyManager(IStoredSettings settings, IRuntimeManager runtimeManager) {
      String clazz = settings.getString(Keys.git.sshKeysManager, FileKeyManager.class.getName());
      if (StringUtils.isEmpty(clazz)) {
         clazz = FileKeyManager.class.getName();
      }
      if (FileKeyManager.class.getName().equals(clazz)) {
         return new FileKeyManager(runtimeManager);
      } else if (NullKeyManager.class.getName().equals(clazz)) {
         return new NullKeyManager();
      } else if (MemoryKeyManager.class.getName().equals(clazz)) {
         return new MemoryKeyManager();
      } else {
         try {
            Class<?> mgrClass = Class.forName(clazz);
            return (IPublicKeyManager) mgrClass.newInstance();
         } catch (Exception e) {
         }
         return null;
      }
      // manager for long-running daemons and services
      bind(IServicesManager.class).to(ServicesManager.class);
   }
}