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 {