summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsmo Haataja <ismo.haataja@digia.com>2014-06-16 14:36:21 +0300
committerIsmo Haataja <ismo.haataja@digia.com>2014-06-19 12:30:58 +0200
commit0fd0dbe04ae8f7513d94a6ce83f5a8ea8e1e62d0 (patch)
tree564343a7389934fba90562fcc2876291b00a7fc9
parent9f9d801a36e0b3de06f52be5215e8a4e02cfdd78 (diff)
Always allow commenting a patch setv2.7.0-based
Prevent giving review scores but allow commenting for a change in CI states (STAGING, STAGED or INTEGRATING). No need to block it with error message like before. Also if the state has changed to one of CI states while reviewing, review scores are dropped, just comments are saved. Task-number: QTQAINFRA-858 Change-Id: I684f004a1d680b2db184fedb50d936337f603721 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Ismo Haataja <ismo.haataja@digia.com>
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java10
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PublishCommentScreen.java8
-rw-r--r--gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java5
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java16
4 files changed, 29 insertions, 10 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java
index ed519e9ead..ec737ea901 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchSetComplexDisclosurePanel.java
@@ -634,15 +634,7 @@ class PatchSetComplexDisclosurePanel extends ComplexDisclosurePanel
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
- if (changeDetail.getChange().getStatus() == Change.Status.INTEGRATING
- || changeDetail.getChange().getStatus() == Change.Status.STAGED
- || changeDetail.getChange().getStatus() == Change.Status.STAGING) {
- alertMessageBox(Util.C.headingReviewDisabled(),
- Util.C.messageReviewDisabled())
- .center();
- } else {
- Gerrit.display(Dispatcher.toPublish(patchSet.getId()));
- }
+ Gerrit.display(Dispatcher.toPublish(patchSet.getId()));
}
});
actionsPanel.add(b);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PublishCommentScreen.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PublishCommentScreen.java
index 46607c4749..d1aee8c4a2 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PublishCommentScreen.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PublishCommentScreen.java
@@ -15,6 +15,7 @@
package com.google.gerrit.client.changes;
+import com.google.gerrit.client.ErrorDialog;
import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.changes.ChangeInfo.ApprovalInfo;
import com.google.gerrit.client.changes.ChangeInfo.LabelInfo;
@@ -340,7 +341,7 @@ public class PublishCommentScreen extends AccountScreen implements
descBlock.display(changeDetail, null, false, r.getPatchSetInfo(), r.getAccounts(),
r.getSubmitTypeRecord(), commentLinkProcessor);
- if (r.getChange().getStatus().isOpen()) {
+ if (r.getChange().getStatus().isOpen() && !r.getChange().getStatus().isCI()) {
initApprovals(approvalPanel);
approvals.display(change);
} else {
@@ -442,6 +443,9 @@ public class PublishCommentScreen extends AccountScreen implements
staging();
} else {
saveStateOnUnload = false;
+ if (!result.getMessage().isEmpty()) {
+ new ErrorDialog(result.getMessage()).center();
+ }
goChange();
}
}
@@ -467,6 +471,8 @@ public class PublishCommentScreen extends AccountScreen implements
this.drafts = 'PUBLISH';
}-*/;
+ public final native String getMessage() /*-{ return this.message; }-*/;
+
protected ReviewInput() {
}
}
diff --git a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java
index 14a32b94a8..98fbf37cfe 100644
--- a/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java
+++ b/gerrit-reviewdb/src/main/java/com/google/gerrit/reviewdb/client/Change.java
@@ -342,6 +342,11 @@ public final class Change {
return closed;
}
+ public boolean isCI() {
+ return (code == STATUS_INTEGRATING
+ || code == STATUS_STAGED || code == STATUS_STAGING);
+ }
+
public static Status forCode(final char c) {
for (final Status s : Status.values()) {
if (s.code == c) {
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java
index 51720f2104..026a269e22 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java
@@ -106,6 +106,7 @@ public class PostReview implements RestModifyView<RevisionResource, Input> {
static class Output {
Map<String, Short> labels;
+ String message;
}
private final ReviewDb db;
@@ -178,6 +179,14 @@ public class PostReview implements RestModifyView<RevisionResource, Input> {
Output output = new Output();
output.labels = input.labels;
+ if (input.labels != null && change.getStatus().isCI()) {
+ output.message =
+ "The change was staged while you were reviewing it. " +
+ "Due to this, only your comments were published, while your review scores were dropped.";
+ }
+ else {
+ output.message = "";
+ }
return output;
}
@@ -359,6 +368,13 @@ public class PostReview implements RestModifyView<RevisionResource, Input> {
// TODO Allow updating some labels even when closed.
continue;
}
+ if (change.getStatus().isCI()) {
+ // If the state of a change is INTEGRATING, STAGED or STAGING review
+ // scores are not allowed. This check is necessary here because some
+ // other user may have changed the state of a change while another
+ // user is reviewing it. Scores are dropped but comments are kept.
+ continue;
+ }
PatchSetApproval c = current.remove(name);
if (ent.getValue() == null || ent.getValue() == 0) {