From 3f5b8f5d9203aa7ffb7fbe9cdbaf9dba3da6cae6 Mon Sep 17 00:00:00 2001
From: Hybris95 <hybris_95@hotmail.com>
Date: Thu, 01 May 2014 16:14:15 -0400
Subject: [PATCH] Fixes sort, page building and search functions on "my tickets" page.

---
 src/main/java/com/gitblit/FederationClient.java |  111 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 76 insertions(+), 35 deletions(-)

diff --git a/src/main/java/com/gitblit/FederationClient.java b/src/main/java/com/gitblit/FederationClient.java
index 6b2161c..c3dcd9d 100644
--- a/src/main/java/com/gitblit/FederationClient.java
+++ b/src/main/java/com/gitblit/FederationClient.java
@@ -17,13 +17,23 @@
 
 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.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;
 
@@ -37,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() + ")");
@@ -53,7 +63,7 @@
 		}
 
 		File regFile = com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$, baseFolder, params.registrationsFile);
-		IStoredSettings settings = new FileSettings(regFile.getAbsolutePath());
+		FileSettings settings = new FileSettings(regFile.getAbsolutePath());
 		List<FederationModel> registrations = new ArrayList<FederationModel>();
 		if (StringUtils.isEmpty(params.url)) {
 			registrations.addAll(FederationUtils.getFederationRegistrations(settings));
@@ -67,7 +77,6 @@
 			model.token = params.token;
 			model.mirror = params.mirror;
 			model.bare = params.bare;
-			model.frequency = params.frequency;
 			model.folder = "";
 			registrations.add(model);
 		}
@@ -83,16 +92,26 @@
 		}
 
 		// configure the Gitblit singleton for minimal, non-server operation
-		GitBlit.self().configureContext(settings, baseFolder, false);
-		FederationPullExecutor executor = new FederationPullExecutor(registrations, params.isDaemon);
-		executor.run();
-		if (!params.isDaemon) {
-			System.out.println("Finished.");
-			System.exit(0);
-		}
+		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, repositories).start();
+		IGitblit gitblit = new GitblitManager(runtime, null, notifications, users, null, null, repositories, null, federation);
+
+		FederationPullService puller = new FederationPullService(gitblit, federation.getFederationRegistrations()) {
+			@Override
+			public void reschedule(FederationModel registration) {
+				// NOOP
+			}
+		};
+		puller.run();
+
+		System.out.println("Finished.");
+		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) {
@@ -100,44 +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 = { "--daemon" }, description = "Runs in daemon mode to schedule and pull repositories", required = false)
-		public boolean isDaemon;
-
-		@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