Add convenience methods for constructing approvals and messages

This saves a lot of boilerplate, nested key construction, ChangeUtil
usage, etc. Particularly in the case of ChangeMessage, we can usually
infer pretty much everything directly from the ChangeContext.

Change-Id: I93eb1e5f5c766b4f661bf21084760141b4d1db02
This commit is contained in:
Dave Borowitz
2016-10-05 17:23:32 -04:00
parent 76a0028397
commit 2e8857a18b
21 changed files with 106 additions and 199 deletions

View File

@@ -26,6 +26,7 @@ import com.google.common.collect.ListMultimap;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Ordering; import com.google.common.collect.Ordering;
import com.google.common.collect.Sets; 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.LabelType;
import com.google.gerrit.common.data.LabelTypes; import com.google.gerrit.common.data.LabelTypes;
import com.google.gerrit.common.data.Permission; import com.google.gerrit.common.data.Permission;
@@ -86,6 +87,18 @@ public class ApprovalsUtil {
return SORT_APPROVALS.sortedCopy(approvals); 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<PatchSetApproval> filterApprovals( private static Iterable<PatchSetApproval> filterApprovals(
Iterable<PatchSetApproval> psas, final Account.Id accountId) { Iterable<PatchSetApproval> psas, final Account.Id accountId) {
return Iterables.filter( return Iterables.filter(
@@ -288,12 +301,9 @@ public class ApprovalsUtil {
Date ts = update.getWhen(); Date ts = update.getWhen();
for (Map.Entry<String, Short> vote : approvals.entrySet()) { for (Map.Entry<String, Short> vote : approvals.entrySet()) {
LabelType lt = labelTypes.byLabel(vote.getKey()); LabelType lt = labelTypes.byLabel(vote.getKey());
cells.add(new PatchSetApproval(new PatchSetApproval.Key( cells.add(
ps.getId(), newApproval(ps.getId(), changeCtl.getUser(), lt.getLabelId(),
ps.getUploader(), vote.getValue(), ts));
lt.getLabelId()),
vote.getValue(),
ts));
} }
for (PatchSetApproval psa : cells) { for (PatchSetApproval psa : cells) {
update.putApproval(psa.getLabel(), psa.getValue()); update.putApproval(psa.getLabel(), psa.getValue());

View File

@@ -14,12 +14,15 @@
package com.google.gerrit.server; package com.google.gerrit.server;
import static com.google.common.base.Preconditions.checkNotNull;
import static com.google.common.base.Preconditions.checkState; import static com.google.common.base.Preconditions.checkState;
import com.google.common.annotations.VisibleForTesting; 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.ChangeMessage;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.server.ReviewDb; 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.ChangeNotes;
import com.google.gerrit.server.notedb.ChangeUpdate; import com.google.gerrit.server.notedb.ChangeUpdate;
import com.google.gerrit.server.notedb.NotesMigration; 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.Inject;
import com.google.inject.Singleton; import com.google.inject.Singleton;
import java.sql.Timestamp;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@@ -39,6 +43,25 @@ import java.util.Objects;
*/ */
@Singleton @Singleton
public class ChangeMessagesUtil { 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<ChangeMessage> sortChangeMessages( private static List<ChangeMessage> sortChangeMessages(
Iterable<ChangeMessage> changeMessage) { Iterable<ChangeMessage> changeMessage) {
return ChangeNotes.MESSAGE_BY_TIME.sortedCopy(changeMessage); return ChangeNotes.MESSAGE_BY_TIME.sortedCopy(changeMessage);

View File

@@ -31,7 +31,6 @@ import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.extensions.events.ChangeAbandoned; import com.google.gerrit.server.extensions.events.ChangeAbandoned;
@@ -106,7 +105,7 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
public Change abandon(ChangeControl control, String msgTxt, public Change abandon(ChangeControl control, String msgTxt,
NotifyHandling notifyHandling) throws RestApiException, UpdateException { NotifyHandling notifyHandling) throws RestApiException, UpdateException {
Op op = new Op(control.getUser(), msgTxt, notifyHandling); Op op = new Op(msgTxt, notifyHandling);
try (BatchUpdate u = try (BatchUpdate u =
batchUpdateFactory.create( batchUpdateFactory.create(
dbProvider.get(), dbProvider.get(),
@@ -142,8 +141,7 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
control.getProject().getNameKey().get(), control.getProject().getNameKey().get(),
project.get())); project.get()));
} }
u.addOp( u.addOp(control.getId(), new Op(msgTxt, notifyHandling));
control.getId(), new Op(control.getUser(), msgTxt, notifyHandling));
} }
u.execute(); u.execute();
} }
@@ -164,18 +162,14 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
private class Op extends BatchUpdate.Op { private class Op extends BatchUpdate.Op {
private final String msgTxt; private final String msgTxt;
private final NotifyHandling notifyHandling; private final NotifyHandling notifyHandling;
private final Account account;
private Change change; private Change change;
private PatchSet patchSet; private PatchSet patchSet;
private ChangeMessage message; private ChangeMessage message;
private Op(CurrentUser user, String msgTxt, NotifyHandling notifyHandling) { private Op(String msgTxt, NotifyHandling notifyHandling) {
this.msgTxt = msgTxt; this.msgTxt = msgTxt;
this.notifyHandling = notifyHandling; this.notifyHandling = notifyHandling;
account = user.isIdentifiedUser()
? user.asIdentifiedUser().getAccount()
: null;
} }
@Override @Override
@@ -208,19 +202,14 @@ public class Abandon implements RestModifyView<ChangeResource, AbandonInput>,
msg.append(msgTxt.trim()); msg.append(msgTxt.trim());
} }
ChangeMessage message = new ChangeMessage( return ChangeMessagesUtil.newMessage(ctx, msg.toString());
new ChangeMessage.Key(
change.getId(),
ChangeUtil.messageUUID(ctx.getDb())),
account != null ? account.getId() : null,
ctx.getWhen(),
change.currentPatchSetId());
message.setMessage(msg.toString());
return message;
} }
@Override @Override
public void postUpdate(Context ctx) throws OrmException { public void postUpdate(Context ctx) throws OrmException {
Account account = ctx.getUser().isIdentifiedUser()
? ctx.getUser().asIdentifiedUser().getAccount()
: null;
try { try {
ReplyToChangeSender cm = ReplyToChangeSender cm =
abandonedSenderFactory.create(ctx.getProject(), change.getId()); abandonedSenderFactory.create(ctx.getProject(), change.getId());

View File

@@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.PatchSetInfo;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.events.CommitReceivedEvent; import com.google.gerrit.server.events.CommitReceivedEvent;
@@ -364,11 +363,9 @@ public class ChangeInserter extends BatchUpdate.InsertChangeOp {
approvalsUtil.addApprovalsForNewPatchSet( approvalsUtil.addApprovalsForNewPatchSet(
db, update, labelTypes, patchSet, ctx.getControl(), approvals); db, update, labelTypes, patchSet, ctx.getControl(), approvals);
if (message != null) { if (message != null) {
changeMessage = changeMessage = ChangeMessagesUtil.newMessage(
new ChangeMessage(new ChangeMessage.Key(change.getId(), db, patchSet.getId(), ctx.getUser(), patchSet.getCreatedOn(),
ChangeUtil.messageUUID(db)), ctx.getAccountId(), message);
patchSet.getCreatedOn(), patchSet.getId());
changeMessage.setMessage(message);
cmUtil.addChangeMessage(db, update, changeMessage); cmUtil.addChangeMessage(db, update, changeMessage);
} }
return true; return true;

View File

@@ -272,10 +272,6 @@ public class CherryPickChange {
@Override @Override
public boolean updateChange(ChangeContext ctx) throws OrmException { 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 ") StringBuilder sb = new StringBuilder("Patch Set ")
.append(psId.get()) .append(psId.get())
.append(": Cherry Picked") .append(": Cherry Picked")
@@ -284,8 +280,8 @@ public class CherryPickChange {
.append(destBranch) .append(destBranch)
.append(" as commit ") .append(" as commit ")
.append(cherryPickCommit.name()); .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); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), changeMessage);
return true; return true;
} }

View File

@@ -25,7 +25,6 @@ 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.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeMessagesUtil; 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.AccountInfoCacheFactory;
import com.google.gerrit.server.account.AccountJson; import com.google.gerrit.server.account.AccountJson;
import com.google.gerrit.server.change.DeleteAssignee.Input; import com.google.gerrit.server.change.DeleteAssignee.Input;
@@ -115,14 +114,8 @@ public class DeleteAssignee implements RestModifyView<ChangeResource, Input> {
private void addMessage(BatchUpdate.ChangeContext ctx, private void addMessage(BatchUpdate.ChangeContext ctx,
ChangeUpdate update, Account deleted) throws OrmException { ChangeUpdate update, Account deleted) throws OrmException {
ChangeMessage cmsg = new ChangeMessage( ChangeMessage cmsg = ChangeMessagesUtil.newMessage(
new ChangeMessage.Key( ctx, "Assignee deleted: " + deleted.getName(anonymousCowardName));
ctx.getChange().getId(),
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(),
ctx.getChange().currentPatchSetId());
cmsg.setMessage(
"Assignee deleted: " + deleted.getName(anonymousCowardName));
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
} }

View File

@@ -36,7 +36,6 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.reviewdb.server.ReviewDbUtil; import com.google.gerrit.reviewdb.server.ReviewDbUtil;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.extensions.events.ReviewerDeleted; import com.google.gerrit.server.extensions.events.ReviewerDeleted;
@@ -185,11 +184,7 @@ public class DeleteReviewer
ChangeUpdate update = ctx.getUpdate(currPs.getId()); ChangeUpdate update = ctx.getUpdate(currPs.getId());
update.removeReviewer(reviewerId); update.removeReviewer(reviewerId);
changeMessage = new ChangeMessage( changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString());
new ChangeMessage.Key(currChange.getId(),
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(), currPs.getId());
changeMessage.setMessage(msg.toString());
cmUtil.addChangeMessage(ctx.getDb(), update, changeMessage); cmUtil.addChangeMessage(ctx.getDb(), update, changeMessage);
return true; return true;

View File

@@ -35,7 +35,6 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.extensions.events.VoteDeleted; import com.google.gerrit.server.extensions.events.VoteDeleted;
@@ -170,20 +169,13 @@ public class DeleteVote
ctx.getDb().patchSetApprovals().upsert( ctx.getDb().patchSetApprovals().upsert(
Collections.singleton(deletedApproval(ctx))); 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(); StringBuilder msg = new StringBuilder();
msg.append("Removed "); msg.append("Removed ");
LabelVote.appendTo(msg, label, checkNotNull(oldApprovals.get(label))); LabelVote.appendTo(msg, label, checkNotNull(oldApprovals.get(label)));
changeMessage.setMessage( msg.append(" by ")
msg.append(" by ") .append(userFactory.create(accountId).getNameEmail())
.append(userFactory.create(accountId).getNameEmail()) .append("\n");
.append("\n") changeMessage = ChangeMessagesUtil.newMessage(ctx, msg.toString());
.toString());
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId),
changeMessage); changeMessage);

View File

@@ -33,8 +33,6 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeMessagesUtil; 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.PatchSetUtil;
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;
@@ -94,7 +92,7 @@ public class Move implements RestModifyView<ChangeResource, MoveInput> {
try (BatchUpdate u = batchUpdateFactory.create(dbProvider.get(), try (BatchUpdate u = batchUpdateFactory.create(dbProvider.get(),
req.getChange().getProject(), control.getUser(), TimeUtil.nowTs())) { 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(); u.execute();
} }
@@ -103,14 +101,12 @@ public class Move implements RestModifyView<ChangeResource, MoveInput> {
private class Op extends BatchUpdate.Op { private class Op extends BatchUpdate.Op {
private final MoveInput input; private final MoveInput input;
private final IdentifiedUser caller;
private Change change; private Change change;
private Branch.NameKey newDestKey; private Branch.NameKey newDestKey;
Op(ChangeControl ctl, MoveInput input) { Op(MoveInput input) {
this.input = input; this.input = input;
this.caller = ctl.getUser().asIdentifiedUser();
} }
@Override @Override
@@ -179,11 +175,8 @@ public class Move implements RestModifyView<ChangeResource, MoveInput> {
msgBuf.append("\n\n"); msgBuf.append("\n\n");
msgBuf.append(input.message); msgBuf.append(input.message);
} }
ChangeMessage cmsg = new ChangeMessage( ChangeMessage cmsg =
new ChangeMessage.Key(change.getId(), ChangeMessagesUtil.newMessage(ctx, msgBuf.toString());
ChangeUtil.messageUUID(ctx.getDb())),
caller.getAccountId(), ctx.getWhen(), change.currentPatchSetId());
cmsg.setMessage(msgBuf.toString());
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
return true; return true;

View File

@@ -30,7 +30,6 @@ import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalCopier; import com.google.gerrit.server.ApprovalCopier;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.ReviewerSet; import com.google.gerrit.server.ReviewerSet;
import com.google.gerrit.server.events.CommitReceivedEvent; import com.google.gerrit.server.events.CommitReceivedEvent;
@@ -225,9 +224,8 @@ public class PatchSetInserter extends BatchUpdate.Op {
} }
if (message != null) { if (message != null) {
changeMessage = new ChangeMessage( changeMessage = ChangeMessagesUtil.newMessage(
new ChangeMessage.Key(ctl.getId(), ChangeUtil.messageUUID(db)), db, patchSet.getId(), ctx.getUser(), ctx.getWhen(), message);
ctx.getAccountId(), ctx.getWhen(), patchSet.getId());
changeMessage.setMessage(message); changeMessage.setMessage(message);
} }

View File

@@ -57,6 +57,7 @@ import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
import com.google.gerrit.extensions.restapi.Url; import com.google.gerrit.extensions.restapi.Url;
import com.google.gerrit.reviewdb.client.ChangeMessage; import com.google.gerrit.reviewdb.client.ChangeMessage;
import com.google.gerrit.reviewdb.client.Comment; 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.Patch;
import com.google.gerrit.reviewdb.client.PatchLineComment.Status; import com.google.gerrit.reviewdb.client.PatchLineComment.Status;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
@@ -790,11 +791,8 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
oldApprovals.put(normName, null); oldApprovals.put(normName, null);
approvals.put(normName, c.getValue()); approvals.put(normName, c.getValue());
} else if (c == null) { } else if (c == null) {
c = new PatchSetApproval(new PatchSetApproval.Key( c = ApprovalsUtil.newApproval(
psId, psId, user, lt.getLabelId(), ent.getValue(), ctx.getWhen());
user.getAccountId(),
lt.getLabelId()),
ent.getValue(), ctx.getWhen());
c.setTag(in.tag); c.setTag(in.tag);
c.setGranted(ctx.getWhen()); c.setGranted(ctx.getWhen());
ups.add(c); ups.add(c);
@@ -832,12 +830,10 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
if (del.isEmpty()) { if (del.isEmpty()) {
// If no existing label is being set to 0, hack in the caller // If no existing label is being set to 0, hack in the caller
// as a reviewer by picking the first server-wide LabelType. // as a reviewer by picking the first server-wide LabelType.
PatchSetApproval c = new PatchSetApproval(new PatchSetApproval.Key( LabelId labelId = ctx.getControl().getLabelTypes().getLabelTypes()
psId, .get(0).getLabelId();
user.getAccountId(), PatchSetApproval c = ApprovalsUtil.newApproval(
ctx.getControl().getLabelTypes().getLabelTypes().get(0) psId, user, labelId, 0, ctx.getWhen());
.getLabelId()),
(short) 0, ctx.getWhen());
c.setTag(in.tag); c.setTag(in.tag);
c.setGranted(ctx.getWhen()); c.setGranted(ctx.getWhen());
ups.add(c); ups.add(c);
@@ -896,17 +892,10 @@ public class PostReview implements RestModifyView<RevisionResource, ReviewInput>
return false; return false;
} }
message = new ChangeMessage( message = ChangeMessagesUtil.newMessage(
new ChangeMessage.Key( ctx.getDb(), psId, user, ctx.getWhen(),
psId.getParentKey(), ChangeUtil.messageUUID(ctx.getDb())), "Patch Set " + psId.get() + ":" + buf);
user.getAccountId(),
ctx.getWhen(),
psId);
message.setTag(in.tag); message.setTag(in.tag);
message.setMessage(String.format(
"Patch Set %d:%s",
psId.get(),
buf.toString()));
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), message); cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(psId), message);
return true; return true;
} }

View File

@@ -34,7 +34,7 @@ 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.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalsUtil; 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.CurrentUser;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.account.AccountResolver; import com.google.gerrit.server.account.AccountResolver;
@@ -252,15 +252,12 @@ public class PublishDraftPatchSet implements RestModifyView<RevisionResource, In
private void sendReplacePatchSet(Context ctx) private void sendReplacePatchSet(Context ctx)
throws EmailException, OrmException { throws EmailException, OrmException {
Account.Id accountId = ctx.getAccountId(); ChangeMessage msg = ChangeMessagesUtil.newMessage(
ChangeMessage msg = ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(),
new ChangeMessage(new ChangeMessage.Key(change.getId(), "Uploaded patch set " + psId.get() + ".");
ChangeUtil.messageUUID(ctx.getDb())), accountId,
ctx.getWhen(), psId);
msg.setMessage("Uploaded patch set " + psId.get() + ".");
ReplacePatchSetSender cm = ReplacePatchSetSender cm =
replacePatchSetFactory.create(ctx.getProject(), change.getId()); replacePatchSetFactory.create(ctx.getProject(), change.getId());
cm.setFrom(accountId); cm.setFrom(ctx.getAccountId());
cm.setPatchSet(patchSet, patchSetInfo); cm.setPatchSet(patchSet, patchSetInfo);
cm.setChangeMessage(msg.getMessage(), ctx.getWhen()); cm.setChangeMessage(msg.getMessage(), ctx.getWhen());
cm.addReviewers(recipients.getReviewers()); cm.addReviewers(recipients.getReviewers());

View File

@@ -26,7 +26,6 @@ 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.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.change.PutTopic.Input; import com.google.gerrit.server.change.PutTopic.Input;
import com.google.gerrit.server.extensions.events.TopicEdited; import com.google.gerrit.server.extensions.events.TopicEdited;
import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.BatchUpdate;
@@ -115,13 +114,7 @@ public class PutTopic implements RestModifyView<ChangeResource, Input>,
change.setTopic(Strings.emptyToNull(newTopicName)); change.setTopic(Strings.emptyToNull(newTopicName));
update.setTopic(change.getTopic()); update.setTopic(change.getTopic());
ChangeMessage cmsg = new ChangeMessage( ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, summary);
new ChangeMessage.Key(
change.getId(),
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(),
change.currentPatchSetId());
cmsg.setMessage(summary);
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
return true; return true;
} }

View File

@@ -29,7 +29,6 @@ import com.google.gerrit.reviewdb.client.ChangeMessage;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.extensions.events.ChangeRestored; import com.google.gerrit.server.extensions.events.ChangeRestored;
import com.google.gerrit.server.git.BatchUpdate; import com.google.gerrit.server.git.BatchUpdate;
@@ -131,16 +130,7 @@ public class Restore implements RestModifyView<ChangeResource, RestoreInput>,
msg.append("\n\n"); msg.append("\n\n");
msg.append(input.message.trim()); msg.append(input.message.trim());
} }
return ChangeMessagesUtil.newMessage(ctx, msg.toString());
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;
} }
@Override @Override

View File

@@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.CurrentUser; import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.GerritPersonIdent; import com.google.gerrit.server.GerritPersonIdent;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
@@ -274,14 +273,8 @@ public class Revert implements RestModifyView<ChangeResource, RevertInput>,
public boolean updateChange(ChangeContext ctx) throws Exception { public boolean updateChange(ChangeContext ctx) throws Exception {
Change change = ctx.getChange(); Change change = ctx.getChange();
PatchSet.Id patchSetId = change.currentPatchSetId(); PatchSet.Id patchSetId = change.currentPatchSetId();
ChangeMessage changeMessage = new ChangeMessage( ChangeMessage changeMessage = ChangeMessagesUtil.newMessage(ctx,
new ChangeMessage.Key(change.getId(), "Created a revert of this change as I" + computedChangeId.name());
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());
cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(patchSetId), cmUtil.addChangeMessage(ctx.getDb(), ctx.getUpdate(patchSetId),
changeMessage); changeMessage);
return true; return true;

View File

@@ -25,7 +25,6 @@ import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Change; 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.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.account.AccountInfoCacheFactory; import com.google.gerrit.server.account.AccountInfoCacheFactory;
import com.google.gerrit.server.account.AccountsCollection; import com.google.gerrit.server.account.AccountsCollection;
@@ -139,13 +138,7 @@ public class SetAssigneeOp extends BatchUpdate.Op {
msg.append(" to: "); msg.append(" to: ");
msg.append(newAssignee.getName(anonymousCowardName)); msg.append(newAssignee.getName(anonymousCowardName));
} }
ChangeMessage cmsg = new ChangeMessage( ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString());
new ChangeMessage.Key(
change.getId(),
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(),
change.currentPatchSetId());
cmsg.setMessage(msg.toString());
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
} }

View File

@@ -28,7 +28,6 @@ import com.google.gerrit.extensions.restapi.BadRequestException;
import com.google.gerrit.reviewdb.client.Change; 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.server.ChangeMessagesUtil; 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.extensions.events.HashtagsEdited;
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;
@@ -129,18 +128,12 @@ public class SetHashtagsOp extends BatchUpdate.Op {
return true; return true;
} }
private void addMessage(Context ctx, ChangeUpdate update) private void addMessage(ChangeContext ctx, ChangeUpdate update)
throws OrmException { throws OrmException {
StringBuilder msg = new StringBuilder(); StringBuilder msg = new StringBuilder();
appendHashtagMessage(msg, "added", toAdd); appendHashtagMessage(msg, "added", toAdd);
appendHashtagMessage(msg, "removed", toRemove); appendHashtagMessage(msg, "removed", toRemove);
ChangeMessage cmsg = new ChangeMessage( ChangeMessage cmsg = ChangeMessagesUtil.newMessage(ctx, msg.toString());
new ChangeMessage.Key(
change.getId(),
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(),
change.currentPatchSetId());
cmsg.setMessage(msg.toString());
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg); cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
} }

