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