From eecaad8b8e2c447429c31a01d49260ddd6b4ee03 Mon Sep 17 00:00:00 2001
From: Paul Martin <paul@paulsputer.com>
Date: Sat, 16 Apr 2016 17:35:32 -0400
Subject: [PATCH] Proof of concept #1026

---
 src/main/java/com/gitblit/manager/FilestoreManager.java |   29 ++++++++++++++++++++++++-----
 1 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/gitblit/manager/FilestoreManager.java b/src/main/java/com/gitblit/manager/FilestoreManager.java
index fe65e21..6ed7c92 100644
--- a/src/main/java/com/gitblit/manager/FilestoreManager.java
+++ b/src/main/java/com/gitblit/manager/FilestoreManager.java
@@ -77,7 +77,7 @@
 	private final Logger logger = LoggerFactory.getLogger(getClass());
 
 	private final IRuntimeManager runtimeManager;
-
+	
 	private final IStoredSettings settings;
 
 	public static final int UNDEFINED_SIZE = -1;
@@ -92,8 +92,7 @@
 
 
 	@Inject
-	FilestoreManager(
-			IRuntimeManager runtimeManager) {
+	public FilestoreManager(IRuntimeManager runtimeManager) {
 		this.runtimeManager = runtimeManager;
 		this.settings = runtimeManager.getSettings();
 	}
@@ -324,8 +323,28 @@
 	}
 
 	@Override
-	public List<FilestoreModel> getAllObjects() {
-		return new ArrayList<FilestoreModel>(fileCache.values());
+	public List<FilestoreModel> getAllObjects(List<RepositoryModel> viewableRepositories) {
+		
+		List<String> viewableRepositoryNames = new ArrayList<String>(viewableRepositories.size());
+		
+		for (RepositoryModel repository : viewableRepositories) {
+			viewableRepositoryNames.add(repository.name);
+		}
+		
+		if (viewableRepositoryNames.size() == 0) {
+			return null;
+		}
+		
+		final Collection<FilestoreModel> allFiles = fileCache.values();
+		List<FilestoreModel> userViewableFiles = new ArrayList<FilestoreModel>(allFiles.size());
+		
+		for (FilestoreModel file : allFiles) {
+			if (file.isInRepositoryList(viewableRepositoryNames)) {
+				userViewableFiles.add(file);
+			}
+		}
+		
+		return userViewableFiles;				
 	}
 
 	@Override

--
Gitblit v1.9.1