From bcc616b8e425f73e7abc6799f23445c1e411463d Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 14 Oct 2011 17:05:23 -0400
Subject: [PATCH] Rpc Client create/edit user and repository now fully functional.

---
 src/com/gitblit/client/GitblitPanel.java |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/src/com/gitblit/client/GitblitPanel.java b/src/com/gitblit/client/GitblitPanel.java
index ec7385e..a6be156 100644
--- a/src/com/gitblit/client/GitblitPanel.java
+++ b/src/com/gitblit/client/GitblitPanel.java
@@ -517,9 +517,17 @@
 	 * 
 	 */
 	protected void createRepository() {
-		EditRepositoryDialog dialog = new EditRepositoryDialog(allUsers);
+		List<String> usernames = new ArrayList<String>();
+		for (UserModel user : this.allUsers) {
+			usernames.add(user.username);
+		}
+		Collections.sort(usernames);
+		EditRepositoryDialog dialog = new EditRepositoryDialog();
+		dialog.setUsers(null, usernames, null);
+		dialog.setRepositories(allRepositories);
 		dialog.setVisible(true);
 		final RepositoryModel newRepository = dialog.getRepository();
+		final List<String> permittedUsers = dialog.getPermittedUsers();
 		if (newRepository == null) {
 			return;
 		}
@@ -529,7 +537,14 @@
 
 			@Override
 			protected Boolean doInBackground() throws IOException {
-				return RpcUtils.createRepository(newRepository, url, account, password);
+				boolean success = true;
+				success &= RpcUtils.createRepository(newRepository, url, account, password);
+				if (permittedUsers.size() > 0) {
+					// if new repository has named members, set them
+					success &= RpcUtils.setRepositoryMembers(newRepository, permittedUsers, url,
+							account, password);
+				}
+				return success;
 			}
 
 			@Override
@@ -538,6 +553,9 @@
 					boolean success = get();
 					if (success) {
 						refreshRepositoriesTable();
+						if (permittedUsers.size() > 0) {
+							refreshUsersTable();
+						}
 					} else {
 						String msg = MessageFormat.format(
 								"Failed to execute request \"{0}\" for repository \"{1}\".",
@@ -564,17 +582,22 @@
 	 * @param repository
 	 */
 	protected void editRepository(final RepositoryModel repository) {
-		EditRepositoryDialog dialog = new EditRepositoryDialog(repository, allUsers);
+		EditRepositoryDialog dialog = new EditRepositoryDialog(repository);
+		List<String> members = new ArrayList<String>();
 		List<String> usernames = new ArrayList<String>();
 		for (UserModel user : this.allUsers) {
 			usernames.add(user.username);
+			if (user.repositories.contains(repository.name)) {
+				members.add(user.username);
+			}
 		}
 		Collections.sort(usernames);
-		dialog.setUsers(usernames, null);
+		dialog.setUsers(repository.owner, usernames, members);
 		dialog.setFederationSets(settings.getStrings(Keys.federation.sets),
 				repository.federationSets);
 		dialog.setVisible(true);
 		final RepositoryModel revisedRepository = dialog.getRepository();
+		final List<String> permittedUsers = dialog.getPermittedUsers();
 		if (revisedRepository == null) {
 			return;
 		}
@@ -584,8 +607,13 @@
 
 			@Override
 			protected Boolean doInBackground() throws IOException {
-				return RpcUtils.updateRepository(repository.name, revisedRepository, url, account,
+				boolean success = true;
+				success &= RpcUtils.updateRepository(repository.name, revisedRepository, url,
+						account, password);
+				// always set the repository members
+				success &= RpcUtils.setRepositoryMembers(repository, permittedUsers, url, account,
 						password);
+				return success;
 			}
 
 			@Override
@@ -594,6 +622,7 @@
 					boolean success = get();
 					if (success) {
 						refreshRepositoriesTable();
+						refreshUsersTable();
 					} else {
 						String msg = MessageFormat.format(
 								"Failed to execute request \"{0}\" for repository \"{1}\".",
@@ -666,6 +695,7 @@
 	 */
 	protected void createUser() {
 		EditUserDialog dialog = new EditUserDialog(settings);
+		dialog.setUsers(allUsers);
 		dialog.setRepositories(allRepositories, null);
 		dialog.setVisible(true);
 		final UserModel newUser = dialog.getUser();

--
Gitblit v1.9.1