View File

@@ -47,7 +47,6 @@ import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.IdentifiedUser;
import com.google.gerrit.server.InternalUser; import com.google.gerrit.server.InternalUser;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext; import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
@@ -764,11 +763,10 @@ public class MergeOp implements AutoCloseable {
change.setStatus(Change.Status.ABANDONED); change.setStatus(Change.Status.ABANDONED);
ChangeMessage msg = new ChangeMessage( ChangeMessage msg = ChangeMessagesUtil.newMessage(
new ChangeMessage.Key(change.getId(), ctx.getDb(), change.currentPatchSetId(),
ChangeUtil.messageUUID(ctx.getDb())), internalUserFactory.create(), change.getLastUpdatedOn(),
null, change.getLastUpdatedOn(), change.currentPatchSetId()); "Project was deleted.");
msg.setMessage("Project was deleted.");
cmUtil.addChangeMessage(ctx.getDb(), cmUtil.addChangeMessage(ctx.getDb(),
ctx.getUpdate(change.currentPatchSetId()), msg); ctx.getUpdate(change.currentPatchSetId()), msg);

View File

@@ -22,8 +22,8 @@ import com.google.gerrit.reviewdb.client.LabelId;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.PatchSetApproval; import com.google.gerrit.reviewdb.client.PatchSetApproval;
import com.google.gerrit.reviewdb.client.PatchSetInfo; import com.google.gerrit.reviewdb.client.PatchSetInfo;
import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.extensions.events.ChangeMerged; import com.google.gerrit.server.extensions.events.ChangeMerged;
import com.google.gerrit.server.git.BatchUpdate.ChangeContext; import com.google.gerrit.server.git.BatchUpdate.ChangeContext;
@@ -149,19 +149,13 @@ public class MergedByPushOp extends BatchUpdate.Op {
} }
} }
msgBuf.append("."); msgBuf.append(".");
ChangeMessage msg = new ChangeMessage( ChangeMessage msg = ChangeMessagesUtil.newMessage(
new ChangeMessage.Key(change.getId(), ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), msgBuf.toString());
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(), psId);
msg.setMessage(msgBuf.toString());
cmUtil.addChangeMessage(ctx.getDb(), update, msg); cmUtil.addChangeMessage(ctx.getDb(), update, msg);
PatchSetApproval submitter = new PatchSetApproval( PatchSetApproval submitter = ApprovalsUtil.newApproval(
new PatchSetApproval.Key( change.currentPatchSetId(), ctx.getUser(), LabelId.legacySubmit(),
change.currentPatchSetId(), 1, ctx.getWhen());
ctx.getAccountId(),
LabelId.legacySubmit()),
(short) 1, ctx.getWhen());
update.putApproval(submitter.getLabel(), submitter.getValue()); update.putApproval(submitter.getLabel(), submitter.getValue());
ctx.getDb().patchSetApprovals().upsert( ctx.getDb().patchSetApprovals().upsert(
Collections.singleton(submitter)); Collections.singleton(submitter));

