From 8f6d5356f3cb7f8e800541fe6d46911bd46c0247 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 10 Apr 2014 18:58:09 -0400
Subject: [PATCH] Get the command context with an accessor instead of direct field access

---
 src/main/java/com/gitblit/transport/ssh/git/Upload.java               |    2 +-
 src/main/java/com/gitblit/transport/ssh/git/Receive.java              |    2 +-
 src/main/java/com/gitblit/transport/ssh/gitblit/LsCommand.java        |    8 ++++----
 src/main/java/com/gitblit/transport/ssh/gitblit/BaseKeyCommand.java   |    2 +-
 src/main/java/com/gitblit/transport/ssh/git/BaseGitCommand.java       |    2 +-
 src/main/java/com/gitblit/transport/ssh/commands/BaseCommand.java     |   18 +++++++++++++++---
 src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java |   10 ----------
 src/main/java/com/gitblit/transport/ssh/gitblit/RemoveKeyCommand.java |    2 +-
 src/main/java/com/gitblit/transport/ssh/gitblit/AddKeyCommand.java    |    2 +-
 src/main/java/com/gitblit/transport/ssh/gitblit/LsUsersCommand.java   |    2 +-
 10 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/gitblit/transport/ssh/commands/BaseCommand.java b/src/main/java/com/gitblit/transport/ssh/commands/BaseCommand.java
index 7088fef..7c71ffa 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/BaseCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/BaseCommand.java
@@ -48,9 +48,6 @@
 
 	private static final Logger log = LoggerFactory.getLogger(BaseCommand.class);
 
-	/** Ssh context */
-	protected SshCommandContext ctx;
-
 	protected InputStream in;
 
 	protected OutputStream out;
@@ -60,6 +57,9 @@
 	protected ExitCallback exit;
 
 	protected ServerSession session;
+
+	/** Ssh command context */
+	private SshCommandContext ctx;
 
 	/** Text of the command line which lead up to invoking this instance. */
 	private String commandName = "";
@@ -96,10 +96,22 @@
 	@Override
 	public abstract void start(Environment env) throws IOException;
 
+	protected void provideStateTo(final BaseCommand cmd) {
+		cmd.setContext(ctx);
+		cmd.setInputStream(in);
+		cmd.setOutputStream(out);
+		cmd.setErrorStream(err);
+		cmd.setExitCallback(exit);
+	}
+
 	public void setContext(SshCommandContext ctx) {
 		this.ctx = ctx;
 	}
 
+	public SshCommandContext getContext() {
+		return ctx;
+	}
+
 	@Override
 	public void setInputStream(final InputStream in) {
 		this.in = in;
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 f7c78d2..779f0b0 100644
--- a/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/commands/DispatchCommand.java
@@ -239,14 +239,4 @@
 		usage.append("\n");
 		return usage.toString();
 	}
-
-	protected void provideStateTo(final BaseCommand cmd) {
-		if (cmd instanceof BaseCommand) {
-			cmd.setContext(ctx);
-		}
-		cmd.setInputStream(in);
-		cmd.setOutputStream(out);
-		cmd.setErrorStream(err);
-		cmd.setExitCallback(exit);
-	}
 }
diff --git a/src/main/java/com/gitblit/transport/ssh/git/BaseGitCommand.java b/src/main/java/com/gitblit/transport/ssh/git/BaseGitCommand.java
index b203d47..2e4fda5 100644
--- a/src/main/java/com/gitblit/transport/ssh/git/BaseGitCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/git/BaseGitCommand.java
@@ -84,7 +84,7 @@
 		}
 		repository = repository.substring(1);
 		try {
-			return repositoryResolver.open(ctx.getClient(), repository);
+			return repositoryResolver.open(getContext().getClient(), repository);
 		} catch (Exception e) {
 			throw new Failure(1, "fatal: '" + repository + "': not a git archive", e);
 		}
