summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Ostrovsky <david@ostrovsky.org>2014-02-12 08:01:03 +0100
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2014-04-15 18:49:24 +0900
commit62096c7b030ed24f1561ef8163e28216cda764f9 (patch)
tree4a6f7951190c8d1c05414aa3547409fe7eba273b
parent953784a50f8fda949eb0d1d035fa0d5f4d8ef77e (diff)
Prevent draft changes from being abandoned
When a draft change is abandoned it is currently published to all users by setting the status to ABANDONED. Restoring the change will effectively publish the change as /restore sets the status to NEW. To not complicate the workflow, prevent draft changes from being abandoned. Change-Id: If747264fa66a2139e0d8f13987125d853ec3bed9
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java
index 4959cfb0e3..b406af01a1 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java
@@ -85,6 +85,8 @@ public class Abandon implements RestModifyView<ChangeResource, Input>,
throw new AuthException("abandon not permitted");
} else if (!change.getStatus().isOpen()) {
throw new ResourceConflictException("change is " + status(change));
+ } else if (change.getStatus() == Change.Status.DRAFT) {
+ throw new ResourceConflictException("draft changes cannot be abandoned");
}
ChangeMessage message;
@@ -141,6 +143,7 @@ public class Abandon implements RestModifyView<ChangeResource, Input>,
.setLabel("Abandon")
.setTitle("Abandon the change")
.setVisible(resource.getChange().getStatus().isOpen()
+ && resource.getChange().getStatus() != Change.Status.DRAFT
&& resource.getControl().canAbandon());
}