diff --git a/gerrit-server/src/main/java/com/google/gerrit/rules/StoredValues.java b/gerrit-server/src/main/java/com/google/gerrit/rules/StoredValues.java index 44c1f01c8f..bc301e3ca0 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/rules/StoredValues.java +++ b/gerrit-server/src/main/java/com/google/gerrit/rules/StoredValues.java @@ -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()); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java index 62b7c04f63..243e8553eb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/EmailReviewComments.java @@ -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 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); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java index ab795f4a97..f30882c77f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PostReview.java @@ -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 private final ReviewInput in; private IdentifiedUser user; - private Change change; + private ChangeNotes notes; private PatchSet ps; private ChangeMessage message; private List comments = new ArrayList<>(); @@ -357,14 +358,15 @@ public class PostReview implements RestModifyView 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 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); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchSetInfoFactory.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchSetInfoFactory.java index b1ed4ca2e2..4716255135 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchSetInfoFactory.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchSetInfoFactory.java @@ -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()));