From 1b34b05f5b8d2d0fd51819b286e22d7ddd27cb27 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 03 Jul 2014 16:20:37 -0400 Subject: [PATCH] Embrace @Inject for Managers, Servlets, and Filters --- src/main/java/com/gitblit/DaggerModule.java | 175 +++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 112 insertions(+), 63 deletions(-) diff --git a/src/main/java/com/gitblit/DaggerModule.java b/src/main/java/com/gitblit/DaggerModule.java index 7ee8ecd..662ca03 100644 --- a/src/main/java/com/gitblit/DaggerModule.java +++ b/src/main/java/com/gitblit/DaggerModule.java @@ -17,17 +17,48 @@ import javax.inject.Singleton; -import org.apache.wicket.protocol.http.WebApplication; - -import com.gitblit.git.GitServlet; +import com.gitblit.manager.AuthenticationManager; +import com.gitblit.manager.FederationManager; +import com.gitblit.manager.IAuthenticationManager; import com.gitblit.manager.IFederationManager; -import com.gitblit.manager.IGitblitManager; +import com.gitblit.manager.IGitblit; 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.ISessionManager; 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.UserManager; +import com.gitblit.servlet.BranchGraphServlet; +import com.gitblit.servlet.DownloadZipFilter; +import com.gitblit.servlet.DownloadZipServlet; +import com.gitblit.servlet.EnforceAuthenticationFilter; +import com.gitblit.servlet.FederationServlet; +import com.gitblit.servlet.GitFilter; +import com.gitblit.servlet.GitServlet; +import com.gitblit.servlet.LogoServlet; +import com.gitblit.servlet.PagesFilter; +import com.gitblit.servlet.PagesServlet; +import com.gitblit.servlet.ProxyFilter; +import com.gitblit.servlet.PtServlet; +import com.gitblit.servlet.RawFilter; +import com.gitblit.servlet.RawServlet; +import com.gitblit.servlet.RobotsTxtServlet; +import com.gitblit.servlet.RpcFilter; +import com.gitblit.servlet.RpcServlet; +import com.gitblit.servlet.SparkleShareInviteServlet; +import com.gitblit.servlet.SyndicationFilter; +import com.gitblit.servlet.SyndicationServlet; +import com.gitblit.transport.ssh.FileKeyManager; +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.wicket.GitBlitWebApp; import com.gitblit.wicket.GitblitWicketFilter; @@ -42,19 +73,30 @@ */ @Module( injects = { + IStoredSettings.class, + // core managers IRuntimeManager.class, + IPluginManager.class, INotificationManager.class, IUserManager.class, - ISessionManager.class, + IAuthenticationManager.class, + IPublicKeyManager.class, IRepositoryManager.class, IProjectManager.class, - IGitblitManager.class, IFederationManager.class, + + // the monolithic manager + IGitblit.class, + + // the Gitblit Wicket app + GitBlitWebApp.class, // filters & servlets GitServlet.class, GitFilter.class, + RawServlet.class, + RawFilter.class, PagesServlet.class, PagesFilter.class, RpcServlet.class, @@ -68,69 +110,76 @@ BranchGraphServlet.class, RobotsTxtServlet.class, LogoServlet.class, + PtServlet.class, + ProxyFilter.class, EnforceAuthenticationFilter.class, GitblitWicketFilter.class - } + } ) public class DaggerModule { - final GitBlit gitblit; - - // HACK but necessary for now - public DaggerModule(GitBlit gitblit) { - this.gitblit = gitblit; + @Provides @Singleton IStoredSettings provideSettings() { + return new FileSettings(); } - @Provides @Singleton IRuntimeManager provideRuntimeManager() { + @Provides @Singleton IRuntimeManager provideRuntimeManager(RuntimeManager manager) { + return manager; + } + + @Provides @Singleton IPluginManager providePluginManager(PluginManager manager) { + return manager; + } + + @Provides @Singleton INotificationManager provideNotificationManager(NotificationManager manager) { + return manager; + } + + @Provides @Singleton IUserManager provideUserManager(UserManager manager) { + return manager; + } + + @Provides @Singleton IAuthenticationManager provideAuthenticationManager(AuthenticationManager manager) { + return manager; + } + + @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; + } + } + + @Provides @Singleton IRepositoryManager provideRepositoryManager(RepositoryManager manager) { + return manager; + } + + @Provides @Singleton IProjectManager provideProjectManager(ProjectManager manager) { + return manager; + } + + @Provides @Singleton IFederationManager provideFederationManager(FederationManager manager) { + return manager; + } + + @Provides @Singleton IGitblit provideGitblit(GitBlit gitblit) { return gitblit; - } - - @Provides @Singleton INotificationManager provideNotificationManager() { - return gitblit; - } - - @Provides @Singleton IUserManager provideUserManager() { - return gitblit; - } - - @Provides @Singleton ISessionManager provideSessionManager() { - return gitblit; - } - - @Provides @Singleton IRepositoryManager provideRepositoryManager() { - return gitblit; - } - - @Provides @Singleton IProjectManager provideProjectManager() { - return gitblit; - } - - @Provides @Singleton IGitblitManager provideGitblitManager() { - return gitblit; - } - - @Provides @Singleton IFederationManager provideFederationManager() { - return gitblit; - } - - @Provides @Singleton WebApplication provideWebApplication( - IRuntimeManager runtimeManager, - INotificationManager notificationManager, - IUserManager userManager, - ISessionManager sessionManager, - IRepositoryManager repositoryManager, - IProjectManager projectManager, - IGitblitManager gitblitManager, - IFederationManager federationManager) { - - return new GitBlitWebApp( - runtimeManager, - notificationManager, - userManager, - sessionManager, - repositoryManager, - projectManager, - gitblitManager, - federationManager); } } \ No newline at end of file -- Gitblit v1.9.1