Simplify code related to GroupDetailFactory
Change-Id: I05c9ad209897bdbd48f116243ddd66a5c6e13eb8
This commit is contained in:
@@ -19,16 +19,19 @@ import com.google.gerrit.reviewdb.client.AccountGroupMember;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GroupDetail {
|
public class GroupDetail {
|
||||||
public List<AccountGroupMember> members;
|
private List<AccountGroupMember> members;
|
||||||
public List<AccountGroupById> includes;
|
private List<AccountGroupById> includes;
|
||||||
|
|
||||||
public GroupDetail() {}
|
public GroupDetail(List<AccountGroupMember> members, List<AccountGroupById> includes) {
|
||||||
|
this.members = members;
|
||||||
public void setMembers(List<AccountGroupMember> m) {
|
this.includes = includes;
|
||||||
members = m;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIncludes(List<AccountGroupById> i) {
|
public List<AccountGroupMember> getMembers() {
|
||||||
includes = i;
|
return members;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<AccountGroupById> getIncludes() {
|
||||||
|
return includes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
package com.google.gerrit.server.account;
|
package com.google.gerrit.server.account;
|
||||||
|
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.gerrit.common.data.GroupDetail;
|
import com.google.gerrit.common.data.GroupDetail;
|
||||||
import com.google.gerrit.common.errors.NoSuchGroupException;
|
import com.google.gerrit.common.errors.NoSuchGroupException;
|
||||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||||
@@ -50,10 +51,9 @@ public class GroupDetailFactory implements Callable<GroupDetail> {
|
|||||||
@Override
|
@Override
|
||||||
public GroupDetail call() throws OrmException, NoSuchGroupException {
|
public GroupDetail call() throws OrmException, NoSuchGroupException {
|
||||||
control = groupControl.validateFor(groupId);
|
control = groupControl.validateFor(groupId);
|
||||||
GroupDetail detail = new GroupDetail();
|
List<AccountGroupMember> members = loadMembers();
|
||||||
detail.setMembers(loadMembers());
|
List<AccountGroupById> includes = loadIncludes();
|
||||||
detail.setIncludes(loadIncludes());
|
return new GroupDetail(members, includes);
|
||||||
return detail;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<AccountGroupMember> loadMembers() throws OrmException {
|
private List<AccountGroupMember> loadMembers() throws OrmException {
|
||||||
@@ -67,14 +67,14 @@ public class GroupDetailFactory implements Callable<GroupDetail> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<AccountGroupById> loadIncludes() throws OrmException {
|
private List<AccountGroupById> loadIncludes() throws OrmException {
|
||||||
List<AccountGroupById> groups = new ArrayList<>();
|
if (!control.canSeeGroup()) {
|
||||||
|
return ImmutableList.of();
|
||||||
for (AccountGroupById m : db.accountGroupById().byGroup(groupId)) {
|
|
||||||
if (control.canSeeGroup()) {
|
|
||||||
groups.add(m);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<AccountGroupById> groups = new ArrayList<>();
|
||||||
|
for (AccountGroupById m : db.accountGroupById().byGroup(groupId)) {
|
||||||
|
groups.add(m);
|
||||||
|
}
|
||||||
return groups;
|
return groups;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -104,17 +104,13 @@ public class GroupMembers {
|
|||||||
final GroupDetail groupDetail = groupDetailFactory.create(group.getId()).call();
|
final GroupDetail groupDetail = groupDetailFactory.create(group.getId()).call();
|
||||||
|
|
||||||
final Set<Account> members = new HashSet<>();
|
final Set<Account> members = new HashSet<>();
|
||||||
if (groupDetail.members != null) {
|
for (AccountGroupMember member : groupDetail.getMembers()) {
|
||||||
for (AccountGroupMember member : groupDetail.members) {
|
members.add(accountCache.get(member.getAccountId()).getAccount());
|
||||||
members.add(accountCache.get(member.getAccountId()).getAccount());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (groupDetail.includes != null) {
|
for (AccountGroupById groupInclude : groupDetail.getIncludes()) {
|
||||||
for (AccountGroupById groupInclude : groupDetail.includes) {
|
final AccountGroup includedGroup = groupCache.get(groupInclude.getIncludeUUID());
|
||||||
final AccountGroup includedGroup = groupCache.get(groupInclude.getIncludeUUID());
|
if (includedGroup != null && !seen.contains(includedGroup.getGroupUUID())) {
|
||||||
if (includedGroup != null && !seen.contains(includedGroup.getGroupUUID())) {
|
members.addAll(listAccounts(includedGroup.getGroupUUID(), project, seen));
|
||||||
members.addAll(listAccounts(includedGroup.getGroupUUID(), project, seen));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return members;
|
return members;
|
||||||
|
@@ -102,20 +102,16 @@ public class ListMembers implements RestReadView<GroupResource> {
|
|||||||
return Collections.emptyMap();
|
return Collections.emptyMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (groupDetail.members != null) {
|
for (AccountGroupMember m : groupDetail.getMembers()) {
|
||||||
for (AccountGroupMember m : groupDetail.members) {
|
if (!members.containsKey(m.getAccountId())) {
|
||||||
if (!members.containsKey(m.getAccountId())) {
|
members.put(m.getAccountId(), accountLoader.get(m.getAccountId()));
|
||||||
members.put(m.getAccountId(), accountLoader.get(m.getAccountId()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recursive) {
|
if (recursive) {
|
||||||
if (groupDetail.includes != null) {
|
for (AccountGroupById includedGroup : groupDetail.getIncludes()) {
|
||||||
for (AccountGroupById includedGroup : groupDetail.includes) {
|
if (!seenGroups.contains(includedGroup.getIncludeUUID())) {
|
||||||
if (!seenGroups.contains(includedGroup.getIncludeUUID())) {
|
members.putAll(getMembers(includedGroup.getIncludeUUID(), seenGroups));
|
||||||
members.putAll(getMembers(includedGroup.getIncludeUUID(), seenGroups));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user