From 04a98505a4ab8f48aee22800fcac193d9367d0ae Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 29 Nov 2013 11:05:51 -0500 Subject: [PATCH] Refactor user services and separate authentication (issue-281) --- src/main/java/com/gitblit/FederationClient.java | 55 +++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gitblit/FederationClient.java b/src/main/java/com/gitblit/FederationClient.java index 4aeb211..66b378a 100644 --- a/src/main/java/com/gitblit/FederationClient.java +++ b/src/main/java/com/gitblit/FederationClient.java @@ -23,15 +23,21 @@ import com.beust.jcommander.Parameter; import com.beust.jcommander.ParameterException; import com.beust.jcommander.Parameters; +import com.gitblit.manager.FederationManager; +import com.gitblit.manager.NotificationManager; +import com.gitblit.manager.RepositoryManager; +import com.gitblit.manager.RuntimeManager; +import com.gitblit.manager.UserManager; import com.gitblit.models.FederationModel; +import com.gitblit.service.FederationPullService; import com.gitblit.utils.FederationUtils; import com.gitblit.utils.StringUtils; /** * Command-line client to pull federated Gitblit repositories. - * + * * @author James Moger - * + * */ public class FederationClient { @@ -44,7 +50,16 @@ usage(jc, t); } - IStoredSettings settings = new FileSettings(params.registrationsFile); + System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")"); + + // command-line specified base folder + File baseFolder = new File(System.getProperty("user.dir")); + if (!StringUtils.isEmpty(params.baseFolder)) { + baseFolder = new File(params.baseFolder); + } + + File regFile = com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$, baseFolder, params.registrationsFile); + FileSettings settings = new FileSettings(regFile.getAbsolutePath()); List<FederationModel> registrations = new ArrayList<FederationModel>(); if (StringUtils.isEmpty(params.url)) { registrations.addAll(FederationUtils.getFederationRegistrations(settings)); @@ -66,8 +81,6 @@ System.out.println("No Federation Registrations! Nothing to do."); System.exit(0); } - - System.out.println("Gitblit Federation Client v" + Constants.getVersion() + " (" + Constants.getBuildDate() + ")"); // command-line specified repositories folder if (!StringUtils.isEmpty(params.repositoriesFolder)) { @@ -76,13 +89,23 @@ } // configure the Gitblit singleton for minimal, non-server operation - GitBlit.self().configureContext(settings, null, 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); + runtime.setBaseFolder(baseFolder); + NotificationManager notifications = new NotificationManager(settings).start(); + UserManager users = new UserManager(runtime).start(); + RepositoryManager repositories = new RepositoryManager(runtime, users).start(); + FederationManager federation = new FederationManager(runtime, notifications, users, repositories).start(); + + FederationPullService puller = new FederationPullService(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) { @@ -106,10 +129,7 @@ private static class Params { @Parameter(names = { "--registrations" }, description = "Gitblit Federation Registrations File", required = false) - public String registrationsFile = "federation.properties"; - - @Parameter(names = { "--daemon" }, description = "Runs in daemon mode to schedule and pull repositories", required = false) - public boolean isDaemon; + public String registrationsFile = "${baseFolder}/federation.properties"; @Parameter(names = { "--url" }, description = "URL of Gitblit instance to mirror from", required = false) public String url; @@ -126,6 +146,9 @@ @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) + public String baseFolder; + @Parameter(names = { "--repositoriesFolder" }, description = "Destination folder for cloned repositories", required = false) public String repositoriesFolder; -- Gitblit v1.9.1