Revert: Send email from batch update operation
Change-Id: I1b222a28fc648beecfff523397713e856c60b12a Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -38,6 +38,7 @@ 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.BatchUpdate.Context;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.UpdateException;
|
||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||
@@ -169,14 +170,13 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
revertCommitBuilder.setMessage(
|
||||
ChangeIdUtil.insertId(message, computedChangeId, true));
|
||||
|
||||
ChangeInserter ins;
|
||||
Change.Id changeId = new Change.Id(seq.nextChangeId());
|
||||
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||
ObjectId id = oi.insert(revertCommitBuilder);
|
||||
oi.flush();
|
||||
RevCommit revertCommit = revWalk.parseCommit(id);
|
||||
|
||||
ins = changeInserterFactory.create(
|
||||
ChangeInserter ins = changeInserterFactory.create(
|
||||
changeId, revertCommit, ctl.getChange().getDest().get())
|
||||
.setValidatePolicy(CommitValidators.Policy.GERRIT)
|
||||
.setTopic(changeToRevert.getTopic());
|
||||
@@ -186,21 +186,12 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
db.get(), project, user, now)) {
|
||||
bu.setRepository(git, revWalk, oi);
|
||||
bu.insertChange(ins);
|
||||
bu.addOp(changeId, new SendEmailOp(ins));
|
||||
bu.addOp(changeToRevert.getId(),
|
||||
new PostRevertedMessageOp(computedChangeId));
|
||||
bu.execute();
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
RevertedSender cm = revertedSenderFactory.create(project, changeId);
|
||||
cm.setFrom(user.getAccountId());
|
||||
cm.setChangeMessage(ins.getChangeMessage());
|
||||
cm.send();
|
||||
} catch (Exception err) {
|
||||
log.error("Cannot send email for revert change " + changeId, err);
|
||||
}
|
||||
|
||||
return changeId;
|
||||
} catch (RepositoryNotFoundException e) {
|
||||
throw new ResourceNotFoundException(changeIdToRevert.toString(), e);
|
||||
@@ -220,6 +211,28 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
||||
return change != null ? change.getStatus().name().toLowerCase() : "deleted";
|
||||
}
|
||||
|
||||
private class SendEmailOp extends BatchUpdate.Op {
|
||||
private final ChangeInserter ins;
|
||||
|
||||
public SendEmailOp(ChangeInserter ins) {
|
||||
this.ins = ins;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postUpdate(Context ctx) throws Exception {
|
||||
Change.Id changeId = ins.getChange().getId();
|
||||
try {
|
||||
RevertedSender cm =
|
||||
revertedSenderFactory.create(ctx.getProject(), changeId);
|
||||
cm.setFrom(ctx.getUser().getAccountId());
|
||||
cm.setChangeMessage(ins.getChangeMessage());
|
||||
cm.send();
|
||||
} catch (Exception err) {
|
||||
log.error("Cannot send email for revert change " + changeId, err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class PostRevertedMessageOp extends BatchUpdate.Op {
|
||||
private final ObjectId computedChangeId;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user