private void addReviewers()

in src/main/java/com/googlesource/gerrit/plugins/reviewers/AddReviewers.java [72:112]


  private void addReviewers() {
    try {
      // TODO(davido): Switch back to using changes API again,
      // when it supports batch mode for adding reviewers
      Set<Account.Id> existingReviewers =
          gApi.changes().id(changeInfo._number).reviewers().stream()
              .map(r -> Account.id(r._accountId))
              .collect(Collectors.toSet());
      /* Don't add, or change state of, already existing reviewers. */
      Set<Account.Id> reviewersToAdd =
          reviewers.stream()
              .filter(r -> !existingReviewers.contains(r))
              .collect(Collectors.toSet());
      /* If account is already configured to be added as reviewer, don't attempt to add as cc. */
      Set<Account.Id> ccsToAdd =
          ccs.stream()
              .filter(c -> !existingReviewers.contains(c))
              .filter(r -> !reviewersToAdd.contains(r))
              .collect(Collectors.toSet());
      if (reviewersToAdd.isEmpty() && ccsToAdd.isEmpty()) {
        return;
      }

      ReviewInput in = new ReviewInput();
      in.reviewers = new ArrayList<>(reviewers.size() + ccs.size());
      for (Account.Id account : reviewersToAdd) {
        ReviewerInput addReviewerInput = new ReviewerInput();
        addReviewerInput.reviewer = account.toString();
        in.reviewers.add(addReviewerInput);
      }
      for (Account.Id account : ccsToAdd) {
        ReviewerInput input = new ReviewerInput();
        input.state = ReviewerState.CC;
        input.reviewer = account.toString();
        in.reviewers.add(input);
      }
      gApi.changes().id(changeInfo._number).current().review(in);
    } catch (RestApiException e) {
      logger.atSevere().withCause(e).log("Couldn't add reviewers to the change");
    }
  }