PatchListCache: Add method for getting old ID of a patch set

For a batch NoteDb rebuilding job with its own PatchListCache
implementation, this method is much easier to implement than the more
generic get methods. Plus, it simplifies the code in setCommentRevId.

Change-Id: Iee126283e04328f2a497d99efe0f4f9cdc961590
This commit is contained in:
Dave Borowitz
2016-04-01 15:29:07 -04:00
parent d704863a37
commit 2605931de4
3 changed files with 14 additions and 9 deletions

View File

@@ -41,7 +41,6 @@ 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.DraftCommentNotes; import com.google.gerrit.server.notedb.DraftCommentNotes;
import com.google.gerrit.server.notedb.NotesMigration; import com.google.gerrit.server.notedb.NotesMigration;
import com.google.gerrit.server.patch.PatchList;
import com.google.gerrit.server.patch.PatchListCache; import com.google.gerrit.server.patch.PatchListCache;
import com.google.gerrit.server.patch.PatchListNotAvailableException; import com.google.gerrit.server.patch.PatchListNotAvailableException;
import com.google.gwtorm.server.OrmException; import com.google.gwtorm.server.OrmException;
@@ -363,14 +362,9 @@ public class PatchLineCommentsUtil {
"cannot set RevId for patch set %s on comment %s", ps.getId(), c); "cannot set RevId for patch set %s on comment %s", ps.getId(), c);
if (c.getRevId() == null) { if (c.getRevId() == null) {
try { try {
if (Side.fromShort(c.getSide()) == Side.REVISION) { c.setRevId(Side.fromShort(c.getSide()) == Side.PARENT
c.setRevId(ps.getRevision()); ? new RevId(ObjectId.toString(cache.getOldId(change, ps)))
} else { : ps.getRevision());
PatchList patchList = cache.get(change, ps);
c.setRevId((c.getSide() == (short) 0)
? new RevId(ObjectId.toString(patchList.getOldId()))
: new RevId(ObjectId.toString(patchList.getNewId())));
}
} catch (PatchListNotAvailableException e) { } catch (PatchListNotAvailableException e) {
throw new OrmException(e); throw new OrmException(e);
} }

View File

@@ -18,6 +18,8 @@ import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet; import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.client.Project;
import org.eclipse.jgit.lib.ObjectId;
/** Provides a cached list of {@link PatchListEntry}. */ /** Provides a cached list of {@link PatchListEntry}. */
public interface PatchListCache { public interface PatchListCache {
PatchList get(PatchListKey key, Project.NameKey project) PatchList get(PatchListKey key, Project.NameKey project)
@@ -26,6 +28,9 @@ public interface PatchListCache {
PatchList get(Change change, PatchSet patchSet) PatchList get(Change change, PatchSet patchSet)
throws PatchListNotAvailableException; throws PatchListNotAvailableException;
ObjectId getOldId(Change change, PatchSet patchSet)
throws PatchListNotAvailableException;
IntraLineDiff getIntraLineDiff(IntraLineDiffKey key, IntraLineDiff getIntraLineDiff(IntraLineDiffKey key,
IntraLineDiffArgs args); IntraLineDiffArgs args);
} }

View File

@@ -106,6 +106,12 @@ public class PatchListCacheImpl implements PatchListCache {
return get(new PatchListKey(null, b, ws), project); return get(new PatchListKey(null, b, ws), project);
} }
@Override
public ObjectId getOldId(Change change, PatchSet patchSet)
throws PatchListNotAvailableException {
return get(change, patchSet).getOldId();
}
@Override @Override
public IntraLineDiff getIntraLineDiff(IntraLineDiffKey key, public IntraLineDiff getIntraLineDiff(IntraLineDiffKey key,
IntraLineDiffArgs args) { IntraLineDiffArgs args) {