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.Sequences;
|
||||||
import com.google.gerrit.server.git.BatchUpdate;
|
import com.google.gerrit.server.git.BatchUpdate;
|
||||||
import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
|
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.GitRepositoryManager;
|
||||||
import com.google.gerrit.server.git.UpdateException;
|
import com.google.gerrit.server.git.UpdateException;
|
||||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||||
@@ -169,14 +170,13 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
|||||||
revertCommitBuilder.setMessage(
|
revertCommitBuilder.setMessage(
|
||||||
ChangeIdUtil.insertId(message, computedChangeId, true));
|
ChangeIdUtil.insertId(message, computedChangeId, true));
|
||||||
|
|
||||||
ChangeInserter ins;
|
|
||||||
Change.Id changeId = new Change.Id(seq.nextChangeId());
|
Change.Id changeId = new Change.Id(seq.nextChangeId());
|
||||||
try (ObjectInserter oi = git.newObjectInserter()) {
|
try (ObjectInserter oi = git.newObjectInserter()) {
|
||||||
ObjectId id = oi.insert(revertCommitBuilder);
|
ObjectId id = oi.insert(revertCommitBuilder);
|
||||||
oi.flush();
|
oi.flush();
|
||||||
RevCommit revertCommit = revWalk.parseCommit(id);
|
RevCommit revertCommit = revWalk.parseCommit(id);
|
||||||
|
|
||||||
ins = changeInserterFactory.create(
|
ChangeInserter ins = changeInserterFactory.create(
|
||||||
changeId, revertCommit, ctl.getChange().getDest().get())
|
changeId, revertCommit, ctl.getChange().getDest().get())
|
||||||
.setValidatePolicy(CommitValidators.Policy.GERRIT)
|
.setValidatePolicy(CommitValidators.Policy.GERRIT)
|
||||||
.setTopic(changeToRevert.getTopic());
|
.setTopic(changeToRevert.getTopic());
|
||||||
@@ -186,21 +186,12 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
|
|||||||
db.get(), project, user, now)) {
|
db.get(), project, user, now)) {
|
||||||
bu.setRepository(git, revWalk, oi);
|
bu.setRepository(git, revWalk, oi);
|
||||||
bu.insertChange(ins);
|
bu.insertChange(ins);
|
||||||
|
bu.addOp(changeId, new SendEmailOp(ins));
|
||||||
bu.addOp(changeToRevert.getId(),
|
bu.addOp(changeToRevert.getId(),
|
||||||
new PostRevertedMessageOp(computedChangeId));
|
new PostRevertedMessageOp(computedChangeId));
|
||||||
bu.execute();
|
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;
|
return changeId;
|
||||||
} catch (RepositoryNotFoundException e) {
|
} catch (RepositoryNotFoundException e) {
|
||||||
throw new ResourceNotFoundException(changeIdToRevert.toString(), 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";
|
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 class PostRevertedMessageOp extends BatchUpdate.Op {
|
||||||
private final ObjectId computedChangeId;
|
private final ObjectId computedChangeId;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user