Files: Fix NPE when old patch set is not found
Bug: Issue 6176
Bug: Issue 6519
Change-Id: I27d04d90271297520958265affbfecc2e0befe48
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java
index 16f2e5f..dd584cf 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Files.java
@@ -29,6 +29,7 @@
import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.extensions.restapi.RestView;
import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
@@ -259,13 +260,18 @@
ObjectReader reader = git.newObjectReader();
RevWalk rw = new RevWalk(reader);
TreeWalk tw = new TreeWalk(reader)) {
- PatchList oldList = patchListCache.get(
- resource.getChange(),
- psUtil.get(db.get(), resource.getNotes(), old));
+ Change change = resource.getChange();
+ PatchSet patchSet = psUtil.get(db.get(), resource.getNotes(), old);
+ if (patchSet == null) {
+ throw new PatchListNotAvailableException(
+ String.format(
+ "patch set %s of change %s not found",
+ old.get(), change.getId().get()));
+ }
- PatchList curList = patchListCache.get(
- resource.getChange(),
- resource.getPatchSet());
+ PatchList oldList = patchListCache.get(change, patchSet);
+
+ PatchList curList = patchListCache.get(change, resource.getPatchSet());
int sz = paths.size();
List<String> pathList = Lists.newArrayListWithCapacity(sz);