From 6651a8e96bdc51b0c558b88e1c77fcfbed1837da Mon Sep 17 00:00:00 2001 From: James Moger Date: Sun, 8 Jun 2014 10:30:39 -0400 Subject: Move repository ownership to the UserModel and prepare for project ownership --- .../com/gitblit/client/EditRepositoryDialog.java | 6 ++++-- .../java/com/gitblit/client/EditUserDialog.java | 4 ++-- .../java/com/gitblit/client/GitblitClient.java | 24 +++++++++++++++++----- .../java/com/gitblit/client/RepositoriesPanel.java | 7 ++++--- .../com/gitblit/client/RepositoriesTableModel.java | 7 +------ 5 files changed, 30 insertions(+), 18 deletions(-) (limited to 'src/main/java/com/gitblit/client') diff --git a/src/main/java/com/gitblit/client/EditRepositoryDialog.java b/src/main/java/com/gitblit/client/EditRepositoryDialog.java index ef665d10..a7cf4510 100644 --- a/src/main/java/com/gitblit/client/EditRepositoryDialog.java +++ b/src/main/java/com/gitblit/client/EditRepositoryDialog.java @@ -579,8 +579,6 @@ public class EditRepositoryDialog extends JDialog { repository.name = rname; repository.description = descriptionField.getText(); - repository.owners.clear(); - repository.owners.addAll(ownersPalette.getSelections()); repository.HEAD = headRefField.getSelectedItem() == null ? null : headRefField.getSelectedItem().toString(); repository.gcPeriod = (Integer) gcPeriod.getSelectedItem(); @@ -722,6 +720,10 @@ public class EditRepositoryDialog extends JDialog { return teamsPalette.getPermissions(); } + public List getOwners() { + return ownersPalette.getSelections(); + } + public void setCustomFields(RepositoryModel repository, Map customFields) { customFieldsPanel.removeAll(); customTextfields = new ArrayList(); diff --git a/src/main/java/com/gitblit/client/EditUserDialog.java b/src/main/java/com/gitblit/client/EditUserDialog.java index 676916b2..4d0c1c8e 100644 --- a/src/main/java/com/gitblit/client/EditUserDialog.java +++ b/src/main/java/com/gitblit/client/EditUserDialog.java @@ -393,7 +393,7 @@ public class EditUserDialog extends JDialog { List restricted = new ArrayList(); for (RepositoryModel repo : repositories) { // exclude Owner or personal repositories - if (!repo.isOwner(username) && !repo.isUsersPersonalRepository(username)) { + if (!user.isOwner(repo)) { if (repo.accessRestriction.exceeds(AccessRestrictionType.NONE) && repo.authorizationControl.equals(AuthorizationControl.NAMED)) { restricted.add(repo.name); @@ -456,7 +456,7 @@ public class EditUserDialog extends JDialog { permission.mutable = false; continue; } - boolean isOwner = rm.isOwner(username); + boolean isOwner = user.isOwner(rm); if (isOwner) { permission.permissionType = PermissionType.OWNER; permission.mutable = false; diff --git a/src/main/java/com/gitblit/client/GitblitClient.java b/src/main/java/com/gitblit/client/GitblitClient.java index 66625a8e..1477dac7 100644 --- a/src/main/java/com/gitblit/client/GitblitClient.java +++ b/src/main/java/com/gitblit/client/GitblitClient.java @@ -162,7 +162,17 @@ public class GitblitClient implements Serializable { } public boolean isOwner(RepositoryModel model) { - return model.isOwner(account); + return getUser(account).isOwner(model); + } + + public List getOwners(RepositoryModel model) { + List list = new ArrayList(); + for (UserModel user : allUsers) { + if (user.isOwner(model)) { + list.add(user.username); + } + } + return list; } public String getURL(String action, String repository, String objectId) { @@ -529,10 +539,9 @@ public class GitblitClient implements Serializable { } } - // TODO reconsider ownership as a user property // manually specify personal repository ownerships for (RepositoryModel rm : allRepositories) { - if (rm.isUsersPersonalRepository(user.username) || rm.isOwner(user.username)) { + if (user.isOwner(rm)) { RegistrantAccessPermission rp = new RegistrantAccessPermission(rm.name, AccessPermission.REWIND, PermissionType.OWNER, RegistrantType.REPOSITORY, null, false); // user may be owner of a repository to which they've inherited @@ -660,13 +669,18 @@ public class GitblitClient implements Serializable { public boolean updateRepository(String name, RepositoryModel repository, List userPermissions) throws IOException { - return updateRepository(name, repository, userPermissions, null); + return updateRepository(name, repository, null, userPermissions, null); } - public boolean updateRepository(String name, RepositoryModel repository, + public boolean updateRepository(String name, RepositoryModel repository, List owners, List userPermissions, List teamPermissions) throws IOException { boolean success = true; success &= RpcUtils.updateRepository(name, repository, url, account, password); + // set the repository owners + if (owners != null) { + success &= RpcUtils.setRepositoryOwners(repository, owners, url, account, password); + } + // set the repository members if (userPermissions != null) { success &= RpcUtils.setRepositoryMemberPermissions(repository, userPermissions, url, account, diff --git a/src/main/java/com/gitblit/client/RepositoriesPanel.java b/src/main/java/com/gitblit/client/RepositoriesPanel.java index 0fab934d..7e3d96ac 100644 --- a/src/main/java/com/gitblit/client/RepositoriesPanel.java +++ b/src/main/java/com/gitblit/client/RepositoriesPanel.java @@ -194,7 +194,6 @@ public abstract class RepositoriesPanel extends JPanel { setRepositoryRenderer(RepositoriesTableModel.Columns.Name, nameRenderer, -1); setRepositoryRenderer(RepositoriesTableModel.Columns.Indicators, typeRenderer, 100); - setRepositoryRenderer(RepositoriesTableModel.Columns.Owner, ownerRenderer, -1); setRepositoryRenderer(RepositoriesTableModel.Columns.Size, sizeRenderer, 60); table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @@ -466,7 +465,8 @@ public abstract class RepositoriesPanel extends JPanel { dialog.setLocationRelativeTo(RepositoriesPanel.this); List usernames = gitblit.getUsernames(); List members = gitblit.getUserAccessPermissions(repository); - dialog.setUsers(new ArrayList(repository.owners), usernames, members); + List owners = gitblit.getOwners(repository); + dialog.setUsers(owners, usernames, members); dialog.setTeams(gitblit.getTeamnames(), gitblit.getTeamAccessPermissions(repository)); dialog.setRepositories(gitblit.getRepositories()); dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets); @@ -486,6 +486,7 @@ public abstract class RepositoriesPanel extends JPanel { final RepositoryModel revisedRepository = dialog.getRepository(); final List permittedUsers = dialog.getUserAccessPermissions(); final List permittedTeams = dialog.getTeamAccessPermissions(); + final List newOwners = dialog.getOwners(); if (revisedRepository == null) { return; } @@ -494,7 +495,7 @@ public abstract class RepositoriesPanel extends JPanel { @Override protected Boolean doRequest() throws IOException { - boolean success = gitblit.updateRepository(repository.name, revisedRepository, + boolean success = gitblit.updateRepository(repository.name, revisedRepository, newOwners, permittedUsers, permittedTeams); if (success) { gitblit.refreshRepositories(); diff --git a/src/main/java/com/gitblit/client/RepositoriesTableModel.java b/src/main/java/com/gitblit/client/RepositoriesTableModel.java index 0d26e42c..f93f004a 100644 --- a/src/main/java/com/gitblit/client/RepositoriesTableModel.java +++ b/src/main/java/com/gitblit/client/RepositoriesTableModel.java @@ -23,7 +23,6 @@ import java.util.List; import javax.swing.table.AbstractTableModel; import com.gitblit.models.RepositoryModel; -import com.gitblit.utils.ArrayUtils; /** * Table model of a list of repositories. @@ -38,7 +37,7 @@ public class RepositoriesTableModel extends AbstractTableModel { List list; enum Columns { - Name, Description, Owner, Indicators, Last_Change, Size; + Name, Description, Indicators, Last_Change, Size; @Override public String toString() { @@ -73,8 +72,6 @@ public class RepositoriesTableModel extends AbstractTableModel { return Translation.get("gb.name"); case Description: return Translation.get("gb.description"); - case Owner: - return Translation.get("gb.owner"); case Last_Change: return Translation.get("gb.lastChange"); case Size: @@ -112,8 +109,6 @@ public class RepositoriesTableModel extends AbstractTableModel { return model; case Description: return model.description; - case Owner: - return ArrayUtils.toString(model.owners); case Indicators: return model; case Last_Change: -- cgit v1.2.3