diff options
author | David Ostrovsky <david@ostrovsky.org> | 2014-02-22 17:03:37 +0100 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2014-04-10 18:58:07 -0400 |
commit | 9a6fe4a4d5dad241ad85677fd687aa2d3d423043 (patch) | |
tree | 618418302242b517e366893af5bb83e322c5fc53 /src/main/java/com/gitblit/manager/ServicesManager.java | |
parent | 7613df52959b6e2ac1094d2263be310fb3e2723b (diff) | |
download | gitblit-9a6fe4a4d5dad241ad85677fd687aa2d3d423043.tar.gz gitblit-9a6fe4a4d5dad241ad85677fd687aa2d3d423043.zip |
Factor out methods from SshCommandServer to SshDaemon
Change-Id: I02d545a8ab68b06d733ad8e7ed476767a34aa244
Diffstat (limited to 'src/main/java/com/gitblit/manager/ServicesManager.java')
-rw-r--r-- | src/main/java/com/gitblit/manager/ServicesManager.java | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/main/java/com/gitblit/manager/ServicesManager.java b/src/main/java/com/gitblit/manager/ServicesManager.java index 2cd583ad..219e4ea5 100644 --- a/src/main/java/com/gitblit/manager/ServicesManager.java +++ b/src/main/java/com/gitblit/manager/ServicesManager.java @@ -24,8 +24,13 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import javax.inject.Named; +import javax.inject.Singleton; import javax.servlet.http.HttpServletRequest; +import org.apache.sshd.server.Command; +import org.eclipse.jgit.transport.resolver.ReceivePackFactory; +import org.eclipse.jgit.transport.resolver.UploadPackFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,14 +43,26 @@ import com.gitblit.fanout.FanoutNioService; import com.gitblit.fanout.FanoutService; import com.gitblit.fanout.FanoutSocketService; import com.gitblit.git.GitDaemon; +import com.gitblit.git.GitblitReceivePackFactory; +import com.gitblit.git.GitblitUploadPackFactory; +import com.gitblit.git.RepositoryResolver; import com.gitblit.models.FederationModel; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; import com.gitblit.service.FederationPullService; +import com.gitblit.transport.ssh.SshCommandFactory; import com.gitblit.transport.ssh.SshDaemon; +import com.gitblit.transport.ssh.SshSession; +import com.gitblit.transport.ssh.commands.CreateRepository; +import com.gitblit.transport.ssh.commands.VersionCommand; +import com.gitblit.utils.IdGenerator; import com.gitblit.utils.StringUtils; import com.gitblit.utils.TimeUtils; +import dagger.Module; +import dagger.ObjectGraph; +import dagger.Provides; + /** * Services manager manages long-running services/processes that either have no * direct relation to other managers OR require really high-level manager @@ -147,7 +164,7 @@ public class ServicesManager implements IManager { String bindInterface = settings.getString(Keys.git.sshBindInterface, "localhost"); if (port > 0) { try { - sshDaemon = new SshDaemon(gitblit); + sshDaemon = ObjectGraph.create(new SshModule()).get(SshDaemon.class); sshDaemon.start(); } catch (IOException e) { sshDaemon = null; @@ -245,4 +262,40 @@ public class ServicesManager implements IManager { } } + + @Module(library = true, + injects = { + IGitblit.class, + SshCommandFactory.class, + SshDaemon.class, + }) + public class SshModule { + @Provides @Named("create-repository") Command provideCreateRepository() { + return new CreateRepository(); + } + + @Provides @Named("version") Command provideVersion() { + return new VersionCommand(); + } + + @Provides @Singleton IdGenerator provideIdGenerator() { + return new IdGenerator(); + } + + @Provides @Singleton RepositoryResolver<SshSession> provideRepositoryResolver() { + return new RepositoryResolver<SshSession>(provideGitblit()); + } + + @Provides @Singleton UploadPackFactory<SshSession> provideUploadPackFactory() { + return new GitblitUploadPackFactory<SshSession>(provideGitblit()); + } + + @Provides @Singleton ReceivePackFactory<SshSession> provideReceivePackFactory() { + return new GitblitReceivePackFactory<SshSession>(provideGitblit()); + } + + @Provides @Singleton IGitblit provideGitblit() { + return ServicesManager.this.gitblit; + } + } } |