From 84f406bfd20ec2076cf7616e7f396ad480513bc4 Mon Sep 17 00:00:00 2001 From: David Ostrovsky <david@ostrovsky.org> Date: Thu, 10 Apr 2014 18:58:09 -0400 Subject: [PATCH] Add plugins/extension infrastructure --- src/main/java/com/gitblit/DaggerModule.java | 229 ++++++++++++--------------------------------------------- 1 files changed, 49 insertions(+), 180 deletions(-) diff --git a/src/main/java/com/gitblit/DaggerModule.java b/src/main/java/com/gitblit/DaggerModule.java index b12510c..1805c4e 100644 --- a/src/main/java/com/gitblit/DaggerModule.java +++ b/src/main/java/com/gitblit/DaggerModule.java @@ -17,12 +17,13 @@ import javax.inject.Singleton; -import com.gitblit.git.GitServlet; import com.gitblit.manager.AuthenticationManager; import com.gitblit.manager.FederationManager; +import com.gitblit.manager.PluginManager; import com.gitblit.manager.IAuthenticationManager; import com.gitblit.manager.IFederationManager; import com.gitblit.manager.IGitblit; +import com.gitblit.manager.IPluginManager; import com.gitblit.manager.INotificationManager; import com.gitblit.manager.IProjectManager; import com.gitblit.manager.IRepositoryManager; @@ -33,23 +34,12 @@ 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.LogoServlet; -import com.gitblit.servlet.PagesFilter; -import com.gitblit.servlet.PagesServlet; -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; import dagger.Module; import dagger.Provides; @@ -70,32 +60,18 @@ INotificationManager.class, IUserManager.class, IAuthenticationManager.class, + IPublicKeyManager.class, IRepositoryManager.class, IProjectManager.class, IFederationManager.class, + IPluginManager.class, // the monolithic manager IGitblit.class, - // filters & servlets - GitServlet.class, - GitFilter.class, - PagesServlet.class, - PagesFilter.class, - RpcServlet.class, - RpcFilter.class, - DownloadZipServlet.class, - DownloadZipFilter.class, - SyndicationServlet.class, - SyndicationFilter.class, - FederationServlet.class, - SparkleShareInviteServlet.class, - BranchGraphServlet.class, - RobotsTxtServlet.class, - LogoServlet.class, - EnforceAuthenticationFilter.class, - GitblitWicketFilter.class - } + // the Gitblit Wicket app + GitBlitWebApp.class + } ) public class DaggerModule { @@ -115,6 +91,10 @@ return new UserManager(runtimeManager); } + @Provides @Singleton IPluginManager providePluginManager(IRuntimeManager runtimeManager) { + return new PluginManager(runtimeManager); + } + @Provides @Singleton IAuthenticationManager provideAuthenticationManager( IRuntimeManager runtimeManager, IUserManager userManager) { @@ -122,6 +102,31 @@ return new AuthenticationManager( runtimeManager, userManager); + } + + @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( @@ -160,18 +165,22 @@ INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, + IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, - IFederationManager federationManager) { + IFederationManager federationManager, + IPluginManager pluginManager) { return new GitBlit( runtimeManager, notificationManager, userManager, authenticationManager, + publicKeyManager, repositoryManager, projectManager, - federationManager); + federationManager, + pluginManager); } @Provides @Singleton GitBlitWebApp provideWebApplication( @@ -179,6 +188,7 @@ INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, + IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IFederationManager federationManager, @@ -189,151 +199,10 @@ notificationManager, userManager, authenticationManager, + publicKeyManager, repositoryManager, projectManager, federationManager, gitblit); - } - - @Provides @Singleton GitblitWicketFilter provideGitblitWicketFilter(GitBlitWebApp webapp) { - return new GitblitWicketFilter(webapp); - } - - @Provides GitServlet provideGitServlet(IGitblit gitblit) { - return new GitServlet(gitblit); - } - - @Provides GitFilter provideGitFilter( - IRuntimeManager runtimeManager, - IUserManager userManager, - IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager, - IFederationManager federationManager) { - - return new GitFilter( - runtimeManager, - userManager, - authenticationManager, - repositoryManager, - federationManager); - } - - @Provides @Singleton PagesServlet providePagesServlet( - IRuntimeManager runtimeManager, - IRepositoryManager repositoryManager) { - - return new PagesServlet(runtimeManager, repositoryManager); - } - - @Provides @Singleton PagesFilter providePagesFilter( - IRuntimeManager runtimeManager, - IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager) { - - return new PagesFilter( - runtimeManager, - authenticationManager, - repositoryManager); - } - - @Provides @Singleton RpcServlet provideRpcServlet(IGitblit gitblit) { - return new RpcServlet(gitblit); - } - - @Provides @Singleton RpcFilter provideRpcFilter( - IRuntimeManager runtimeManager, - IAuthenticationManager authenticationManager) { - - return new RpcFilter(runtimeManager, authenticationManager); - } - - @Provides @Singleton DownloadZipServlet provideDownloadZipServlet( - IRuntimeManager runtimeManager, - IRepositoryManager repositoryManager) { - - return new DownloadZipServlet(runtimeManager, repositoryManager); - } - - @Provides @Singleton DownloadZipFilter provideDownloadZipFilter( - IRuntimeManager runtimeManager, - IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager) { - - return new DownloadZipFilter( - runtimeManager, - authenticationManager, - repositoryManager); - } - - @Provides @Singleton SyndicationServlet provideSyndicationServlet( - IRuntimeManager runtimeManager, - IRepositoryManager repositoryManager, - IProjectManager projectManager) { - - return new SyndicationServlet( - runtimeManager, - repositoryManager, - projectManager); - } - - @Provides @Singleton SyndicationFilter provideSyndicationFilter( - IRuntimeManager runtimeManager, - IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager, - IProjectManager projectManager) { - - return new SyndicationFilter( - runtimeManager, - authenticationManager, - repositoryManager, - projectManager); - } - - @Provides @Singleton FederationServlet provideFederationServlet( - IRuntimeManager runtimeManager, - IUserManager userManager, - IRepositoryManager repositoryManager, - IFederationManager federationManager) { - - return new FederationServlet( - runtimeManager, - userManager, - repositoryManager, - federationManager); - } - - @Provides @Singleton SparkleShareInviteServlet provideSparkleshareInviteServlet( - IRuntimeManager runtimeManager, - IUserManager userManager, - IAuthenticationManager authenticationManager, - IRepositoryManager repositoryManager) { - - return new SparkleShareInviteServlet( - runtimeManager, - userManager, - authenticationManager, - repositoryManager); - } - - @Provides @Singleton BranchGraphServlet provideBranchGraphServlet( - IRuntimeManager runtimeManager, - IRepositoryManager repositoryManager) { - - return new BranchGraphServlet(runtimeManager, repositoryManager); - } - - @Provides @Singleton RobotsTxtServlet provideRobotsTxtServlet(IRuntimeManager runtimeManager) { - return new RobotsTxtServlet(runtimeManager); - } - - @Provides @Singleton LogoServlet provideLogoServlet(IRuntimeManager runtimeManager) { - return new LogoServlet(runtimeManager); - } - - @Provides @Singleton EnforceAuthenticationFilter provideEnforceAuthenticationFilter( - IRuntimeManager runtimeManager, - IAuthenticationManager authenticationManager) { - - return new EnforceAuthenticationFilter(runtimeManager, authenticationManager); } } \ No newline at end of file -- Gitblit v1.9.1