diff --git a/src/main/java/com/gitblit/transport/ssh/git/Receive.java b/src/main/java/com/gitblit/transport/ssh/git/Receive.java
index 9597eb4..36bf271 100644
--- a/src/main/java/com/gitblit/transport/ssh/git/Receive.java
+++ b/src/main/java/com/gitblit/transport/ssh/git/Receive.java
@@ -24,7 +24,7 @@
 	@Override
 	protected void runImpl() throws Failure {
 		try {
-			ReceivePack rp = receivePackFactory.create(ctx.getClient(), repo);
+			ReceivePack rp = receivePackFactory.create(getContext().getClient(), repo);
 			rp.receive(in, out, null);
 		} catch (Exception e) {
 			throw new Failure(1, "fatal: Cannot receive pack: ", e);
diff --git a/src/main/java/com/gitblit/transport/ssh/git/Upload.java b/src/main/java/com/gitblit/transport/ssh/git/Upload.java
index 5de6b4d..1a85368 100644
--- a/src/main/java/com/gitblit/transport/ssh/git/Upload.java
+++ b/src/main/java/com/gitblit/transport/ssh/git/Upload.java
@@ -24,7 +24,7 @@
 	@Override
 	protected void runImpl() throws Failure {
 		try {
-			UploadPack up = uploadPackFactory.create(ctx.getClient(), repo);
+			UploadPack up = uploadPackFactory.create(getContext().getClient(), repo);
 			up.upload(in, out, null);
 		} catch (Exception e) {
 			throw new Failure(1, "fatal: Cannot upload pack: ", e);
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/AddKeyCommand.java b/src/main/java/com/gitblit/transport/ssh/gitblit/AddKeyCommand.java
index ae24dfb..6980834 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/AddKeyCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/AddKeyCommand.java
@@ -41,7 +41,7 @@
 
 	@Override
 	public void run() throws IOException, UnloggedFailure {
-		String username = ctx.getClient().getUsername();
+		String username = getContext().getClient().getUsername();
 		List<String> keys = readKeys(addKeys);
 		for (String key : keys) {
 			getKeyManager().addKey(username, key);
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/BaseKeyCommand.java b/src/main/java/com/gitblit/transport/ssh/gitblit/BaseKeyCommand.java
index 1b7bac1..23e1dfc 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/BaseKeyCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/BaseKeyCommand.java
@@ -53,6 +53,6 @@
 	}
 
 	protected IPublicKeyManager getKeyManager() {
-		return ctx.getGitblit().getPublicKeyManager();
+		return getContext().getGitblit().getPublicKeyManager();
 	}
 }
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/LsCommand.java b/src/main/java/com/gitblit/transport/ssh/gitblit/LsCommand.java
index 75cb2d8..1f0d06c 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/LsCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/LsCommand.java
@@ -49,8 +49,8 @@
 	}
 
 	protected void listProjects() {
-		IGitblit gitblit = ctx.getGitblit();
-		UserModel user = ctx.getClient().getUser();
+		IGitblit gitblit = getContext().getGitblit();
+		UserModel user = getContext().getClient().getUser();
 		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 
 		List<ProjectModel> projects = gitblit.getProjectModels(user, false);
@@ -85,8 +85,8 @@
 	}
 
 	protected void listRepositories() {
-		IGitblit gitblit = ctx.getGitblit();
-		UserModel user = ctx.getClient().getUser();
+		IGitblit gitblit = getContext().getGitblit();
+		UserModel user = getContext().getClient().getUser();
 		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
 
 		List<RepositoryModel> repositories = gitblit.getRepositoryModels(user);
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/LsUsersCommand.java b/src/main/java/com/gitblit/transport/ssh/gitblit/LsUsersCommand.java
index 752afaf..e59e8b9 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/LsUsersCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/LsUsersCommand.java
@@ -35,7 +35,7 @@
 
 	@Override
 	public void run() {
-		IGitblit gitblit = ctx.getGitblit();
+		IGitblit gitblit = getContext().getGitblit();
 		List<UserModel> users = gitblit.getAllUsers();
 		int displaynameLen = 0;
 		int usernameLen = 0;
diff --git a/src/main/java/com/gitblit/transport/ssh/gitblit/RemoveKeyCommand.java b/src/main/java/com/gitblit/transport/ssh/gitblit/RemoveKeyCommand.java
index af30730..915dbc0 100644
--- a/src/main/java/com/gitblit/transport/ssh/gitblit/RemoveKeyCommand.java
+++ b/src/main/java/com/gitblit/transport/ssh/gitblit/RemoveKeyCommand.java
@@ -44,7 +44,7 @@
 
 	@Override
 	public void run() throws IOException, UnloggedFailure {
-		String username = ctx.getClient().getUsername();
+		String username = getContext().getClient().getUsername();
 		List<String> keys = readKeys(removeKeys);
 		if (keys.contains(ALL)) {
 			getKeyManager().removeAllKeys(username);

--
Gitblit v1.9.1