From 9b72a2e674f7cbc320b0b72fc71ad813d296ab12 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Thu, 22 Sep 2011 12:04:43 -0400
Subject: [PATCH] Updated to JGit 1.1.0 and reverse-sort library dependencies.

---
 src/com/gitblit/FederationServlet.java |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/com/gitblit/FederationServlet.java b/src/com/gitblit/FederationServlet.java
index b8b6408..a84e90c 100644
--- a/src/com/gitblit/FederationServlet.java
+++ b/src/com/gitblit/FederationServlet.java
@@ -117,9 +117,10 @@
 			return;
 		}
 
-		String uuid = GitBlit.getString(Keys.federation.uuid, "");
+		String uuid = GitBlit.getString(Keys.federation.passphrase, "");
 		if (StringUtils.isEmpty(uuid)) {
-			logger.warn(Keys.federation.uuid + " is not properly set!  Federation request denied.");
+			logger.warn(Keys.federation.passphrase
+					+ " is not properly set!  Federation request denied.");
 			response.sendError(HttpServletResponse.SC_FORBIDDEN);
 			return;
 		}
@@ -224,6 +225,12 @@
 
 		Object result = null;
 		if (FederationRequest.PULL_REPOSITORIES.equals(reqType)) {
+			// build a reverse-lookup for token->federation set name
+			Map<String, String> federationSets = new HashMap<String, String>();
+			for (String set : GitBlit.getStrings(Keys.federation.sets)) {
+				federationSets.put(GitBlit.self().getFederationToken(set), set);
+			}
+
 			// Determine the Gitblit clone url
 			StringBuilder sb = new StringBuilder();
 			sb.append(HttpUtils.getHostURL(request));
@@ -252,7 +259,17 @@
 					}
 					break;
 				}
-				repositories.put(url, model);
+
+				if (federationSets.containsKey(token)) {
+					// include repositories only for federation set
+					String set = federationSets.get(token);
+					if (model.federationSets.contains(set)) {
+						repositories.put(url, model);
+					}
+				} else {
+					// standard federation token for ALL
+					repositories.put(url, model);
+				}
 			}
 			result = repositories;
 		} else {

--
Gitblit v1.9.1