/* * Copyright 2013 gitblit.com. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.gitblit; import javax.inject.Singleton; import com.gitblit.manager.AuthenticationManager; import com.gitblit.manager.FederationManager; import com.gitblit.manager.IAuthenticationManager; import com.gitblit.manager.IFederationManager; 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.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; import dagger.Module; import dagger.Provides; /** * DaggerModule references all injectable objects. * * @author James Moger * */ @Module( library = true, injects = { IStoredSettings.class, // core managers IRuntimeManager.class, IPluginManager.class, INotificationManager.class, IUserManager.class, IAuthenticationManager.class, IPublicKeyManager.class, IRepositoryManager.class, IProjectManager.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, RpcFilter.class, DownloadZipServlet.class, DownloadZipFilter.class, SyndicationServlet.class, SyndicationFilter.class, FederationServlet.class, SparkleShareInviteServlet.class, BranchGraphServlet.class, RobotsTxtServlet.class, LogoServlet.class, PtServlet.class, ProxyFilter.class, EnforceAuthenticationFilter.class, GitblitWicketFilter.class } ) public class DaggerModule { @Provides @Singleton IStoredSettings provideSettings() { return new FileSettings(); } @Provides @Singleton IRuntimeManager provideRuntimeManager(IStoredSettings settings) { return new RuntimeManager(settings); } @Provides @Singleton IPluginManager providePluginManager(IRuntimeManager runtimeManager) { return new PluginManager(runtimeManager); } @Provides @Singleton INotificationManager provideNotificationManager(IStoredSettings settings) { return new NotificationManager(settings); } @Provides @Singleton IUserManager provideUserManager( IRuntimeManager runtimeManager, IPluginManager pluginManager) { return new UserManager(runtimeManager, pluginManager); } @Provides @Singleton IAuthenticationManager provideAuthenticationManager( IRuntimeManager runtimeManager, IUserManager userManager) { 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( IRuntimeManager runtimeManager, IPluginManager pluginManager, IUserManager userManager) { return new RepositoryManager( runtimeManager, pluginManager, userManager); } @Provides @Singleton IProjectManager provideProjectManager( IRuntimeManager runtimeManager, IUserManager userManager, IRepositoryManager repositoryManager) { return new ProjectManager( runtimeManager, userManager, repositoryManager); } @Provides @Singleton IFederationManager provideFederationManager( IRuntimeManager runtimeManager, INotificationManager notificationManager, IRepositoryManager repositoryManager) { return new FederationManager( runtimeManager, notificationManager, repositoryManager); } @Provides @Singleton IGitblit provideGitblit( IRuntimeManager runtimeManager, IPluginManager pluginManager, INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IFederationManager federationManager) { return new GitBlit( runtimeManager, pluginManager, notificationManager, userManager, authenticationManager, publicKeyManager, repositoryManager, projectManager, federationManager); } @Provides @Singleton GitBlitWebApp provideWebApplication( IRuntimeManager runtimeManager, IPluginManager pluginManager, INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IFederationManager federationManager, IGitblit gitblit) { return new GitBlitWebApp( runtimeManager, pluginManager, 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); // } @Provides @Singleton GitblitWicketFilter provideGitblitWicketFilter(GitBlitWebApp webapp) { return new GitblitWicketFilter(); } @Provides GitServlet provideGitServlet(IGitblit gitblit) { return new GitServlet(); } @Provides GitFilter provideGitFilter( IRuntimeManager runtimeManager, IUserManager userManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager, IFederationManager federationManager) { return new GitFilter(); } @Provides @Singleton RawServlet provideRawServlet( IRuntimeManager runtimeManager, IRepositoryManager repositoryManager) { return new RawServlet(); } @Provides @Singleton RawFilter provideRawFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager) { return new RawFilter(); } @Provides @Singleton PagesServlet providePagesServlet( IRuntimeManager runtimeManager, IRepositoryManager repositoryManager) { return new PagesServlet(); } @Provides @Singleton PagesFilter providePagesFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager) { return new PagesFilter(); } @Provides @Singleton RpcServlet provideRpcServlet(IGitblit gitblit) { return new RpcServlet(); } @Provides @Singleton RpcFilter provideRpcFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager) { return new RpcFilter(); } @Provides @Singleton DownloadZipServlet provideDownloadZipServlet( IRuntimeManager runtimeManager, IRepositoryManager repositoryManager) { return new DownloadZipServlet(); } @Provides @Singleton DownloadZipFilter provideDownloadZipFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager) { return new DownloadZipFilter(); } @Provides @Singleton SyndicationServlet provideSyndicationServlet( IRuntimeManager runtimeManager, IRepositoryManager repositoryManager, IProjectManager projectManager) { return new SyndicationServlet(); } @Provides @Singleton SyndicationFilter provideSyndicationFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager, IProjectManager projectManager) { return new SyndicationFilter(); } @Provides @Singleton FederationServlet provideFederationServlet( IRuntimeManager runtimeManager, IUserManager userManager, IRepositoryManager repositoryManager, IFederationManager federationManager) { return new FederationServlet(); } @Provides @Singleton SparkleShareInviteServlet provideSparkleshareInviteServlet( IRuntimeManager runtimeManager, IUserManager userManager, IAuthenticationManager authenticationManager, IRepositoryManager repositoryManager) { return new SparkleShareInviteServlet(); } @Provides @Singleton BranchGraphServlet provideBranchGraphServlet( IRuntimeManager runtimeManager, IRepositoryManager repositoryManager) { return new BranchGraphServlet(); } @Provides @Singleton RobotsTxtServlet provideRobotsTxtServlet(IRuntimeManager runtimeManager) { return new RobotsTxtServlet(); } @Provides @Singleton LogoServlet provideLogoServlet(IRuntimeManager runtimeManager) { return new LogoServlet(); } @Provides @Singleton PtServlet providePtServlet(IRuntimeManager runtimeManager) { return new PtServlet(); } @Provides @Singleton ProxyFilter provideProxyFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager) { return new ProxyFilter(); } @Provides @Singleton EnforceAuthenticationFilter provideEnforceAuthenticationFilter( IRuntimeManager runtimeManager, IAuthenticationManager authenticationManager) { return new EnforceAuthenticationFilter(); } }