From 5e88265c36b93f63a68bcafb373434a9fbbaa42e Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 19 Oct 2012 22:47:34 -0400
Subject: [PATCH] Construct access permissions from already retrieved data

---
 src/com/gitblit/client/GitblitClient.java     |   21 +++++++++++++++++----
 src/com/gitblit/client/RepositoriesPanel.java |   12 ++++--------
 2 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/src/com/gitblit/client/GitblitClient.java b/src/com/gitblit/client/GitblitClient.java
index 9815cbe..9e31c79 100644
--- a/src/com/gitblit/client/GitblitClient.java
+++ b/src/com/gitblit/client/GitblitClient.java
@@ -30,6 +30,7 @@
 import com.gitblit.Constants;
 import com.gitblit.Constants.AccessRestrictionType;
 import com.gitblit.Constants.AuthorizationControl;
+import com.gitblit.Constants.RegistrantType;
 import com.gitblit.GitBlitException.ForbiddenException;
 import com.gitblit.GitBlitException.NotAllowedException;
 import com.gitblit.GitBlitException.UnauthorizedException;
@@ -493,8 +494,14 @@
 		return usernames;
 	}
 	
-	public List<RegistrantAccessPermission> getUserAccessPermissions(RepositoryModel repository) throws IOException {
-		return RpcUtils.getRepositoryMemberPermissions(repository, url, account, password);
+	public List<RegistrantAccessPermission> getUserAccessPermissions(RepositoryModel repository) {
+		List<RegistrantAccessPermission> list = new ArrayList<RegistrantAccessPermission>();
+		for (UserModel user : allUsers) {
+			if (user.hasRepositoryPermission(repository.name)) {
+				list.add(new RegistrantAccessPermission(user.username, user.permissions.get(repository.name), RegistrantType.USER));
+			}
+		}
+		return list;
 	}
 
 	public boolean setUserAccessPermissions(RepositoryModel repository, List<RegistrantAccessPermission> permissions) throws IOException {
@@ -524,8 +531,14 @@
 		return teamnames;
 	}
 	
-	public List<RegistrantAccessPermission> getTeamAccessPermissions(RepositoryModel repository) throws IOException {
-		return RpcUtils.getRepositoryTeamPermissions(repository, url, account, password);
+	public List<RegistrantAccessPermission> getTeamAccessPermissions(RepositoryModel repository) {
+		List<RegistrantAccessPermission> list = new ArrayList<RegistrantAccessPermission>();
+		for (TeamModel team : allTeams) {
+			if (team.hasRepositoryPermission(repository.name)) {
+				list.add(new RegistrantAccessPermission(team.name, team.permissions.get(repository.name), RegistrantType.TEAM));
+			}
+		}
+		return list;
 	}
 
 	public boolean setTeamAccessPermissions(RepositoryModel repository, List<RegistrantAccessPermission> permissions) throws IOException {
diff --git a/src/com/gitblit/client/RepositoriesPanel.java b/src/com/gitblit/client/RepositoriesPanel.java
index 972dda1..28b3959 100644
--- a/src/com/gitblit/client/RepositoriesPanel.java
+++ b/src/com/gitblit/client/RepositoriesPanel.java
@@ -453,14 +453,10 @@
 				repository);
 		dialog.setLocationRelativeTo(RepositoriesPanel.this);
 		List<String> usernames = gitblit.getUsernames();
-		try {
-			List<RegistrantAccessPermission> members = gitblit.getUserAccessPermissions(repository);
-			dialog.setUsers(repository.owner, usernames, members);
-			dialog.setTeams(gitblit.getTeamnames(), gitblit.getTeamAccessPermissions(repository));
-			dialog.setRepositories(gitblit.getRepositories());
-		} catch (IOException e) {
-			//  TODO
-		}
+		List<RegistrantAccessPermission> members = gitblit.getUserAccessPermissions(repository);
+		dialog.setUsers(repository.owner, usernames, members);
+		dialog.setTeams(gitblit.getTeamnames(), gitblit.getTeamAccessPermissions(repository));
+		dialog.setRepositories(gitblit.getRepositories());
 		dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets);
 		List<String> allLocalBranches = new ArrayList<String>();
 		allLocalBranches.add(Constants.DEFAULT_BRANCH);

--
Gitblit v1.9.1