View File

@@ -34,7 +34,6 @@ import com.google.gerrit.reviewdb.client.PatchSetInfo;
import com.google.gerrit.server.ApprovalCopier; import com.google.gerrit.server.ApprovalCopier;
import com.google.gerrit.server.ApprovalsUtil; import com.google.gerrit.server.ApprovalsUtil;
import com.google.gerrit.server.ChangeMessagesUtil; import com.google.gerrit.server.ChangeMessagesUtil;
import com.google.gerrit.server.ChangeUtil;
import com.google.gerrit.server.PatchSetUtil; import com.google.gerrit.server.PatchSetUtil;
import com.google.gerrit.server.account.AccountResolver; import com.google.gerrit.server.account.AccountResolver;
import com.google.gerrit.server.change.ChangeKindCache; import com.google.gerrit.server.change.ChangeKindCache;
@@ -279,11 +278,8 @@ public class ReplaceOp extends BatchUpdate.Op {
if (!Strings.isNullOrEmpty(reviewMessage)) { if (!Strings.isNullOrEmpty(reviewMessage)) {
message.append("\n").append(reviewMessage); message.append("\n").append(reviewMessage);
} }
msg = new ChangeMessage( msg = ChangeMessagesUtil.newMessage(ctx.getDb(), patchSetId, ctx.getUser(),
new ChangeMessage.Key(change.getId(), ctx.getWhen(), message.toString());
ChangeUtil.messageUUID(ctx.getDb())),
ctx.getAccountId(), ctx.getWhen(), patchSetId);
msg.setMessage(message.toString());
cmUtil.addChangeMessage(ctx.getDb(), update, msg); cmUtil.addChangeMessage(ctx.getDb(), update, msg);
if (mergedByPushOp == null) { if (mergedByPushOp == null) {

View File

@@ -33,7 +33,8 @@ import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.client.RefNames; import com.google.gerrit.reviewdb.client.RefNames;
import com.google.gerrit.reviewdb.server.ReviewDb; import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.reviewdb.server.ReviewDbUtil; 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.IdentifiedUser;
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;
@@ -329,15 +330,9 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op {
byKey.put(psa.getKey(), psa); byKey.put(psa.getKey(), psa);
} }
submitter = new PatchSetApproval( submitter = ApprovalsUtil.newApproval(
new PatchSetApproval.Key( psId, ctx.getUser(), LabelId.legacySubmit(), 1, ctx.getWhen());
psId,
ctx.getAccountId(),
LabelId.legacySubmit()),
(short) 1, ctx.getWhen());
byKey.put(submitter.getKey(), submitter); 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 // Flatten out existing approvals for this patch set based upon the current
// permissions. Once the change is closed the approvals are not updated at // 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, private ChangeMessage message(ChangeContext ctx, CodeReviewCommit commit,
CommitMergeStatus s) { CommitMergeStatus s) throws OrmException {
checkNotNull(s, "CommitMergeStatus may not be null"); checkNotNull(s, "CommitMergeStatus may not be null");
String txt = s.getMessage(); String txt = s.getMessage();
if (s == CommitMergeStatus.CLEAN_MERGE) { if (s == CommitMergeStatus.CLEAN_MERGE) {
@@ -452,19 +447,9 @@ abstract class SubmitStrategyOp extends BatchUpdate.Op {
} }
private ChangeMessage message(ChangeContext ctx, PatchSet.Id psId, private ChangeMessage message(ChangeContext ctx, PatchSet.Id psId,
String body) { String body) throws OrmException {
checkNotNull(psId); return ChangeMessagesUtil.newMessage(
String uuid; ctx.getDb(), psId, ctx.getUser(), ctx.getWhen(), body);
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;
} }
private void setMerged(ChangeContext ctx, ChangeMessage msg) private void setMerged(ChangeContext ctx, ChangeMessage msg)