Fix NullPointerException if project has no refs/meta/config branch
Also check if revId is null when loading the document.
Change-Id: I5cb3aeaa4be3b16ad4193d53ef8f0b7f19540172
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
index e6064c2..e6dd9f7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
@@ -91,7 +91,11 @@
try {
RevWalk rw = new RevWalk(repo);
try {
- RevCommit commit = rw.parseCommit(key.getRevId());
+ ObjectId revId = key.getRevId();
+ if (revId == null) {
+ return Resource.NOT_FOUND;
+ }
+ RevCommit commit = rw.parseCommit(revId);
RevTree tree = commit.getTree();
TreeWalk tw = new TreeWalk(repo);
try {
@@ -110,11 +114,11 @@
}
ObjectReader reader = repo.newObjectReader();
try {
- String abbrRevId = reader.abbreviate(key.getRevId()).name();
+ String abbrRevId = reader.abbreviate(revId).name();
String html =
formatter.get().format(key.getProject().get(),
abbrRevId, formatterCfg,
- replaceMacros(repo, key.getProject(), key.getRevId(),
+ replaceMacros(repo, key.getProject(), revId,
abbrRevId, bytes));
return getAsHtmlResource(html, commit.getCommitTime());
} finally {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java
index feb2bdd..1f23af0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocResourceKey.java
@@ -104,6 +104,10 @@
metaConfigRevision = s[4];
}
return new XDocResourceKey(formatter, new Project.NameKey(project), file,
- ObjectId.fromString(revision), ObjectId.fromString(metaConfigRevision));
+ toObjectId(revision), toObjectId(metaConfigRevision));
+ }
+
+ private static ObjectId toObjectId(String id) {
+ return id != null ? ObjectId.fromString(id) : null;
}
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java
index 349b81a..6447ea9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/formatter/FormatterUtil.java
@@ -124,7 +124,11 @@
try {
RevWalk rw = new RevWalk(repo);
try {
- RevCommit commit = rw.parseCommit(repo.resolve(RefNames.REFS_CONFIG));
+ ObjectId id = repo.resolve(RefNames.REFS_CONFIG);
+ if (id == null) {
+ return null;
+ }
+ RevCommit commit = rw.parseCommit(id);
RevTree tree = commit.getTree();
TreeWalk tw = new TreeWalk(repo);
try {