diff options
author | David Pursehouse <dpursehouse@collab.net> | 2018-12-21 16:00:36 +0900 |
---|---|---|
committer | David Pursehouse <dpursehouse@collab.net> | 2019-01-21 08:35:24 +0000 |
commit | 9ce4d2fffc525b3c8a0449583be77d74ddf2544f (patch) | |
tree | 3c852a4f233bc793b46d7acee989afe09abcf796 | |
parent | 997f25bf022174567e1c347ea69d936815a33251 (diff) |
FileApi: Add a method to set a file's "reviewed" flag
Change-Id: I1a728285167eaaac1104d2dd4a7a7e7ab39051f2
3 files changed, 47 insertions, 1 deletions
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java index e38958c941..0c477933f9 100644 --- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java +++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java @@ -873,6 +873,21 @@ public class RevisionIT extends AbstractDaemonTest { } @Test + public void setUnsetReviewedFlagByFileApi() throws Exception { + PushOneCommit push = pushFactory.create(db, admin.getIdent(), testRepo); + PushOneCommit.Result r = push.to("refs/for/master"); + + gApi.changes().id(r.getChangeId()).current().file(PushOneCommit.FILE_NAME).setReviewed(true); + + assertThat(Iterables.getOnlyElement(gApi.changes().id(r.getChangeId()).current().reviewed())) + .isEqualTo(PushOneCommit.FILE_NAME); + + gApi.changes().id(r.getChangeId()).current().file(PushOneCommit.FILE_NAME).setReviewed(false); + + assertThat(gApi.changes().id(r.getChangeId()).current().reviewed()).isEmpty(); + } + + @Test public void mergeable() throws Exception { ObjectId initial = repo().exactRef(HEAD).getLeaf().getObjectId(); diff --git a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/FileApi.java b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/FileApi.java index 89dc269f8b..39cf2b764d 100644 --- a/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/FileApi.java +++ b/gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/FileApi.java @@ -39,6 +39,9 @@ public interface FileApi { */ DiffRequest diffRequest() throws RestApiException; + /** Set the file reviewed or not reviewed */ + void setReviewed(boolean reviewed) throws RestApiException; + abstract class DiffRequest { private String base; private Integer context; @@ -123,5 +126,10 @@ public interface FileApi { public DiffRequest diffRequest() throws RestApiException { throw new NotImplementedException(); } + + @Override + public void setReviewed(boolean reviewed) throws RestApiException { + throw new NotImplementedException(); + } } } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/FileApiImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/FileApiImpl.java index f51cdac98c..fd7f244937 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/FileApiImpl.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/api/changes/FileApiImpl.java @@ -23,6 +23,7 @@ import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.server.change.FileResource; import com.google.gerrit.server.change.GetContent; import com.google.gerrit.server.change.GetDiff; +import com.google.gerrit.server.change.Reviewed; import com.google.inject.Inject; import com.google.inject.assistedinject.Assisted; @@ -33,12 +34,21 @@ class FileApiImpl implements FileApi { private final GetContent getContent; private final GetDiff getDiff; + private final Reviewed.PutReviewed putReviewed; + private final Reviewed.DeleteReviewed deleteReviewed; private final FileResource file; @Inject - FileApiImpl(GetContent getContent, GetDiff getDiff, @Assisted FileResource file) { + FileApiImpl( + GetContent getContent, + GetDiff getDiff, + Reviewed.PutReviewed putReviewed, + Reviewed.DeleteReviewed deleteReviewed, + @Assisted FileResource file) { this.getContent = getContent; this.getDiff = getDiff; + this.putReviewed = putReviewed; + this.deleteReviewed = deleteReviewed; this.file = file; } @@ -88,6 +98,19 @@ class FileApiImpl implements FileApi { }; } + @Override + public void setReviewed(boolean reviewed) throws RestApiException { + try { + if (reviewed) { + putReviewed.apply(file, new Reviewed.Input()); + } else { + deleteReviewed.apply(file, new Reviewed.Input()); + } + } catch (Exception e) { + throw asRestApiException(String.format("Cannot set %sreviewed", reviewed ? "" : "un"), e); + } + } + private DiffInfo get(DiffRequest r) throws RestApiException { if (r.getBase() != null) { getDiff.setBase(r.getBase()); |