EmailReviewComments: Take ChangeNotes as input instead of Change
Internally EmailReviewComments needs the change ID and the project name, both can be retrieved from ChangesNotes without loading the change data. Change-Id: Ib15fd2dbd80573693191c11956c10caa9fc56ef0 Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -85,7 +85,7 @@ public final class StoredValues {
|
||||
PatchSetInfoFactory patchInfoFactory =
|
||||
env.getArgs().getPatchSetInfoFactory();
|
||||
try {
|
||||
return patchInfoFactory.get(change, ps);
|
||||
return patchInfoFactory.get(change.getProject(), ps);
|
||||
} catch (PatchSetInfoNotAvailableException e) {
|
||||
throw new SystemException(e.getMessage());
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@ import static com.google.gerrit.server.PatchLineCommentsUtil.PLC_ORDER;
|
||||
|
||||
import com.google.gerrit.extensions.api.changes.ReviewInput.NotifyHandling;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.ChangeMessage;
|
||||
import com.google.gerrit.reviewdb.client.PatchLineComment;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
@@ -26,6 +25,7 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.git.SendEmailExecutor;
|
||||
import com.google.gerrit.server.mail.CommentSender;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||
import com.google.gerrit.server.util.RequestContext;
|
||||
import com.google.gerrit.server.util.ThreadLocalRequestContext;
|
||||
@@ -49,7 +49,7 @@ public class EmailReviewComments implements Runnable, RequestContext {
|
||||
interface Factory {
|
||||
EmailReviewComments create(
|
||||
NotifyHandling notify,
|
||||
Change change,
|
||||
ChangeNotes notes,
|
||||
PatchSet patchSet,
|
||||
Account.Id authorId,
|
||||
ChangeMessage message,
|
||||
@@ -63,7 +63,7 @@ public class EmailReviewComments implements Runnable, RequestContext {
|
||||
private final ThreadLocalRequestContext requestContext;
|
||||
|
||||
private final NotifyHandling notify;
|
||||
private final Change change;
|
||||
private final ChangeNotes notes;
|
||||
private final PatchSet patchSet;
|
||||
private final Account.Id authorId;
|
||||
private final ChangeMessage message;
|
||||
@@ -78,7 +78,7 @@ public class EmailReviewComments implements Runnable, RequestContext {
|
||||
SchemaFactory<ReviewDb> schemaFactory,
|
||||
ThreadLocalRequestContext requestContext,
|
||||
@Assisted NotifyHandling notify,
|
||||
@Assisted Change change,
|
||||
@Assisted ChangeNotes notes,
|
||||
@Assisted PatchSet patchSet,
|
||||
@Assisted Account.Id authorId,
|
||||
@Assisted ChangeMessage message,
|
||||
@@ -89,7 +89,7 @@ public class EmailReviewComments implements Runnable, RequestContext {
|
||||
this.schemaFactory = schemaFactory;
|
||||
this.requestContext = requestContext;
|
||||
this.notify = notify;
|
||||
this.change = change;
|
||||
this.notes = notes;
|
||||
this.patchSet = patchSet;
|
||||
this.authorId = authorId;
|
||||
this.message = message;
|
||||
@@ -105,9 +105,10 @@ public class EmailReviewComments implements Runnable, RequestContext {
|
||||
RequestContext old = requestContext.setContext(this);
|
||||
try {
|
||||
|
||||
CommentSender cm = commentSenderFactory.create(change.getId());
|
||||
CommentSender cm = commentSenderFactory.create(notes.getChangeId());
|
||||
cm.setFrom(authorId);
|
||||
cm.setPatchSet(patchSet, patchSetInfoFactory.get(change, patchSet));
|
||||
cm.setPatchSet(patchSet,
|
||||
patchSetInfoFactory.get(notes.getProjectName(), patchSet));
|
||||
cm.setChangeMessage(message);
|
||||
cm.setPatchLineComments(comments);
|
||||
cm.setNotify(notify);
|
||||
|
||||
@@ -65,6 +65,7 @@ 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.UpdateException;
|
||||
import com.google.gerrit.server.notedb.ChangeNotes;
|
||||
import com.google.gerrit.server.notedb.ChangeUpdate;
|
||||
import com.google.gerrit.server.patch.PatchListCache;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
@@ -341,7 +342,7 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
private final ReviewInput in;
|
||||
|
||||
private IdentifiedUser user;
|
||||
private Change change;
|
||||
private ChangeNotes notes;
|
||||
private PatchSet ps;
|
||||
private ChangeMessage message;
|
||||
private List<PatchLineComment> comments = new ArrayList<>();
|
||||
@@ -357,14 +358,15 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
public boolean updateChange(ChangeContext ctx)
|
||||
throws OrmException, ResourceConflictException {
|
||||
user = ctx.getUser().asIdentifiedUser();
|
||||
change = ctx.getChange();
|
||||
notes = ctx.getNotes();
|
||||
ps = psUtil.get(ctx.getDb(), ctx.getNotes(), psId);
|
||||
boolean dirty = false;
|
||||
dirty |= insertComments(ctx);
|
||||
dirty |= updateLabels(ctx);
|
||||
dirty |= insertMessage(ctx);
|
||||
if (change.getLastUpdatedOn().before(ctx.getWhen())) {
|
||||
change.setLastUpdatedOn(ctx.getWhen());
|
||||
Change c = notes.getChange();
|
||||
if (c.getLastUpdatedOn().before(ctx.getWhen())) {
|
||||
c.setLastUpdatedOn(ctx.getWhen());
|
||||
}
|
||||
if (dirty) {
|
||||
ctx.saveChange();
|
||||
@@ -380,14 +382,14 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
|
||||
if (in.notify.compareTo(NotifyHandling.NONE) > 0) {
|
||||
email.create(
|
||||
in.notify,
|
||||
change,
|
||||
notes,
|
||||
ps,
|
||||
user.getAccountId(),
|
||||
message,
|
||||
comments).sendAsync();
|
||||
}
|
||||
try {
|
||||
hooks.doCommentAddedHook(change, user.getAccount(), ps,
|
||||
hooks.doCommentAddedHook(notes.getChange(), user.getAccount(), ps,
|
||||
message.getMessage(), categories, ctx.getDb());
|
||||
} catch (OrmException e) {
|
||||
log.warn("ChangeHook.doCommentAddedHook delivery failed", e);
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
package com.google.gerrit.server.patch;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.reviewdb.client.PatchSetInfo;
|
||||
import com.google.gerrit.reviewdb.client.Project;
|
||||
import com.google.gerrit.reviewdb.client.RevId;
|
||||
import com.google.gerrit.reviewdb.client.UserIdentity;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
@@ -78,16 +78,15 @@ public class PatchSetInfoFactory {
|
||||
throws PatchSetInfoNotAvailableException {
|
||||
try {
|
||||
PatchSet patchSet = psUtil.get(db, notes, psId);
|
||||
Change change = db.changes().get(psId.getParentKey());
|
||||
return get(change, patchSet);
|
||||
return get(notes.getProjectName(), patchSet);
|
||||
} catch (OrmException e) {
|
||||
throw new PatchSetInfoNotAvailableException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public PatchSetInfo get(Change change, PatchSet patchSet)
|
||||
public PatchSetInfo get(Project.NameKey project, PatchSet patchSet)
|
||||
throws PatchSetInfoNotAvailableException {
|
||||
try (Repository repo = repoManager.openRepository(change.getProject());
|
||||
try (Repository repo = repoManager.openRepository(project);
|
||||
RevWalk rw = new RevWalk(repo)) {
|
||||
final RevCommit src =
|
||||
rw.parseCommit(ObjectId.fromString(patchSet.getRevision().get()));
|
||||
|
||||
Reference in New Issue
Block a user