Add a change message when the private flag on a change is set/unset
This allows users to see when a change was turned private and vice versa. Also the message can be used to set the private flag on the change with the correct timestamp when rebuilding the change (see follow-up change). Change-Id: I6beb665277021e8951580af2495b3539fe646b5c Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
@@ -55,7 +55,9 @@ public class ChangeMessagesUtil {
|
||||
public static final String TAG_SET_ASSIGNEE = "autogenerated:gerrit:setAssignee";
|
||||
public static final String TAG_SET_DESCRIPTION = "autogenerated:gerrit:setPsDescription";
|
||||
public static final String TAG_SET_HASHTAGS = "autogenerated:gerrit:setHashtag";
|
||||
public static final String TAG_SET_PRIVATE = "autogenerated:gerrit:setPrivate";
|
||||
public static final String TAG_SET_TOPIC = "autogenerated:gerrit:setTopic";
|
||||
public static final String TAG_UNSET_PRIVATE = "autogenerated:gerrit:unsetPrivate";
|
||||
public static final String TAG_UPLOADED_PATCH_SET = "autogenerated:gerrit:newPatchSet";
|
||||
|
||||
public static ChangeMessage newMessage(ChangeContext ctx, String body, @Nullable String tag) {
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
import com.google.gerrit.extensions.restapi.RestModifyView;
|
||||
import com.google.gerrit.extensions.webui.UiAction;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.ChangeMessagesUtil;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.update.BatchUpdate;
|
||||
import com.google.gerrit.server.update.UpdateException;
|
||||
@@ -34,13 +35,18 @@ public class DeletePrivate
|
||||
implements RestModifyView<ChangeResource, DeletePrivate.Input>, UiAction<ChangeResource> {
|
||||
public static class Input {}
|
||||
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final BatchUpdate.Factory batchUpdateFactory;
|
||||
|
||||
@Inject
|
||||
DeletePrivate(Provider<ReviewDb> dbProvider, BatchUpdate.Factory batchUpdateFactory) {
|
||||
DeletePrivate(
|
||||
Provider<ReviewDb> dbProvider,
|
||||
BatchUpdate.Factory batchUpdateFactory,
|
||||
ChangeMessagesUtil cmUtil) {
|
||||
this.dbProvider = dbProvider;
|
||||
this.batchUpdateFactory = batchUpdateFactory;
|
||||
this.cmUtil = cmUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,7 +61,7 @@ public class DeletePrivate
|
||||
}
|
||||
|
||||
ChangeControl control = rsrc.getControl();
|
||||
SetPrivateOp op = new SetPrivateOp(false);
|
||||
SetPrivateOp op = new SetPrivateOp(cmUtil, false);
|
||||
try (BatchUpdate u =
|
||||
batchUpdateFactory.create(
|
||||
dbProvider.get(),
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.gerrit.extensions.restapi.RestModifyView;
|
||||
import com.google.gerrit.extensions.webui.UiAction;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.ChangeMessagesUtil;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.update.BatchUpdate;
|
||||
import com.google.gerrit.server.update.UpdateException;
|
||||
@@ -34,13 +35,18 @@ public class PutPrivate
|
||||
implements RestModifyView<ChangeResource, PutPrivate.Input>, UiAction<ChangeResource> {
|
||||
public static class Input {}
|
||||
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final BatchUpdate.Factory batchUpdateFactory;
|
||||
|
||||
@Inject
|
||||
PutPrivate(Provider<ReviewDb> dbProvider, BatchUpdate.Factory batchUpdateFactory) {
|
||||
PutPrivate(
|
||||
Provider<ReviewDb> dbProvider,
|
||||
BatchUpdate.Factory batchUpdateFactory,
|
||||
ChangeMessagesUtil cmUtil) {
|
||||
this.dbProvider = dbProvider;
|
||||
this.batchUpdateFactory = batchUpdateFactory;
|
||||
this.cmUtil = cmUtil;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,7 +61,7 @@ public class PutPrivate
|
||||
}
|
||||
|
||||
ChangeControl control = rsrc.getControl();
|
||||
SetPrivateOp op = new SetPrivateOp(true);
|
||||
SetPrivateOp op = new SetPrivateOp(cmUtil, true);
|
||||
try (BatchUpdate u =
|
||||
batchUpdateFactory.create(
|
||||
dbProvider.get(),
|
||||
|
||||
@@ -16,19 +16,24 @@ package com.google.gerrit.server.change;
|
||||
|
||||
import com.google.gerrit.extensions.restapi.ResourceConflictException;
|
||||
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.notedb.ChangeUpdate;
|
||||
import com.google.gerrit.server.update.BatchUpdateOp;
|
||||
import com.google.gerrit.server.update.ChangeContext;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class SetPrivateOp implements BatchUpdateOp {
|
||||
private final ChangeMessagesUtil cmUtil;
|
||||
private final boolean isPrivate;
|
||||
|
||||
SetPrivateOp(boolean isPrivate) {
|
||||
SetPrivateOp(ChangeMessagesUtil cmUtil, boolean isPrivate) {
|
||||
this.cmUtil = cmUtil;
|
||||
this.isPrivate = isPrivate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean updateChange(ChangeContext ctx) throws ResourceConflictException {
|
||||
public boolean updateChange(ChangeContext ctx) throws ResourceConflictException, OrmException {
|
||||
Change change = ctx.getChange();
|
||||
if (change.getStatus() == Change.Status.MERGED) {
|
||||
throw new ResourceConflictException("change is merged");
|
||||
@@ -37,6 +42,19 @@ class SetPrivateOp implements BatchUpdateOp {
|
||||
change.setPrivate(isPrivate);
|
||||
change.setLastUpdatedOn(ctx.getWhen());
|
||||
update.setPrivate(isPrivate);
|
||||
addMessage(ctx, update);
|
||||
return true;
|
||||
}
|
||||
|
||||
private void addMessage(ChangeContext ctx, ChangeUpdate update) throws OrmException {
|
||||
Change c = ctx.getChange();
|
||||
ChangeMessage cmsg =
|
||||
ChangeMessagesUtil.newMessage(
|
||||
ctx,
|
||||
c.isPrivate() ? "Set private" : "Unset private",
|
||||
c.isPrivate()
|
||||
? ChangeMessagesUtil.TAG_SET_PRIVATE
|
||||
: ChangeMessagesUtil.TAG_UNSET_PRIVATE);
|
||||
cmUtil.addChangeMessage(ctx.getDb(), update, cmsg);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user