From 8f73a7cc630bb61d088c7cdad30a6708870184ee Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 14 Sep 2011 09:13:51 -0400
Subject: [PATCH] Implemented Federation Sets. Documentation.

---
 src/com/gitblit/FederationServlet.java |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/src/com/gitblit/FederationServlet.java b/src/com/gitblit/FederationServlet.java
index 86aadb0..a84e90c 100644
--- a/src/com/gitblit/FederationServlet.java
+++ b/src/com/gitblit/FederationServlet.java
@@ -225,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));
@@ -253,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