diff --git a/gerrit-common/src/main/java/com/google/gerrit/common/data/ReviewResult.java b/gerrit-common/src/main/java/com/google/gerrit/common/data/ReviewResult.java index 648b7ddcc9..dc08e07973 100644 --- a/gerrit-common/src/main/java/com/google/gerrit/common/data/ReviewResult.java +++ b/gerrit-common/src/main/java/com/google/gerrit/common/data/ReviewResult.java @@ -67,7 +67,10 @@ public class ReviewResult { PUBLISH_NOT_PERMITTED, /** Review operation not permitted by rule. */ - RULE_ERROR + RULE_ERROR, + + /** Review operation invalid because patch set is not a draft. */ + NOT_A_DRAFT, } protected Type type; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java index 9f60ccbec6..69406f7d4e 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/changedetail/PublishDraft.java @@ -57,9 +57,14 @@ public class PublishDraft implements Callable { result.setChangeId(changeId); final ChangeControl control = changeControlFactory.validateFor(changeId); final PatchSet patch = db.patchSets().get(patchSetId); - if (patch == null || !patch.isDraft()) { + if (patch == null) { throw new NoSuchChangeException(changeId); } + if (!patch.isDraft()) { + result.addError(new ReviewResult.Error( + ReviewResult.Error.Type.NOT_A_DRAFT)); + return result; + } if (!control.canPublish(db)) { result.addError(new ReviewResult.Error( diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java index 96dc7cace5..56faed5fb4 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/ReviewCommand.java @@ -294,6 +294,9 @@ public class ReviewCommand extends BaseCommand { case RULE_ERROR: errMsg += "rule error"; break; + case NOT_A_DRAFT: + errMsg += "change is not a draft"; + break; default: errMsg += "failure in review"; }