From 01b529edac600feb3c0750d27d0759b5f49fde72 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] Show root commands in welcome shell and improve command registration

---
 src/main/java/com/gitblit/GitBlit.java |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 52 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java
index a1abfcd..817d18c 100644
--- a/src/main/java/com/gitblit/GitBlit.java
+++ b/src/main/java/com/gitblit/GitBlit.java
@@ -121,11 +121,21 @@
 		String username = StringUtils.encodeUsername(UserModel.ANONYMOUS.equals(user) ? "" : user.username);
 
 		List<RepositoryUrl> list = new ArrayList<RepositoryUrl>();
+
 		// http/https url
 		if (settings.getBoolean(Keys.git.enableGitServlet, true)) {
 			AccessPermission permission = user.getRepositoryPermission(repository).permission;
 			if (permission.exceeds(AccessPermission.NONE)) {
 				list.add(new RepositoryUrl(getRepositoryUrl(request, username, repository), permission));
+			}
+		}
+
+		// ssh daemon url
+		String sshDaemonUrl = servicesManager.getSshDaemonUrl(request, user, repository);
+		if (!StringUtils.isEmpty(sshDaemonUrl)) {
+			AccessPermission permission = user.getRepositoryPermission(repository).permission;
+			if (permission.exceeds(AccessPermission.NONE)) {
+				list.add(new RepositoryUrl(sshDaemonUrl, permission));
 			}
 		}
 
@@ -180,9 +190,14 @@
 	@Override
 	public boolean deleteRepository(String repositoryName) {
 		RepositoryModel repository = repositoryManager.getRepositoryModel(repositoryName);
-		boolean success = repositoryManager.deleteRepository(repositoryName);
+		return deleteRepositoryModel(repository);
+	}
+
+	@Override
+	public boolean deleteRepositoryModel(RepositoryModel model) {
+		boolean success = repositoryManager.deleteRepositoryModel(model);
 		if (success && ticketService != null) {
-			return ticketService.deleteAll(repository);
+			return ticketService.deleteAll(model);
 		}
 		return success;
 	}
@@ -205,7 +220,9 @@
 		try {
 			Class<? extends ITicketService> serviceClass = (Class<? extends ITicketService>) Class.forName(clazz);
 			ticketService = injector.get(serviceClass).start();
-			if (ticketService.isReady()) {
+			if (ticketService instanceof NullTicketService) {
+				logger.warn("No ticket service configured.");
+			} else if (ticketService.isReady()) {
 				logger.info("{} is ready.", ticketService);
 			} else {
 				logger.warn("{} is disabled.", ticketService);
@@ -284,5 +301,37 @@
 		@Provides @Singleton IGitblit provideGitblit() {
 			return GitBlit.this;
 		}
+
+		@Provides @Singleton NullTicketService provideNullTicketService() {
+			return new NullTicketService(
+					runtimeManager,
+					notificationManager,
+					userManager,
+					repositoryManager);
+		}
+
+		@Provides @Singleton FileTicketService provideFileTicketService() {
+			return new FileTicketService(
+					runtimeManager,
+					notificationManager,
+					userManager,
+					repositoryManager);
+		}
+
+		@Provides @Singleton BranchTicketService provideBranchTicketService() {
+			return new BranchTicketService(
+					runtimeManager,
+					notificationManager,
+					userManager,
+					repositoryManager);
+		}
+
+		@Provides @Singleton RedisTicketService provideRedisTicketService() {
+			return new RedisTicketService(
+					runtimeManager,
+					notificationManager,
+					userManager,
+					repositoryManager);
+		}
 	}
 }

--
Gitblit v1.9.1