List listOwners()

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);
    }
  }