From edeab95cac16e5f17cfcd75a9969d8708bf360ab Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 12 May 2014 09:22:04 -0400
Subject: [PATCH] Documentation

---
 src/main/java/com/gitblit/FederationClient.java |   88 +++++++++++++++++++++++++++++---------------
 1 files changed, 58 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/gitblit/FederationClient.java b/src/main/java/com/gitblit/FederationClient.java
index 66b378a..c3dcd9d 100644
--- a/src/main/java/com/gitblit/FederationClient.java
+++ b/src/main/java/com/gitblit/FederationClient.java
@@ -17,18 +17,22 @@
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
-import com.beust.jcommander.JCommander;
-import com.beust.jcommander.Parameter;
-import com.beust.jcommander.ParameterException;
-import com.beust.jcommander.Parameters;
+import org.kohsuke.args4j.CmdLineException;
+import org.kohsuke.args4j.CmdLineParser;
+import org.kohsuke.args4j.Option;
+
 import com.gitblit.manager.FederationManager;
-import com.gitblit.manager.NotificationManager;
+import com.gitblit.manager.GitblitManager;
+import com.gitblit.manager.IGitblit;
+import com.gitblit.manager.INotificationManager;
 import com.gitblit.manager.RepositoryManager;
 import com.gitblit.manager.RuntimeManager;
 import com.gitblit.manager.UserManager;
 import com.gitblit.models.FederationModel;
+import com.gitblit.models.Mailing;
 import com.gitblit.service.FederationPullService;
 import com.gitblit.utils.FederationUtils;
 import com.gitblit.utils.StringUtils;
@@ -43,11 +47,11 @@
 
 	public static void main(String[] args) {
 		Params params = new Params();
-		JCommander jc = new JCommander(params);
+		CmdLineParser parser = new CmdLineParser(params);
 		try {
-			jc.parse(args);
-		} catch (ParameterException t) {
-			usage(jc, t);
+			parser.parseArgument(args);
+		} catch (CmdLineException t) {
+			usage(parser, t);
 		}
 
 		System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")");
@@ -73,7 +77,6 @@
 			model.token = params.token;
 			model.mirror = params.mirror;
 			model.bare = params.bare;
-			model.frequency = params.frequency;
 			model.folder = "";
 			registrations.add(model);
 		}
@@ -89,14 +92,14 @@
 		}
 
 		// configure the Gitblit singleton for minimal, non-server operation
-		RuntimeManager runtime = new RuntimeManager(settings);
-		runtime.setBaseFolder(baseFolder);
-		NotificationManager notifications = new NotificationManager(settings).start();
+		RuntimeManager runtime = new RuntimeManager(settings, baseFolder).start();
+		NoopNotificationManager notifications = new NoopNotificationManager().start();
 		UserManager users = new UserManager(runtime).start();
 		RepositoryManager repositories = new RepositoryManager(runtime, users).start();
-		FederationManager federation = new FederationManager(runtime, notifications, users, repositories).start();
+		FederationManager federation = new FederationManager(runtime, notifications, repositories).start();
+		IGitblit gitblit = new GitblitManager(runtime, null, notifications, users, null, null, repositories, null, federation);
 
-		FederationPullService puller = new FederationPullService(federation.getFederationRegistrations()) {
+		FederationPullService puller = new FederationPullService(gitblit, federation.getFederationRegistrations()) {
 			@Override
 			public void reschedule(FederationModel registration) {
 				// NOOP
@@ -108,7 +111,7 @@
 		System.exit(0);
 	}
 
-	private static void usage(JCommander jc, ParameterException t) {
+	private static void usage(CmdLineParser parser, CmdLineException t) {
 		System.out.println(Constants.getGitBlitVersion());
 		System.out.println();
 		if (t != null) {
@@ -116,41 +119,66 @@
 			System.out.println();
 		}
 
-		if (jc != null) {
-			jc.usage();
+		if (parser != null) {
+			parser.printUsage(System.out);
 		}
 		System.exit(0);
 	}
 
 	/**
-	 * JCommander Parameters class for FederationClient.
+	 * Parameters class for FederationClient.
 	 */
-	@Parameters(separators = " ")
 	private static class Params {
 
-		@Parameter(names = { "--registrations" }, description = "Gitblit Federation Registrations File", required = false)
+		@Option(name = "--registrations", usage = "Gitblit Federation Registrations File", metaVar = "FILE")
 		public String registrationsFile = "${baseFolder}/federation.properties";
 
-		@Parameter(names = { "--url" }, description = "URL of Gitblit instance to mirror from", required = false)
+		@Option(name = "--url", usage = "URL of Gitblit instance to mirror from", metaVar = "URL")
 		public String url;
 
-		@Parameter(names = { "--mirror" }, description = "Mirror repositories", required = false)
+		@Option(name = "--mirror", usage = "Mirror repositories")
 		public boolean mirror;
 
-		@Parameter(names = { "--bare" }, description = "Create bare repositories", required = false)
+		@Option(name = "--bare", usage = "Create bare repositories")
 		public boolean bare;
 
-		@Parameter(names = { "--token" }, description = "Federation Token", required = false)
+		@Option(name = "--token", usage = "Federation Token", metaVar = "TOKEN")
 		public String token;
 
-		@Parameter(names = { "--frequency" }, description = "Period to wait between pull attempts (requires --daemon)", required = false)
-		public String frequency = "60 mins";
-
-		@Parameter(names = { "--baseFolder" }, description = "Base folder for received data", required = false)
+		@Option(name = "--baseFolder", usage = "Base folder for received data", metaVar = "PATH")
 		public String baseFolder;
 
-		@Parameter(names = { "--repositoriesFolder" }, description = "Destination folder for cloned repositories", required = false)
+		@Option(name = "--repositoriesFolder", usage = "Destination folder for cloned repositories", metaVar = "PATH")
 		public String repositoriesFolder;
 
 	}
+
+	private static class NoopNotificationManager implements INotificationManager {
+
+		@Override
+		public NoopNotificationManager start() {
+			return this;
+		}
+
+		@Override
+		public NoopNotificationManager stop() {
+			return this;
+		}
+
+		@Override
+		public void sendMailToAdministrators(String subject, String message) {
+		}
+
+		@Override
+		public void sendMail(String subject, String message, Collection<String> toAddresses) {
+		}
+
+		@Override
+		public void sendHtmlMail(String subject, String message, Collection<String> toAddresses) {
+		}
+
+		@Override
+		public void send(Mailing mailing) {
+		}
+	}
 }

--
Gitblit v1.9.1