瀏覽代碼

Rewrite fix without the additional List

This also removes the additional Set. What changes is that the order of
the repositories is kept, but the resulting list will have user and team
permissions intertwined.
pull/1328/merge
Florian Zschocke 1 年之前
父節點
當前提交
f2fc9cc57b
共有 1 個文件被更改,包括 10 次插入17 次删除
  1. 10
    17
      src/main/java/com/gitblit/models/UserModel.java

+ 10
- 17
src/main/java/com/gitblit/models/UserModel.java 查看文件

@@ -110,7 +110,7 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel>
* @return the user's list of permissions
*/
public List<RegistrantAccessPermission> getRepositoryPermissions() {
List<RegistrantAccessPermission> list = new ArrayList<RegistrantAccessPermission>();
List<RegistrantAccessPermission> list = new ArrayList<>();
if (canAdmin()) {
// user has REWIND access to all repositories
return list;
@@ -135,8 +135,6 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel>
Collections.sort(list);
// include immutable team permissions, being careful to preserve order
Set<RegistrantAccessPermission> set = new LinkedHashSet<RegistrantAccessPermission>(list);
ArrayList<RegistrantAccessPermission> arrayList = new ArrayList<RegistrantAccessPermission>(list);
for (TeamModel team : teams) {
for (RegistrantAccessPermission teamPermission : team.getRepositoryPermissions()) {
// we can not change an inherited team permission, though we can override
@@ -144,22 +142,17 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel>
teamPermission.permissionType = PermissionType.TEAM;
teamPermission.source = team.name;
teamPermission.mutable = false;
if(arrayList.contains(teamPermission) && arrayList.get(arrayList.indexOf(teamPermission)).permissionType != PermissionType.REGEX){
//checking either to replace permission in set or not
if(teamPermission.permission.compareTo(arrayList.get(arrayList.indexOf(teamPermission)).permission) > 0 ){
arrayList.remove(teamPermission);
arrayList.add(teamPermission);
set.remove(teamPermission);
set.add(teamPermission);
}
}
else{
arrayList.add(teamPermission);
}
set.add(teamPermission);
int i = list.indexOf(teamPermission);
if (i < 0) list.add(teamPermission);
else {
RegistrantAccessPermission lp = list.get(i);
if (teamPermission.permission.exceeds(lp.permission)) {
list.set(i, teamPermission);
}
}
}
}
return new ArrayList<RegistrantAccessPermission>(set);
return list;
}
/**

Loading…
取消
儲存