Merge branch 'stable-2.15' into stable-2.16

* stable-2.15:
  ChangeApi: Add method to list change reviewers

Change-Id: I257a2a37ac90e1a86cc0fa7590b7a891f6ddb529
This commit is contained in:
David Pursehouse 2019-01-10 22:26:27 +09:00
commit df74d0d848
4 changed files with 48 additions and 1 deletions

View File

@ -184,6 +184,11 @@ public interface ChangeApi {
SuggestedReviewersRequest suggestReviewers(String query) throws RestApiException;
/**
* Retrieve reviewers ({@code ReviewerState.REVIEWER} and {@code ReviewerState.CC}) on the change.
*/
List<ReviewerInfo> reviewers() throws RestApiException;
ChangeInfo get(EnumSet<ListChangesOption> options) throws RestApiException;
default ChangeInfo get(Iterable<ListChangesOption> options) throws RestApiException {
@ -481,6 +486,11 @@ public interface ChangeApi {
throw new NotImplementedException();
}
@Override
public List<ReviewerInfo> reviewers() throws RestApiException {
throw new NotImplementedException();
}
@Override
public ChangeInfo get(EnumSet<ListChangesOption> options) throws RestApiException {
throw new NotImplementedException();

View File

@ -33,6 +33,7 @@ import com.google.gerrit.extensions.api.changes.RebaseInput;
import com.google.gerrit.extensions.api.changes.RestoreInput;
import com.google.gerrit.extensions.api.changes.RevertInput;
import com.google.gerrit.extensions.api.changes.ReviewerApi;
import com.google.gerrit.extensions.api.changes.ReviewerInfo;
import com.google.gerrit.extensions.api.changes.RevisionApi;
import com.google.gerrit.extensions.api.changes.SubmittedTogetherInfo;
import com.google.gerrit.extensions.api.changes.SubmittedTogetherOption;
@ -76,6 +77,7 @@ import com.google.gerrit.server.restapi.change.Index;
import com.google.gerrit.server.restapi.change.ListChangeComments;
import com.google.gerrit.server.restapi.change.ListChangeDrafts;
import com.google.gerrit.server.restapi.change.ListChangeRobotComments;
import com.google.gerrit.server.restapi.change.ListReviewers;
import com.google.gerrit.server.restapi.change.MarkAsReviewed;
import com.google.gerrit.server.restapi.change.MarkAsUnreviewed;
import com.google.gerrit.server.restapi.change.Move;
@ -118,6 +120,7 @@ class ChangeApiImpl implements ChangeApi {
private final ChangeMessageApiImpl.Factory changeMessageApi;
private final ChangeMessages changeMessages;
private final SuggestChangeReviewers suggestReviewers;
private final ListReviewers listReviewers;
private final ChangeResource change;
private final Abandon abandon;
private final Revert revert;
@ -166,6 +169,7 @@ class ChangeApiImpl implements ChangeApi {
ChangeMessageApiImpl.Factory changeMessageApi,
ChangeMessages changeMessages,
SuggestChangeReviewers suggestReviewers,
ListReviewers listReviewers,
Abandon abandon,
Revert revert,
Restore restore,
@ -212,6 +216,7 @@ class ChangeApiImpl implements ChangeApi {
this.changeMessageApi = changeMessageApi;
this.changeMessages = changeMessages;
this.suggestReviewers = suggestReviewers;
this.listReviewers = listReviewers;
this.abandon = abandon;
this.restore = restore;
this.updateByMerge = updateByMerge;
@ -507,6 +512,15 @@ class ChangeApiImpl implements ChangeApi {
}
}
@Override
public List<ReviewerInfo> reviewers() throws RestApiException {
try {
return listReviewers.apply(change);
} catch (Exception e) {
throw asRestApiException("Cannot retrieve reviewers", e);
}
}
@Override
public ChangeInfo get(EnumSet<ListChangesOption> s) throws RestApiException {
try {

View File

@ -33,7 +33,7 @@ import java.util.List;
import java.util.Map;
@Singleton
class ListReviewers implements RestReadView<ChangeResource> {
public class ListReviewers implements RestReadView<ChangeResource> {
private final Provider<ReviewDb> dbProvider;
private final ApprovalsUtil approvalsUtil;
private final ReviewerJson json;

View File

@ -1681,6 +1681,29 @@ public class ChangeIT extends AbstractDaemonTest {
assertThat(rsrc.getETag()).isNotEqualTo(oldETag);
}
@Test
public void listReviewers() throws Exception {
PushOneCommit.Result r = createChange();
AddReviewerInput in = new AddReviewerInput();
in.reviewer = user.email;
gApi.changes().id(r.getChangeId()).addReviewer(in);
assertThat(gApi.changes().id(r.getChangeId()).reviewers()).hasSize(1);
String username1 = name("user1");
String email1 = username1 + "@example.com";
accountOperations
.newAccount()
.username(username1)
.preferredEmail(email1)
.fullname("User 1")
.create();
in.reviewer = email1;
in.state = ReviewerState.CC;
gApi.changes().id(r.getChangeId()).addReviewer(in);
assertThat(gApi.changes().id(r.getChangeId()).reviewers().stream().map(a -> a.username))
.containsExactly(user.username, username1);
}
@Test
public void notificationsForAddedWorkInProgressReviewers() throws Exception {
AddReviewerInput in = new AddReviewerInput();