Revert: Post message on reverted change from batch update operation
Change-Id: I7603e98ab87d9d44b391fdad93c2101538b41c71 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -37,11 +37,11 @@ import com.google.gerrit.server.GerritPersonIdent;
|
||||
import com.google.gerrit.server.PatchSetUtil;
|
||||
import com.google.gerrit.server.Sequences;
|
||||
import com.google.gerrit.server.git.BatchUpdate;
|
||||
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.UpdateException;
|
||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||
import com.google.gerrit.server.mail.RevertedSender;
|
||||
import com.google.gerrit.server.notedb.ChangeUpdate;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||
import com.google.gerrit.server.project.RefControl;
|
||||
@@ -75,7 +75,6 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final ChangeInserter.Factory changeInserterFactory;
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final ChangeUpdate.Factory changeUpdateFactory;
|
||||
private final BatchUpdate.Factory updateFactory;
|
||||
private final Sequences seq;
|
||||
private final PatchSetUtil psUtil;
|
||||
@@ -88,7 +87,6 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
GitRepositoryManager repoManager,
|
||||
ChangeInserter.Factory changeInserterFactory,
|
||||
ChangeMessagesUtil cmUtil,
|
||||
ChangeUpdate.Factory changeUpdateFactory,
|
||||
BatchUpdate.Factory updateFactory,
|
||||
Sequences seq,
|
||||
PatchSetUtil psUtil,
|
||||
@@ -99,7 +97,6 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
this.repoManager = repoManager;
|
||||
this.changeInserterFactory = changeInserterFactory;
|
||||
this.cmUtil = cmUtil;
|
||||
this.changeUpdateFactory = changeUpdateFactory;
|
||||
this.updateFactory = updateFactory;
|
||||
this.seq = seq;
|
||||
this.psUtil = psUtil;
|
||||
@@ -172,38 +169,25 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
revertCommitBuilder.setMessage(
|
||||
ChangeIdUtil.insertId(message, computedChangeId, true));
|
||||
|
||||
RevCommit revertCommit;
|
||||
ChangeInserter ins;
|
||||
Change.Id changeId = new Change.Id(seq.nextChangeId());
|
||||
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||
ObjectId id = oi.insert(revertCommitBuilder);
|
||||
oi.flush();
|
||||
revertCommit = revWalk.parseCommit(id);
|
||||
RevCommit revertCommit = revWalk.parseCommit(id);
|
||||
|
||||
ins = changeInserterFactory.create(
|
||||
changeId, revertCommit, ctl.getChange().getDest().get())
|
||||
.setValidatePolicy(CommitValidators.Policy.GERRIT)
|
||||
.setTopic(changeToRevert.getTopic());
|
||||
|
||||
ChangeMessage changeMessage = new ChangeMessage(
|
||||
new ChangeMessage.Key(
|
||||
patchSetId.getParentKey(), ChangeUtil.messageUUID(db.get())),
|
||||
user.getAccountId(), now, patchSetId);
|
||||
StringBuilder msgBuf = new StringBuilder();
|
||||
msgBuf.append("Patch Set ").append(patchSetId.get()).append(": Reverted");
|
||||
msgBuf.append("\n\n");
|
||||
msgBuf.append("This patchset was reverted in change: ")
|
||||
.append("I").append(computedChangeId.name());
|
||||
changeMessage.setMessage(msgBuf.toString());
|
||||
ChangeUpdate update = changeUpdateFactory.create(ctl, now);
|
||||
cmUtil.addChangeMessage(db.get(), update, changeMessage);
|
||||
update.commit();
|
||||
|
||||
ins.setMessage("Uploaded patch set 1.");
|
||||
|
||||
try (BatchUpdate bu = updateFactory.create(
|
||||
db.get(), project, user, now)) {
|
||||
bu.setRepository(git, revWalk, oi);
|
||||
bu.insertChange(ins);
|
||||
bu.addOp(changeToRevert.getId(),
|
||||
new PostRevertedMessageOp(computedChangeId));
|
||||
bu.execute();
|
||||
}
|
||||
}
|
||||
@@ -234,5 +218,33 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
|
||||
private static String status(Change change) {
|
||||
return change != null ? change.getStatus().name().toLowerCase() : "deleted";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class PostRevertedMessageOp extends BatchUpdate.Op {
|
||||
private final ObjectId computedChangeId;
|
||||
|
||||
public PostRevertedMessageOp(ObjectId computedChangeId) {
|
||||
this.computedChangeId = computedChangeId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateChange(ChangeContext ctx) throws Exception {
|
||||
Change change = ctx.getChange();
|
||||
PatchSet.Id patchSetId = change.currentPatchSetId();
|
||||
ChangeMessage changeMessage = new ChangeMessage(
|
||||
new ChangeMessage.Key(change.getId(),
|
||||
ChangeUtil.messageUUID(db.get())),
|
||||
ctx.getUser().getAccountId(), ctx.getWhen(), patchSetId);
|
||||
StringBuilder msgBuf = new StringBuilder();
|
||||
msgBuf.append("Patch Set ").append(patchSetId.get())
|
||||
.append(": Reverted");
|
||||
msgBuf.append("\n\n");
|
||||
msgBuf.append("This patchset was reverted in change: ")
|
||||
.append("I").append(computedChangeId.name());
|
||||
changeMessage.setMessage(msgBuf.toString());
|
||||
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(patchSetId),
|
||||
changeMessage);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user