From 2d48e28bf1068b20129b2e3d5b96ecaff48f9f2f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 23 Oct 2012 22:27:56 -0400
Subject: [PATCH] Implemented exclusion (X) permission

---
 src/com/gitblit/client/GitblitClient.java |   28 +++++++++++++++++++++++-----
 1 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/client/GitblitClient.java b/src/com/gitblit/client/GitblitClient.java
index 9815cbe..4620fef 100644
--- a/src/com/gitblit/client/GitblitClient.java
+++ b/src/com/gitblit/client/GitblitClient.java
@@ -28,17 +28,19 @@
 import java.util.TreeSet;
 
 import com.gitblit.Constants;
+import com.gitblit.Constants.AccessPermission;
 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;
 import com.gitblit.GitBlitException.UnknownRequestException;
 import com.gitblit.Keys;
-import com.gitblit.models.RegistrantAccessPermission;
 import com.gitblit.models.FederationModel;
 import com.gitblit.models.FeedEntryModel;
 import com.gitblit.models.FeedModel;
+import com.gitblit.models.RegistrantAccessPermission;
 import com.gitblit.models.RepositoryModel;
 import com.gitblit.models.ServerSettings;
 import com.gitblit.models.ServerStatus;
@@ -493,8 +495,16 @@
 		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)) {
+				AccessPermission ap = user.getRepositoryPermission(repository);
+				boolean isExplicit = user.hasExplicitRepositoryPermission(repository.name);
+				list.add(new RegistrantAccessPermission(user.username, ap, isExplicit, RegistrantType.USER));
+			}
+		}
+		return list;
 	}
 
 	public boolean setUserAccessPermissions(RepositoryModel repository, List<RegistrantAccessPermission> permissions) throws IOException {
@@ -524,8 +534,16 @@
 		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)) {
+				AccessPermission ap = team.getRepositoryPermission(repository);
+				boolean isExplicit = team.hasExplicitRepositoryPermission(repository.name);
+				list.add(new RegistrantAccessPermission(team.name, ap, isExplicit, RegistrantType.TEAM));
+			}
+		}
+		return list;
 	}
 
 	public boolean setTeamAccessPermissions(RepositoryModel repository, List<RegistrantAccessPermission> permissions) throws IOException {

--
Gitblit v1.9.1