Support to delete a comment with 'NoteDbRewriter' in BatchUpdate
This change adds a new interface 'NoteDbRewriter', which can be used to rewrite the NoteDb commit history in BatchUpdate. By implementing the new interface, this change allows users with administrate server capability to delete a comment by replacing the comment's message. To delete a whole comment, the rewritter is required to update the commit message, which contains the number of the comments put in by the original commit. This can be done in later changes when necessary. Bug: Issue 4445 Change-Id: Icaeb3c24f5dc88f6b44b1297366a692a32676910
This commit is contained in:
@@ -21,6 +21,17 @@ import com.google.gerrit.extensions.restapi.RestApiException;
|
||||
public interface CommentApi {
|
||||
CommentInfo get() throws RestApiException;
|
||||
|
||||
/**
|
||||
* Deletes a published comment of a revision. For NoteDb, it deletes the comment by rewriting the
|
||||
* commit history.
|
||||
*
|
||||
* <p>Note instead of deleting the whole comment, this endpoint just replaces the comment's
|
||||
* message.
|
||||
*
|
||||
* @return the comment with its message updated.
|
||||
*/
|
||||
CommentInfo delete(DeleteCommentInput input) throws RestApiException;
|
||||
|
||||
/**
|
||||
* A default implementation which allows source compatibility when adding new methods to the
|
||||
* interface.
|
||||
@@ -30,5 +41,10 @@ public interface CommentApi {
|
||||
public CommentInfo get() {
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommentInfo delete(DeleteCommentInput input) {
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
// Copyright (C) 2017 The Android Open Source Project
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.gerrit.extensions.api.changes;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.gerrit.extensions.restapi.DefaultInput;
|
||||
|
||||
public class DeleteCommentInput {
|
||||
@DefaultInput public String reason;
|
||||
|
||||
public DeleteCommentInput() {
|
||||
reason = "";
|
||||
}
|
||||
|
||||
public DeleteCommentInput(String reason) {
|
||||
this.reason = Strings.nullToEmpty(reason);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user