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 | 172 ++++++++++++++++++++++----------------------------------- 1 files changed, 67 insertions(+), 105 deletions(-) diff --git a/src/main/java/com/gitblit/DaggerModule.java b/src/main/java/com/gitblit/DaggerModule.java index 1fad779..662ca03 100644 --- a/src/main/java/com/gitblit/DaggerModule.java +++ b/src/main/java/com/gitblit/DaggerModule.java @@ -17,26 +17,22 @@ 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.GitblitManager; +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.IServicesManager; -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.ServicesManager; -import com.gitblit.manager.SessionManager; import com.gitblit.manager.UserManager; import com.gitblit.servlet.BranchGraphServlet; import com.gitblit.servlet.DownloadZipFilter; @@ -44,15 +40,25 @@ 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; @@ -66,27 +72,31 @@ * */ @Module( - library = true, 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, - IServicesManager.class, // the monolithic manager - Gitblit.class, + IGitblit.class, + + // the Gitblit Wicket app + GitBlitWebApp.class, // filters & servlets GitServlet.class, GitFilter.class, + RawServlet.class, + RawFilter.class, PagesServlet.class, PagesFilter.class, RpcServlet.class, @@ -100,9 +110,11 @@ BranchGraphServlet.class, RobotsTxtServlet.class, LogoServlet.class, + PtServlet.class, + ProxyFilter.class, EnforceAuthenticationFilter.class, GitblitWicketFilter.class - } + } ) public class DaggerModule { @@ -110,114 +122,64 @@ return new FileSettings(); } - @Provides @Singleton IRuntimeManager provideRuntimeManager(IStoredSettings settings) { - return new RuntimeManager(settings); + @Provides @Singleton IRuntimeManager provideRuntimeManager(RuntimeManager manager) { + return manager; } - @Provides @Singleton INotificationManager provideNotificationManager(IStoredSettings settings) { - return new NotificationManager(settings); + @Provides @Singleton IPluginManager providePluginManager(PluginManager manager) { + return manager; } - @Provides @Singleton IUserManager provideUserManager(IRuntimeManager runtimeManager) { - return new UserManager(runtimeManager); + @Provides @Singleton INotificationManager provideNotificationManager(NotificationManager manager) { + return manager; } - @Provides @Singleton ISessionManager provideSessionManager( - IRuntimeManager runtimeManager, - IUserManager userManager) { - - return new SessionManager( - runtimeManager, - userManager); + @Provides @Singleton IUserManager provideUserManager(UserManager manager) { + return manager; } - @Provides @Singleton IRepositoryManager provideRepositoryManager( - IRuntimeManager runtimeManager, - IUserManager userManager) { - - return new RepositoryManager( - runtimeManager, - userManager); + @Provides @Singleton IAuthenticationManager provideAuthenticationManager(AuthenticationManager manager) { + return manager; } - @Provides @Singleton IProjectManager provideProjectManager( - IRuntimeManager runtimeManager, - IUserManager userManager, - IRepositoryManager repositoryManager) { + @Provides @Singleton IPublicKeyManager providePublicKeyManager( + IStoredSettings settings, + IRuntimeManager runtimeManager) { - return new ProjectManager( - runtimeManager, - userManager, - repositoryManager); + 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 IFederationManager provideFederationManager( - IRuntimeManager runtimeManager, - INotificationManager notificationManager, - IUserManager userManager, - IRepositoryManager repositoryManager) { - - return new FederationManager( - runtimeManager, - notificationManager, - userManager, - repositoryManager); + @Provides @Singleton IRepositoryManager provideRepositoryManager(RepositoryManager manager) { + return manager; } - @Provides @Singleton IGitblitManager provideGitblitManager( - IRuntimeManager runtimeManager, - IUserManager userManager, - IRepositoryManager repositoryManager) { - - return new GitblitManager( - runtimeManager, - userManager, - repositoryManager); + @Provides @Singleton IProjectManager provideProjectManager(ProjectManager manager) { + return manager; } - @Provides @Singleton Gitblit provideGitblit( - IRuntimeManager runtimeManager, - INotificationManager notificationManager, - IUserManager userManager, - ISessionManager sessionManager, - IRepositoryManager repositoryManager, - IProjectManager projectManager, - IGitblitManager gitblitManager, - IFederationManager federationManager) { - - return new Gitblit( - runtimeManager, - notificationManager, - userManager, - sessionManager, - repositoryManager, - projectManager, - gitblitManager, - federationManager); + @Provides @Singleton IFederationManager provideFederationManager(FederationManager manager) { + return manager; } - @Provides @Singleton IServicesManager provideServicesManager(Gitblit gitblit) { - return new ServicesManager(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); + @Provides @Singleton IGitblit provideGitblit(GitBlit gitblit) { + return gitblit; } } \ No newline at end of file -- Gitblit v1.9.1