in src/main/java/com/googlesource/gerrit/plugins/serviceuser/ServiceUserResolver.java [100:163]
List<AccountInfo> listOwners(ServiceUserInfo serviceUser)
throws RestApiException, RuntimeException {
if (serviceUser.owner == null) {
return Collections.emptyList();
}
RequestContext context =
new RequestContext() {
@Override
public CurrentUser getUser() {
return new CurrentUser() {
@Override
public GroupMembership getEffectiveGroups() {
return new GroupMembership() {
@Override
public Set<AccountGroup.UUID> intersection(Iterable<AccountGroup.UUID> groupIds) {
return null;
}
@Override
public Set<AccountGroup.UUID> getKnownGroups() {
return null;
}
@Override
public boolean containsAnyOf(Iterable<AccountGroup.UUID> groupIds) {
return true;
}
@Override
public boolean contains(AccountGroup.UUID groupId) {
return true;
}
};
}
@Override
public Object getCacheKey() {
return null;
}
};
}
};
RequestContext old = tl.setContext(context);
try {
GroupDescription.Basic group = groupResolver.parseId(serviceUser.owner.id);
GroupControl ctl = groupControlFactory.controlFor(group);
ListMembers lm = listMembers.get();
GroupResource rsrc = new GroupResource(ctl);
lm.setRecursive(true);
List<AccountInfo> owners = new ArrayList<>();
try {
for (AccountInfo a : lm.apply(rsrc).value()) {
owners.add(a);
}
} catch (Exception e) {
throw asRestApiException("Cannot list group members", e);
}
return owners;
} finally {
tl.setContext(old);
}
}