From 9a6fe4a4d5dad241ad85677fd687aa2d3d423043 Mon Sep 17 00:00:00 2001
From: David Ostrovsky <david@ostrovsky.org>
Date: Thu, 10 Apr 2014 18:58:07 -0400
Subject: [PATCH] Factor out methods from SshCommandServer to SshDaemon

---
 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 2cd583a..219e4ea 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.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,13 +43,25 @@
 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
@@ -147,7 +164,7 @@
 		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 @@
 		}
 
 	}
+
+    @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;
+      }
+    }
 }

--
Gitblit v1.9.1