diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ApprovalsUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ApprovalsUtil.java index f77e7d9bbc..da377b0d51 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/ApprovalsUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/ApprovalsUtil.java @@ -26,6 +26,7 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; import com.google.common.collect.Sets; +import com.google.common.primitives.Shorts; import com.google.gerrit.common.data.LabelType; import com.google.gerrit.common.data.LabelTypes; import com.google.gerrit.common.data.Permission; @@ -86,6 +87,18 @@ public class ApprovalsUtil { return SORT_APPROVALS.sortedCopy(approvals); } + public static PatchSetApproval newApproval(PatchSet.Id psId, CurrentUser user, + LabelId labelId, int value, Date when) { + PatchSetApproval psa = new PatchSetApproval( + new PatchSetApproval.Key( + psId, + user.getAccountId(), + labelId), + Shorts.checkedCast(value), + when); + return psa; + } + private static Iterable filterApprovals( Iterable psas, final Account.Id accountId) { return Iterables.filter( @@ -288,12 +301,9 @@ public class ApprovalsUtil { Date ts = update.getWhen(); for (Map.Entry vote : approvals.entrySet()) { LabelType lt = labelTypes.byLabel(vote.getKey()); - cells.add(new PatchSetApproval(new PatchSetApproval.Key( - ps.getId(), - ps.getUploader(), - lt.getLabelId()), - vote.getValue(), - ts)); + cells.add( + newApproval(ps.getId(), changeCtl.getUser(), lt.getLabelId(), + vote.getValue(), ts)); } for (PatchSetApproval psa : cells) { update.putApproval(psa.getLabel(), psa.getValue()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeMessagesUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeMessagesUtil.java index f3fdbcbfee..920cd75d16 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeMessagesUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeMessagesUtil.java @@ -14,12 +14,15 @@ package com.google.gerrit.server; +import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import com.google.common.annotations.VisibleForTesting; +import com.google.gerrit.reviewdb.client.Account; import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.server.ReviewDb; +import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.notedb.ChangeNotes; import com.google.gerrit.server.notedb.ChangeUpdate; import com.google.gerrit.server.notedb.NotesMigration; @@ -27,6 +30,7 @@ import com.google.gwtorm.server.OrmException; import com.google.inject.Inject; import com.google.inject.Singleton; +import java.sql.Timestamp; import java.util.Collections; import java.util.List; import java.util.Objects; @@ -39,6 +43,25 @@ import java.util.Objects; */ @Singleton public class ChangeMessagesUtil { + public static ChangeMessage newMessage(BatchUpdate.ChangeContext ctx, + String body) throws OrmException { + return newMessage( + ctx.getDb(), ctx.getChange().currentPatchSetId(), + ctx.getUser(), ctx.getWhen(), body); + } + + public static ChangeMessage newMessage( + ReviewDb db, PatchSet.Id psId, CurrentUser user, Timestamp when, + String body) throws OrmException { + checkNotNull(psId); + Account.Id accountId = user.isInternalUser() ? null : user.getAccountId(); + ChangeMessage m = new ChangeMessage( + new ChangeMessage.Key(psId.getParentKey(), ChangeUtil.messageUUID(db)), + accountId, when, psId); + m.setMessage(body); + return m; + } + private static List sortChangeMessages( Iterable changeMessage) { return ChangeNotes.MESSAGE_BY_TIME.sortedCopy(changeMessage); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java index c4bd68d0bb..45f0afe55d 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Abandon.java @@ -31,7 +31,6 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.extensions.events.ChangeAbandoned; @@ -106,7 +105,7 @@ public class Abandon implements RestModifyView, public Change abandon(ChangeControl control, String msgTxt, NotifyHandling notifyHandling) throws RestApiException, UpdateException { - Op op = new Op(control.getUser(), msgTxt, notifyHandling); + Op op = new Op(msgTxt, notifyHandling); try (BatchUpdate u = batchUpdateFactory.create( dbProvider.get(), @@ -142,8 +141,7 @@ public class Abandon implements RestModifyView, control.getProject().getNameKey().get(), project.get())); } - u.addOp( - control.getId(), new Op(control.getUser(), msgTxt, notifyHandling)); + u.addOp(control.getId(), new Op(msgTxt, notifyHandling)); } u.execute(); } @@ -164,18 +162,14 @@ public class Abandon implements RestModifyView, private class Op extends BatchUpdate.Op { private final String msgTxt; private final NotifyHandling notifyHandling; - private final Account account; private Change change; private PatchSet patchSet; private ChangeMessage message; - private Op(CurrentUser user, String msgTxt, NotifyHandling notifyHandling) { + private Op(String msgTxt, NotifyHandling notifyHandling) { this.msgTxt = msgTxt; this.notifyHandling = notifyHandling; - account = user.isIdentifiedUser() - ? user.asIdentifiedUser().getAccount() - : null; } @Override @@ -208,19 +202,14 @@ public class Abandon implements RestModifyView, msg.append(msgTxt.trim()); } - ChangeMessage message = new ChangeMessage( - new ChangeMessage.Key( - change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - account != null ? account.getId() : null, - ctx.getWhen(), - change.currentPatchSetId()); - message.setMessage(msg.toString()); - return message; + return ChangeMessagesUtil.newMessage(ctx, msg.toString()); } @Override public void postUpdate(Context ctx) throws OrmException { + Account account = ctx.getUser().isIdentifiedUser() + ? ctx.getUser().asIdentifiedUser().getAccount() + : null; try { ReplyToChangeSender cm = abandonedSenderFactory.create(ctx.getProject(), change.getId()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java index e71a343f9c..188d4a4d65 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeInserter.java @@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.PatchSetInfo; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.events.CommitReceivedEvent; @@ -364,11 +363,9 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp { approvalsUtil.addApprovalsForNewPatchSet( db, update, labelTypes, patchSet, ctx.getControl(), approvals); if (message != null) { - changeMessage = - new ChangeMessage(new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(db)), ctx.getAccountId(), - patchSet.getCreatedOn(), patchSet.getId()); - changeMessage.setMessage(message); + changeMessage = ChangeMessagesUtil.newMessage( + db, patchSet.getId(), ctx.getUser(), patchSet.getCreatedOn(), + message); cmUtil.addChangeMessage(db, update, changeMessage); } return true; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java index 0c620e2281..248acd37bb 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/CherryPickChange.java @@ -272,10 +272,6 @@ public class CherryPickChange { @Override public boolean updateChange(ChangeContext ctx) throws OrmException { - ChangeMessage changeMessage = new ChangeMessage( - new ChangeMessage.Key( - ctx.getChange().getId(), ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), psId); StringBuilder sb = new StringBuilder("Patch Set ") .append(psId.get()) .append(": Cherry Picked") @@ -284,8 +280,8 @@ public class CherryPickChange { .append(destBranch) .append(" as commit ") .append(cherryPickCommit.name()); - changeMessage.setMessage(sb.toString()); - + ChangeMessage changeMessage = ChangeMessagesUtil.newMessage( + ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), sb.toString()); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), changeMessage); return true; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteAssignee.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteAssignee.java index a572c585e9..70c2ae727c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteAssignee.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteAssignee.java @@ -25,7 +25,6 @@ import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.account.AccountInfoCacheFactory; import com.google.gerrit.server.account.AccountJson; import com.google.gerrit.server.change.DeleteAssignee.Input; @@ -115,14 +114,8 @@ public class DeleteAssignee implements RestModifyView { private void addMessage(BatchUpdate.ChangeContext ctx, ChangeUpdate update, Account deleted) throws OrmException { - ChangeMessage cmsg = new ChangeMessage( - new ChangeMessage.Key( - ctx.getChange().getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), - ctx.getChange().currentPatchSetId()); - cmsg.setMessage( - "Assignee deleted: " + deleted.getName(anonymousCowardName)); + ChangeMessage cmsg = ChangeMessagesUtil.newMessage( + ctx, "Assignee deleted: " + deleted.getName(anonymousCowardName)); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java index 099f8e05f7..72ffa77b0f 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteReviewer.java @@ -36,7 +36,6 @@ import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDbUtil; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.extensions.events.ReviewerDeleted; @@ -185,11 +184,7 @@ public class DeleteReviewer ChangeUpdate update = ctx.getUpdate(currPs.getId()); update.removeReviewer(reviewerId); - changeMessage = new ChangeMessage( - new ChangeMessage.Key(currChange.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), currPs.getId()); - changeMessage.setMessage(msg.toString()); + changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString()); cmUtil.addChangeMessage(ctx.getDb(), update, changeMessage); return true; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java index e25e229244..9b5c802730 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/DeleteVote.java @@ -35,7 +35,6 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.extensions.events.VoteDeleted; @@ -170,20 +169,13 @@ public class DeleteVote ctx.getDb().patchSetApprovals().upsert( Collections.singleton(deletedApproval(ctx))); - changeMessage = - new ChangeMessage(new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), - ctx.getWhen(), - change.currentPatchSetId()); StringBuilder msg = new StringBuilder(); msg.append("Removed "); LabelVote.appendTo(msg, label, checkNotNull(oldApprovals.get(label))); - changeMessage.setMessage( - msg.append(" by ") - .append(userFactory.create(accountId).getNameEmail()) - .append("\n") - .toString()); + msg.append(" by ") + .append(userFactory.create(accountId).getNameEmail()) + .append("\n"); + changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString()); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), changeMessage); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Move.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Move.java index 2139ec42a8..954392c1e2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Move.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Move.java @@ -33,8 +33,6 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; -import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.BatchUpdate.ChangeContext; @@ -94,7 +92,7 @@ public class Move implements RestModifyView { try (BatchUpdate u = batchUpdateFactory.create(dbProvider.get(), req.getChange().getProject(), control.getUser(), TimeUtil.nowTs())) { - u.addOp(req.getChange().getId(), new Op(control, input)); + u.addOp(req.getChange().getId(), new Op(input)); u.execute(); } @@ -103,14 +101,12 @@ public class Move implements RestModifyView { private class Op extends BatchUpdate.Op { private final MoveInput input; - private final IdentifiedUser caller; private Change change; private Branch.NameKey newDestKey; - Op(ChangeControl ctl, MoveInput input) { + Op(MoveInput input) { this.input = input; - this.caller = ctl.getUser().asIdentifiedUser(); } @Override @@ -179,11 +175,8 @@ public class Move implements RestModifyView { msgBuf.append("\n\n"); msgBuf.append(input.message); } - ChangeMessage cmsg = new ChangeMessage( - new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - caller.getAccountId(), ctx.getWhen(), change.currentPatchSetId()); - cmsg.setMessage(msgBuf.toString()); + ChangeMessage cmsg = + ChangeMessagesUtil.newMessage(ctx, msgBuf.toString()); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); return true; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java index 3f38fc3544..5914ccb179 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PatchSetInserter.java @@ -30,7 +30,6 @@ import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalCopier; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.ReviewerSet; import com.google.gerrit.server.events.CommitReceivedEvent; @@ -225,9 +224,8 @@ public class PatchSetInserter extends BatchUpdate.Op { } if (message != null) { - changeMessage = new ChangeMessage( - new ChangeMessage.Key(ctl.getId(), ChangeUtil.messageUUID(db)), - ctx.getAccountId(), ctx.getWhen(), patchSet.getId()); + changeMessage = ChangeMessagesUtil.newMessage( + db, patchSet.getId(), ctx.getUser(), ctx.getWhen(), message); changeMessage.setMessage(message); } 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 c4c526b6a1..7852a2a5be 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 @@ -57,6 +57,7 @@ import com.google.gerrit.extensions.restapi.UnprocessableEntityException; import com.google.gerrit.extensions.restapi.Url; import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.Comment; +import com.google.gerrit.reviewdb.client.LabelId; import com.google.gerrit.reviewdb.client.Patch; import com.google.gerrit.reviewdb.client.PatchLineComment.Status; import com.google.gerrit.reviewdb.client.PatchSet; @@ -790,11 +791,8 @@ public class PostReview implements RestModifyView oldApprovals.put(normName, null); approvals.put(normName, c.getValue()); } else if (c == null) { - c = new PatchSetApproval(new PatchSetApproval.Key( - psId, - user.getAccountId(), - lt.getLabelId()), - ent.getValue(), ctx.getWhen()); + c = ApprovalsUtil.newApproval( + psId, user, lt.getLabelId(), ent.getValue(), ctx.getWhen()); c.setTag(in.tag); c.setGranted(ctx.getWhen()); ups.add(c); @@ -832,12 +830,10 @@ public class PostReview implements RestModifyView if (del.isEmpty()) { // If no existing label is being set to 0, hack in the caller // as a reviewer by picking the first server-wide LabelType. - PatchSetApproval c = new PatchSetApproval(new PatchSetApproval.Key( - psId, - user.getAccountId(), - ctx.getControl().getLabelTypes().getLabelTypes().get(0) - .getLabelId()), - (short) 0, ctx.getWhen()); + LabelId labelId = ctx.getControl().getLabelTypes().getLabelTypes() + .get(0).getLabelId(); + PatchSetApproval c = ApprovalsUtil.newApproval( + psId, user, labelId, 0, ctx.getWhen()); c.setTag(in.tag); c.setGranted(ctx.getWhen()); ups.add(c); @@ -896,17 +892,10 @@ public class PostReview implements RestModifyView return false; } - message = new ChangeMessage( - new ChangeMessage.Key( - psId.getParentKey(), ChangeUtil.messageUUID(ctx.getDb())), - user.getAccountId(), - ctx.getWhen(), - psId); + message = ChangeMessagesUtil.newMessage( + ctx.getDb(), psId, user, ctx.getWhen(), + "Patch Set " + psId.get() + ":" + buf); message.setTag(in.tag); - message.setMessage(String.format( - "Patch Set %d:%s", - psId.get(), - buf.toString())); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), message); return true; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java index 9d997f6a03..35b0ac7c44 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/PublishDraftPatchSet.java @@ -34,7 +34,7 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSetInfo; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalsUtil; -import com.google.gerrit.server.ChangeUtil; +import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.account.AccountResolver; @@ -252,15 +252,12 @@ public class PublishDraftPatchSet implements RestModifyView, change.setTopic(Strings.emptyToNull(newTopicName)); update.setTopic(change.getTopic()); - ChangeMessage cmsg = new ChangeMessage( - new ChangeMessage.Key( - change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), - change.currentPatchSetId()); - cmsg.setMessage(summary); + ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, summary); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); return true; } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java index 9c4c6d993a..f317ef2827 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java @@ -29,7 +29,6 @@ import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.extensions.events.ChangeRestored; import com.google.gerrit.server.git.BatchUpdate; @@ -131,16 +130,7 @@ public class Restore implements RestModifyView, msg.append("\n\n"); msg.append(input.message.trim()); } - - ChangeMessage message = new ChangeMessage( - new ChangeMessage.Key( - change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), - ctx.getWhen(), - change.currentPatchSetId()); - message.setMessage(msg.toString()); - return message; + return ChangeMessagesUtil.newMessage(ctx, msg.toString()); } @Override diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java index 3ca496a8f2..c42b257fb9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Revert.java @@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.PatchSetUtil; @@ -274,14 +273,8 @@ public class Revert implements RestModifyView, public boolean updateChange(ChangeContext ctx) throws Exception { Change change = ctx.getChange(); PatchSet.Id patchSetId = change.currentPatchSetId(); - ChangeMessage changeMessage = new ChangeMessage( - new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(db.get())), - ctx.getAccountId(), ctx.getWhen(), patchSetId); - StringBuilder msgBuf = new StringBuilder(); - msgBuf.append("Created a revert of this change as ") - .append("I").append(computedChangeId.name()); - changeMessage.setMessage(msgBuf.toString()); + ChangeMessage changeMessage = ChangeMessagesUtil.newMessage(ctx, + "Created a revert of this change as I" + computedChangeId.name()); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(patchSetId), changeMessage); return true; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetAssigneeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetAssigneeOp.java index a8ca147ca9..dba5358bc3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetAssigneeOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetAssigneeOp.java @@ -25,7 +25,6 @@ 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.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.account.AccountInfoCacheFactory; import com.google.gerrit.server.account.AccountsCollection; @@ -139,13 +138,7 @@ public class SetAssigneeOp extends BatchUpdate.Op { msg.append(" to: "); msg.append(newAssignee.getName(anonymousCowardName)); } - ChangeMessage cmsg = new ChangeMessage( - new ChangeMessage.Key( - change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), - change.currentPatchSetId()); - cmsg.setMessage(msg.toString()); + ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString()); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java index 34c611b7a6..410e6ec912 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/SetHashtagsOp.java @@ -28,7 +28,6 @@ import com.google.gerrit.extensions.restapi.BadRequestException; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.extensions.events.HashtagsEdited; import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.BatchUpdate.ChangeContext; @@ -129,18 +128,12 @@ public class SetHashtagsOp extends BatchUpdate.Op { return true; } - private void addMessage(Context ctx, ChangeUpdate update) + private void addMessage(ChangeContext ctx, ChangeUpdate update) throws OrmException { StringBuilder msg = new StringBuilder(); appendHashtagMessage(msg, "added", toAdd); appendHashtagMessage(msg, "removed", toRemove); - ChangeMessage cmsg = new ChangeMessage( - new ChangeMessage.Key( - change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), - change.currentPatchSetId()); - cmsg.setMessage(msg.toString()); + ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString()); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java index a3125a5f34..71b29a10f2 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java @@ -47,7 +47,6 @@ import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.InternalUser; import com.google.gerrit.server.git.BatchUpdate.ChangeContext; @@ -764,11 +763,10 @@ public class MergeOp implements AutoCloseable { change.setStatus(Change.Status.ABANDONED); - ChangeMessage msg = new ChangeMessage( - new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - null, change.getLastUpdatedOn(), change.currentPatchSetId()); - msg.setMessage("Project was deleted."); + ChangeMessage msg = ChangeMessagesUtil.newMessage( + ctx.getDb(), change.currentPatchSetId(), + internalUserFactory.create(), change.getLastUpdatedOn(), + "Project was deleted."); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(change.currentPatchSetId()), msg); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java index 2ccc8498c7..6da1335a77 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergedByPushOp.java @@ -22,8 +22,8 @@ import com.google.gerrit.reviewdb.client.LabelId; import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.PatchSetInfo; +import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.extensions.events.ChangeMerged; import com.google.gerrit.server.git.BatchUpdate.ChangeContext; @@ -149,19 +149,13 @@ public class MergedByPushOp extends BatchUpdate.Op { } } msgBuf.append("."); - ChangeMessage msg = new ChangeMessage( - new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), psId); - msg.setMessage(msgBuf.toString()); + ChangeMessage msg = ChangeMessagesUtil.newMessage( + ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), msgBuf.toString()); cmUtil.addChangeMessage(ctx.getDb(), update, msg); - PatchSetApproval submitter = new PatchSetApproval( - new PatchSetApproval.Key( - change.currentPatchSetId(), - ctx.getAccountId(), - LabelId.legacySubmit()), - (short) 1, ctx.getWhen()); + PatchSetApproval submitter = ApprovalsUtil.newApproval( + change.currentPatchSetId(), ctx.getUser(), LabelId.legacySubmit(), + 1, ctx.getWhen()); update.putApproval(submitter.getLabel(), submitter.getValue()); ctx.getDb().patchSetApprovals().upsert( Collections.singleton(submitter)); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java index 4f9617e778..afb682cb61 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/ReplaceOp.java @@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.PatchSetInfo; import com.google.gerrit.server.ApprovalCopier; import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ChangeMessagesUtil; -import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.account.AccountResolver; import com.google.gerrit.server.change.ChangeKindCache; @@ -279,11 +278,8 @@ public class ReplaceOp extends BatchUpdate.Op { if (!Strings.isNullOrEmpty(reviewMessage)) { message.append("\n").append(reviewMessage); } - msg = new ChangeMessage( - new ChangeMessage.Key(change.getId(), - ChangeUtil.messageUUID(ctx.getDb())), - ctx.getAccountId(), ctx.getWhen(), patchSetId); - msg.setMessage(message.toString()); + msg = ChangeMessagesUtil.newMessage(ctx.getDb(), patchSetId, ctx.getUser(), + ctx.getWhen(), message.toString()); cmUtil.addChangeMessage(ctx.getDb(), update, msg); if (mergedByPushOp == null) { diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java index b35de7b876..7dacc6f9c8 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/strategy/SubmitStrategyOp.java @@ -33,7 +33,8 @@ import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDbUtil; -import com.google.gerrit.server.ChangeUtil; +import com.google.gerrit.server.ApprovalsUtil; +import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.BatchUpdate.ChangeContext; @@ -329,15 +330,9 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op { byKey.put(psa.getKey(), psa); } - submitter = new PatchSetApproval( - new PatchSetApproval.Key( - psId, - ctx.getAccountId(), - LabelId.legacySubmit()), - (short) 1, ctx.getWhen()); + submitter = ApprovalsUtil.newApproval( + psId, ctx.getUser(), LabelId.legacySubmit(), 1, ctx.getWhen()); byKey.put(submitter.getKey(), submitter); - submitter.setValue((short) 1); - submitter.setGranted(ctx.getWhen()); // Flatten out existing approvals for this patch set based upon the current // permissions. Once the change is closed the approvals are not updated at @@ -415,7 +410,7 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op { } private ChangeMessage message(ChangeContext ctx, CodeReviewCommit commit, - CommitMergeStatus s) { + CommitMergeStatus s) throws OrmException { checkNotNull(s, "CommitMergeStatus may not be null"); String txt = s.getMessage(); if (s == CommitMergeStatus.CLEAN_MERGE) { @@ -452,19 +447,9 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op { } private ChangeMessage message(ChangeContext ctx, PatchSet.Id psId, - String body) { - checkNotNull(psId); - String uuid; - try { - uuid = ChangeUtil.messageUUID(ctx.getDb()); - } catch (OrmException e) { - return null; - } - ChangeMessage m = new ChangeMessage( - new ChangeMessage.Key(psId.getParentKey(), uuid), - ctx.getAccountId(), ctx.getWhen(), psId); - m.setMessage(body); - return m; + String body) throws OrmException { + return ChangeMessagesUtil.newMessage( + ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), body); } private void setMerged(ChangeContext ctx, ChangeMessage msg)