Refactor RestoreChange code into gerrit-server
While most of the logic for RestoreChange was already in gerrit-server in ChangeUtil, this change moves it into it's own class. Using a ReviewResult will allow us to perform one of several related review actions when responding to an ssh/rpc request and then handle the result (or more specifically, the errors associated with it) in a single block of code. Change-Id: I0f285f3ee68895dbd41d8dce8ed50d15f222898b
This commit is contained in:
@@ -14,7 +14,6 @@
|
||||
|
||||
package com.google.gerrit.sshd.commands;
|
||||
|
||||
import com.google.gerrit.common.ChangeHooks;
|
||||
import com.google.gerrit.common.data.ApprovalType;
|
||||
import com.google.gerrit.common.data.ApprovalTypes;
|
||||
import com.google.gerrit.common.data.ReviewResult;
|
||||
@@ -30,13 +29,12 @@ import com.google.gerrit.reviewdb.ReviewDb;
|
||||
import com.google.gerrit.server.ChangeUtil;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.changedetail.AbandonChange;
|
||||
import com.google.gerrit.server.changedetail.RestoreChange;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.MergeOp;
|
||||
import com.google.gerrit.server.git.MergeQueue;
|
||||
import com.google.gerrit.server.git.ReplicationQueue;
|
||||
import com.google.gerrit.server.mail.AbandonedSender;
|
||||
import com.google.gerrit.server.mail.EmailException;
|
||||
import com.google.gerrit.server.mail.RestoredSender;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
|
||||
import com.google.gerrit.server.patch.PublishComments;
|
||||
@@ -137,9 +135,6 @@ public class ReviewCommand extends BaseCommand {
|
||||
@Inject
|
||||
private AbandonChange.Factory abandonChangeFactory;
|
||||
|
||||
@Inject
|
||||
private AbandonedSender.Factory abandonedSenderFactory;
|
||||
|
||||
@Inject
|
||||
private FunctionState.Factory functionStateFactory;
|
||||
|
||||
@@ -147,10 +142,7 @@ public class ReviewCommand extends BaseCommand {
|
||||
private PublishComments.Factory publishCommentsFactory;
|
||||
|
||||
@Inject
|
||||
private RestoredSender.Factory restoredSenderFactory;
|
||||
|
||||
@Inject
|
||||
private ChangeHooks hooks;
|
||||
private RestoreChange.Factory restoreChangeFactory;
|
||||
|
||||
@Inject
|
||||
private GitRepositoryManager gitManager;
|
||||
@@ -278,15 +270,8 @@ public class ReviewCommand extends BaseCommand {
|
||||
|
||||
if (abandonChange) {
|
||||
result = abandonChangeFactory.create(patchSetId, changeComment).call();
|
||||
}
|
||||
|
||||
if (restoreChange) {
|
||||
if (changeControl.canRestore()) {
|
||||
ChangeUtil.restore(patchSetId, currentUser, changeComment, db,
|
||||
restoredSenderFactory, hooks);
|
||||
} else {
|
||||
throw error("Not permitted to restore change");
|
||||
}
|
||||
} else if (restoreChange) {
|
||||
result = restoreChangeFactory.create(patchSetId, changeComment).call();
|
||||
if (submitChange) {
|
||||
changeControl = changeControlFactory.validateFor(changeId);
|
||||
}
|
||||
@@ -379,6 +364,10 @@ public class ReviewCommand extends BaseCommand {
|
||||
switch (resultError.getType()) {
|
||||
case ABANDON_NOT_PERMITTED:
|
||||
writeError("error: not permitted to abandon change");
|
||||
break;
|
||||
case RESTORE_NOT_PERMITTED:
|
||||
writeError("error: not permitted to restore change");
|
||||
break;
|
||||
default:
|
||||
writeError("error: failure in review");
|
||||
}
|
||||
|
Reference in New Issue
Block a user