diff options
Diffstat (limited to 'java/com/google/gerrit/server/restapi/group/ListMembers.java')
-rw-r--r-- | java/com/google/gerrit/server/restapi/group/ListMembers.java | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/java/com/google/gerrit/server/restapi/group/ListMembers.java b/java/com/google/gerrit/server/restapi/group/ListMembers.java index 5b3e8dc42c..87b00c17d5 100644 --- a/java/com/google/gerrit/server/restapi/group/ListMembers.java +++ b/java/com/google/gerrit/server/restapi/group/ListMembers.java @@ -80,13 +80,18 @@ public class ListMembers implements RestReadView<GroupResource> { throws PermissionBackendException { Optional<InternalGroup> group = groupCache.get(groupUuid); if (group.isPresent()) { - InternalGroupDescription internalGroup = new InternalGroupDescription(group.get()); - GroupControl groupControl = groupControlFactory.controlFor(internalGroup); - return getTransitiveMembers(internalGroup, groupControl); + return getTransitiveMembers(group.get()); } return ImmutableList.of(); } + public List<AccountInfo> getTransitiveMembers(InternalGroup group) + throws PermissionBackendException { + InternalGroupDescription internalGroup = new InternalGroupDescription(group); + GroupControl groupControl = groupControlFactory.controlFor(internalGroup); + return getTransitiveMembers(internalGroup, groupControl); + } + private List<AccountInfo> getTransitiveMembers( GroupDescription.Internal group, GroupControl groupControl) throws PermissionBackendException { @@ -110,6 +115,14 @@ public class ListMembers implements RestReadView<GroupResource> { return toAccountInfos(directMembers); } + protected List<AccountInfo> getMembers(InternalGroup group) throws PermissionBackendException { + if (recursive) { + return getTransitiveMembers(group); + } else { + return getDirectMembers(group); + } + } + private List<AccountInfo> toAccountInfos(Set<Account.Id> members) throws PermissionBackendException { AccountLoader accountLoader = accountLoaderFactory.create(true); |