Merge "ChangeRebuilderImpl: Have separate event for draft comments"
This commit is contained in:
@@ -300,7 +300,7 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
|
||||
// We will rebuild all events, except for draft comments, in buckets based
|
||||
// on author and timestamp.
|
||||
List<Event> events = new ArrayList<>();
|
||||
Multimap<Account.Id, PatchLineCommentEvent> draftCommentEvents =
|
||||
Multimap<Account.Id, DraftCommentEvent> draftCommentEvents =
|
||||
ArrayListMultimap.create();
|
||||
|
||||
events.addAll(getHashtagsEvents(change, manager));
|
||||
@@ -325,11 +325,13 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
|
||||
patchSetEvents.put(ps.getId(), pse);
|
||||
events.add(pse);
|
||||
for (PatchLineComment c : getPatchLineComments(bundle, ps)) {
|
||||
PatchLineCommentEvent e =
|
||||
new PatchLineCommentEvent(c, change, ps, patchListCache);
|
||||
if (c.getStatus() == Status.PUBLISHED) {
|
||||
CommentEvent e =
|
||||
new CommentEvent(c, change, ps, patchListCache);
|
||||
events.add(e.addDep(pse));
|
||||
} else {
|
||||
DraftCommentEvent e =
|
||||
new DraftCommentEvent(c, change, ps, patchListCache);
|
||||
draftCommentEvents.put(c.getAuthor(), e);
|
||||
}
|
||||
}
|
||||
@@ -376,9 +378,9 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
|
||||
}
|
||||
flushEventsToUpdate(manager, el, change);
|
||||
|
||||
EventList<PatchLineCommentEvent> plcel = new EventList<>();
|
||||
EventList<DraftCommentEvent> plcel = new EventList<>();
|
||||
for (Account.Id author : draftCommentEvents.keys()) {
|
||||
for (PatchLineCommentEvent e :
|
||||
for (DraftCommentEvent e :
|
||||
Ordering.natural().sortedCopy(draftCommentEvents.get(author))) {
|
||||
if (!plcel.canAdd(e)) {
|
||||
flushEventsToDraftUpdate(manager, plcel, change);
|
||||
@@ -490,7 +492,7 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
|
||||
}
|
||||
|
||||
private void flushEventsToDraftUpdate(NoteDbUpdateManager manager,
|
||||
EventList<PatchLineCommentEvent> events, Change change)
|
||||
EventList<DraftCommentEvent> events, Change change)
|
||||
throws OrmException {
|
||||
if (events.isEmpty()) {
|
||||
return;
|
||||
@@ -501,7 +503,7 @@ public class ChangeRebuilderImpl extends ChangeRebuilder {
|
||||
newAuthorIdent(events),
|
||||
events.getWhen());
|
||||
update.setPatchSetId(events.getPatchSetId());
|
||||
for (PatchLineCommentEvent e : events) {
|
||||
for (DraftCommentEvent e : events) {
|
||||
e.applyDraft(update);
|
||||
}
|
||||
manager.add(update);
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
// Copyright (C) 2016 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.server.notedb.rebuild;
|
||||
|
||||
import static com.google.gerrit.server.PatchLineCommentsUtil.setCommentRevId;
|
||||
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.client.PatchLineComment;
|
||||
import com.google.gerrit.reviewdb.client.PatchSet;
|
||||
import com.google.gerrit.server.PatchLineCommentsUtil;
|
||||
import com.google.gerrit.server.notedb.ChangeUpdate;
|
||||
import com.google.gerrit.server.patch.PatchListCache;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class CommentEvent extends Event {
|
||||
public final PatchLineComment c;
|
||||
private final Change change;
|
||||
private final PatchSet ps;
|
||||
private final PatchListCache cache;
|
||||
|
||||
CommentEvent(PatchLineComment c, Change change, PatchSet ps,
|
||||
PatchListCache cache) {
|
||||
super(PatchLineCommentsUtil.getCommentPsId(c), c.getAuthor(),
|
||||
c.getWrittenOn(), change.getCreatedOn(), c.getTag());
|
||||
this.c = c;
|
||||
this.change = change;
|
||||
this.ps = ps;
|
||||
this.cache = cache;
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean uniquePerUpdate() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
void apply(ChangeUpdate update) throws OrmException {
|
||||
checkUpdate(update);
|
||||
if (c.getRevId() == null) {
|
||||
setCommentRevId(c, cache, change, ps);
|
||||
}
|
||||
update.putComment(c);
|
||||
}
|
||||
}
|
||||
@@ -25,13 +25,13 @@ import com.google.gerrit.server.notedb.ChangeUpdate;
|
||||
import com.google.gerrit.server.patch.PatchListCache;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
class PatchLineCommentEvent extends Event {
|
||||
class DraftCommentEvent extends Event {
|
||||
public final PatchLineComment c;
|
||||
private final Change change;
|
||||
private final PatchSet ps;
|
||||
private final PatchListCache cache;
|
||||
|
||||
PatchLineCommentEvent(PatchLineComment c, Change change, PatchSet ps,
|
||||
DraftCommentEvent(PatchLineComment c, Change change, PatchSet ps,
|
||||
PatchListCache cache) {
|
||||
super(PatchLineCommentsUtil.getCommentPsId(c), c.getAuthor(),
|
||||
c.getWrittenOn(), change.getCreatedOn(), c.getTag());
|
||||
@@ -47,12 +47,8 @@ class PatchLineCommentEvent extends Event {
|
||||
}
|
||||
|
||||
@Override
|
||||
void apply(ChangeUpdate update) throws OrmException {
|
||||
checkUpdate(update);
|
||||
if (c.getRevId() == null) {
|
||||
setCommentRevId(c, cache, change, ps);
|
||||
}
|
||||
update.putComment(c);
|
||||
void apply(ChangeUpdate update) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
void applyDraft(ChangeDraftUpdate draftUpdate) throws OrmException {
|
||||
Reference in New Issue
Block a user