From 9910e56056d2f2639d2783257ae9f1bf46aaee58 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 2 Jan 2013 16:35:16 -0500
Subject: Fixed fork origin determination if !git.cacheRepositoryList
 (issue-182)

---
 src/com/gitblit/GitBlit.java | 25 ++++++++++++++++++++++---
 1 file changed, 22 insertions(+), 3 deletions(-)

(limited to 'src/com/gitblit')

diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index b497737f..3dcd5a09 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -1760,20 +1760,39 @@ public class GitBlit implements ServletContextListener {
 	 */
 	public ForkModel getForkNetwork(String repository) {
 		if (settings.getBoolean(Keys.git.cacheRepositoryList, true)) {
-			// find the root
+			// find the root, cached
 			RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
 			while (model.originRepository != null) {
 				model = repositoryListCache.get(model.originRepository);
 			}
+			ForkModel root = getForkModelFromCache(model.name);
+			return root;
+		} else {
+			// find the root, non-cached
+			RepositoryModel model = getRepositoryModel(repository.toLowerCase());
+			while (model.originRepository != null) {
+				model = getRepositoryModel(model.originRepository);
+			}
 			ForkModel root = getForkModel(model.name);
 			return root;
 		}
-		return null;
 	}
 	
-	private ForkModel getForkModel(String repository) {
+	private ForkModel getForkModelFromCache(String repository) {
 		RepositoryModel model = repositoryListCache.get(repository.toLowerCase());
 		ForkModel fork = new ForkModel(model);
+		if (!ArrayUtils.isEmpty(model.forks)) {
+			for (String aFork : model.forks) {
+				ForkModel fm = getForkModelFromCache(aFork);
+				fork.forks.add(fm);
+			}
+		}
+		return fork;
+	}
+	
+	private ForkModel getForkModel(String repository) {
+		RepositoryModel model = getRepositoryModel(repository.toLowerCase());
+		ForkModel fork = new ForkModel(model);
 		if (!ArrayUtils.isEmpty(model.forks)) {
 			for (String aFork : model.forks) {
 				ForkModel fm = getForkModel(aFork);
-- 
cgit v1.2.3