From 4cd2f6126c5b094ac1d170fcd59c004c165a69a4 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 11 Oct 2011 17:39:43 -0400
Subject: [PATCH] Documentation.
---
src/com/gitblit/GitBlit.java | 127 +++++++++++++++---------------------------
1 files changed, 45 insertions(+), 82 deletions(-)
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index f3ad363..1727038 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -59,12 +59,14 @@
import com.gitblit.Constants.FederationToken;
import com.gitblit.models.FederationModel;
import com.gitblit.models.FederationProposal;
+import com.gitblit.models.FederationSet;
import com.gitblit.models.RepositoryModel;
import com.gitblit.models.UserModel;
+import com.gitblit.utils.ByteFormat;
+import com.gitblit.utils.FederationUtils;
import com.gitblit.utils.JGitUtils;
+import com.gitblit.utils.JsonUtils;
import com.gitblit.utils.StringUtils;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
/**
* GitBlit is the servlet context listener singleton that acts as the core for
@@ -248,6 +250,7 @@
public void setUserService(IUserService userService) {
logger.info("Setting up user service " + userService.toString());
this.userService = userService;
+ this.userService.setup(settings);
}
/**
@@ -528,6 +531,10 @@
model.origin = config.getString("remote", "origin", "url");
}
r.close();
+ if (getBoolean(Keys.web.showRepositorySizes, true)) {
+ ByteFormat byteFormat = new ByteFormat();
+ model.size = byteFormat.format(calculateSize(model));
+ }
return model;
}
@@ -830,8 +837,8 @@
// Schedule the federation executor
List<FederationModel> registrations = getFederationRegistrations();
if (registrations.size() > 0) {
- scheduledExecutor.schedule(new FederationPullExecutor(registrations), 1,
- TimeUnit.MINUTES);
+ FederationPullExecutor executor = new FederationPullExecutor(registrations, true);
+ scheduledExecutor.schedule(executor, 1, TimeUnit.MINUTES);
}
}
@@ -843,76 +850,7 @@
*/
public List<FederationModel> getFederationRegistrations() {
if (federationRegistrations.isEmpty()) {
- List<String> keys = settings.getAllKeys(Keys.federation._ROOT);
- keys.remove(Keys.federation.name);
- keys.remove(Keys.federation.passphrase);
- keys.remove(Keys.federation.allowProposals);
- keys.remove(Keys.federation.proposalsFolder);
- keys.remove(Keys.federation.defaultFrequency);
- keys.remove(Keys.federation.sets);
- Collections.sort(keys);
- Map<String, FederationModel> federatedModels = new HashMap<String, FederationModel>();
- for (String key : keys) {
- String value = key.substring(Keys.federation._ROOT.length() + 1);
- List<String> values = StringUtils.getStringsFromValue(value, "\\.");
- String server = values.get(0);
- if (!federatedModels.containsKey(server)) {
- federatedModels.put(server, new FederationModel(server));
- }
- String setting = values.get(1);
- if (setting.equals("url")) {
- // url of the origin Gitblit instance
- federatedModels.get(server).url = settings.getString(key, "");
- } else if (setting.equals("token")) {
- // token for the origin Gitblit instance
- federatedModels.get(server).token = settings.getString(key, "");
- } else if (setting.equals("frequency")) {
- // frequency of the pull operation
- federatedModels.get(server).frequency = settings.getString(key, "");
- } else if (setting.equals("folder")) {
- // destination folder of the pull operation
- federatedModels.get(server).folder = settings.getString(key, "");
- } else if (setting.equals("mirror")) {
- // are the repositories to be true mirrors of the origin
- federatedModels.get(server).mirror = settings.getBoolean(key, true);
- } else if (setting.equals("mergeAccounts")) {
- // merge remote accounts into local accounts
- federatedModels.get(server).mergeAccounts = settings.getBoolean(key, false);
- } else if (setting.equals("sendStatus")) {
- // send a status acknowledgment to source Gitblit instance
- // at end of git pull
- federatedModels.get(server).sendStatus = settings.getBoolean(key, false);
- } else if (setting.equals("notifyOnError")) {
- // notify administrators on federation pull failures
- federatedModels.get(server).notifyOnError = settings.getBoolean(key, false);
- } else if (setting.equals("exclude")) {
- // excluded repositories
- federatedModels.get(server).exclusions = settings.getStrings(key);
- } else if (setting.equals("include")) {
- // included repositories
- federatedModels.get(server).inclusions = settings.getStrings(key);
- }
- }
-
- // verify that registrations have a url and a token
- for (FederationModel model : federatedModels.values()) {
- if (StringUtils.isEmpty(model.url)) {
- logger.warn(MessageFormat.format(
- "Dropping federation registration {0}. Missing url.", model.name));
- continue;
- }
- if (StringUtils.isEmpty(model.token)) {
- logger.warn(MessageFormat.format(
- "Dropping federation registration {0}. Missing token.", model.name));
- continue;
- }
- // set default frequency if unspecified
- if (StringUtils.isEmpty(model.frequency)) {
- model.frequency = settings.getString(Keys.federation.defaultFrequency,
- "60 mins");
- }
- federationRegistrations.add(model);
- }
+ federationRegistrations.addAll(FederationUtils.getFederationRegistrations(settings));
}
return federationRegistrations;
}
@@ -939,6 +877,29 @@
}
}
return null;
+ }
+
+ /**
+ * Returns the list of federation sets.
+ *
+ * @return list of federation sets
+ */
+ public List<FederationSet> getFederationSets(String gitblitUrl) {
+ List<FederationSet> list = new ArrayList<FederationSet>();
+ // generate standard tokens
+ for (FederationToken type : FederationToken.values()) {
+ FederationSet fset = new FederationSet(type.toString(), type, getFederationToken(type));
+ fset.repositories = getRepositories(gitblitUrl, fset.token);
+ list.add(fset);
+ }
+ // generate tokens for federation sets
+ for (String set : settings.getStrings(Keys.federation.sets)) {
+ FederationSet fset = new FederationSet(set, FederationToken.REPOSITORIES,
+ getFederationToken(set));
+ fset.repositories = getRepositories(gitblitUrl, fset.token);
+ list.add(fset);
+ }
+ return list;
}
/**
@@ -1039,13 +1000,13 @@
* @param proposal
* the proposal
* @param gitblitUrl
- * the url of your gitblit instance
+ * the url of your gitblit instance to send an email to
+ * administrators
* @return true if the proposal was submitted
*/
public boolean submitFederationProposal(FederationProposal proposal, String gitblitUrl) {
// convert proposal to json
- Gson gson = new GsonBuilder().setPrettyPrinting().create();
- String json = gson.toJson(proposal);
+ String json = JsonUtils.toJsonString(proposal);
try {
// make the proposals folder
@@ -1091,10 +1052,10 @@
&& file.getName().toLowerCase().endsWith(Constants.PROPOSAL_EXT);
}
});
- Gson gson = new Gson();
for (File file : files) {
String json = com.gitblit.utils.FileUtils.readContent(file, null);
- FederationProposal proposal = gson.fromJson(json, FederationProposal.class);
+ FederationProposal proposal = JsonUtils.fromJsonString(json,
+ FederationProposal.class);
list.add(proposal);
}
}
@@ -1236,7 +1197,7 @@
*
* @param settings
*/
- public void configureContext(IStoredSettings settings) {
+ public void configureContext(IStoredSettings settings, boolean startFederation) {
logger.info("Reading configuration from " + settings.toString());
this.settings = settings;
repositoriesFolder = new File(settings.getString(Keys.git.repositoriesFolder, "git"));
@@ -1265,12 +1226,14 @@
loginService = new FileUserService(realmFile);
}
setUserService(loginService);
- configureFederation();
mailExecutor = new MailExecutor(settings);
if (mailExecutor.isReady()) {
scheduledExecutor.scheduleAtFixedRate(mailExecutor, 1, 2, TimeUnit.MINUTES);
} else {
logger.warn("Mail server is not properly configured. Mail services disabled.");
+ }
+ if (startFederation) {
+ configureFederation();
}
}
@@ -1285,7 +1248,7 @@
if (settings == null) {
// Gitblit WAR is running in a servlet container
WebXmlSettings webxmlSettings = new WebXmlSettings(contextEvent.getServletContext());
- configureContext(webxmlSettings);
+ configureContext(webxmlSettings, true);
}
}
--
Gitblit v1.9.1