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