From 2b5484449ac92f570554936e71fca3f34be63eff Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:08 -0400
Subject: [PATCH] Display the selected SSH backend in the daemon startup message
---
src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 54 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
index b6944ea..31b718e 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
@@ -27,7 +27,13 @@
import org.apache.sshd.server.Environment;
import org.kohsuke.args4j.Argument;
+import com.gitblit.git.GitblitReceivePackFactory;
+import com.gitblit.git.GitblitUploadPackFactory;
+import com.gitblit.git.RepositoryResolver;
+import com.gitblit.transport.ssh.AbstractGitCommand;
import com.gitblit.transport.ssh.CommandMetaData;
+import com.gitblit.transport.ssh.SshKeyAuthenticator;
+import com.gitblit.transport.ssh.SshSession;
import com.gitblit.utils.cli.SubcommandHandler;
import com.google.common.base.Charsets;
import com.google.common.base.Strings;
@@ -95,11 +101,11 @@
bc.setName(getName() + " " + commandName);
}
bc.setArguments(args.toArray(new String[args.size()]));
- } else if (!args.isEmpty()) {
- throw new UnloggedFailure(1, commandName + " does not take arguments");
}
- provideStateTo(cmd);
+ provideBaseStateTo(cmd);
+ provideGitState(cmd);
+ reset();
//atomicCmd.set(cmd);
cmd.start(env);
@@ -136,7 +142,7 @@
}
@Override
-protected String usage() {
+ protected String usage() {
final StringBuilder usage = new StringBuilder();
usage.append("Available commands");
if (!getName().isEmpty()) {
@@ -173,4 +179,48 @@
usage.append("\n");
return usage.toString();
}
+
+ // This is needed because we are not using provider or
+ // clazz.newInstance() for DispatchCommand
+ private void reset() {
+ args = new ArrayList<String>();
+ }
+
+ private void provideGitState(Command cmd) {
+ if (cmd instanceof AbstractGitCommand) {
+ AbstractGitCommand a = (AbstractGitCommand) cmd;
+ a.setRepositoryResolver(repositoryResolver);
+ a.setUploadPackFactory(gitblitUploadPackFactory);
+ a.setReceivePackFactory(gitblitReceivePackFactory);
+ } else if (cmd instanceof DispatchCommand) {
+ DispatchCommand d = (DispatchCommand)cmd;
+ d.setRepositoryResolver(repositoryResolver);
+ d.setUploadPackFactory(gitblitUploadPackFactory);
+ d.setReceivePackFactory(gitblitReceivePackFactory);
+ d.setAuthenticator(authenticator);
+ } else if (cmd instanceof SetAccountCommand) {
+ SetAccountCommand setAccountCommand = (SetAccountCommand)cmd;
+ setAccountCommand.setAuthenticator(authenticator);
+ }
+ }
+
+ private RepositoryResolver<SshSession> repositoryResolver;
+ public void setRepositoryResolver(RepositoryResolver<SshSession> repositoryResolver) {
+ this.repositoryResolver = repositoryResolver;
+ }
+
+ private GitblitUploadPackFactory<SshSession> gitblitUploadPackFactory;
+ public void setUploadPackFactory(GitblitUploadPackFactory<SshSession> gitblitUploadPackFactory) {
+ this.gitblitUploadPackFactory = gitblitUploadPackFactory;
+ }
+
+ private GitblitReceivePackFactory<SshSession> gitblitReceivePackFactory;
+ public void setReceivePackFactory(GitblitReceivePackFactory<SshSession> gitblitReceivePackFactory) {
+ this.gitblitReceivePackFactory = gitblitReceivePackFactory;
+ }
+
+ private SshKeyAuthenticator authenticator;
+ public void setAuthenticator(SshKeyAuthenticator authenticator) {
+ this.authenticator = authenticator;
+ }
}
--
Gitblit v1.9.1