summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Pursehouse <dpursehouse@collab.net>2018-12-21 16:00:36 +0900
committerDavid Pursehouse <dpursehouse@collab.net>2019-01-21 08:35:24 +0000
commit9ce4d2fffc525b3c8a0449583be77d74ddf2544f (patch)
tree3c852a4f233bc793b46d7acee989afe09abcf796
parent997f25bf022174567e1c347ea69d936815a33251 (diff)
FileApi: Add a method to set a file's "reviewed" flag
-rw-r--r--gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/api/revision/RevisionIT.java15
-rw-r--r--gerrit-extension-api/src/main/java/com/google/gerrit/extensions/api/changes/FileApi.java8
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/api/changes/FileApiImpl.java25
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());