Added not null check when collecting RefsSoyData When using gitiles in gerrit through the gitiles plugin sometimes it happens that access rights inhibit the view of a Ref for a specific user, giving a null Reference which is producing ugly NPE [1]. In such case this change is simply dropping the Ref and not returning it in the list to the caller. [1] here is last part of the returned exception: java.lang.NullPointerException at com.google.gitiles.RefServlet.getRefsSoyData(RefServlet.java:171) at com.google.gitiles.RefServlet.getBranchesSoyData(RefServlet.java:106) Change-Id: Ib620affb59c0df234e6afa42285fa688588f03b2
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java index b5a0636..ff48d4d 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -168,15 +168,18 @@ for (Ref ref : refs) { String name = ref.getName().substring(prefix.length()); - boolean needPrefix = !ref.getName().equals(refdb.getRef(name).getName()); - Map<String, Object> value = Maps.newHashMapWithExpectedSize(3); - value.put("url", GitilesView.revision().copyFrom(view).setRevision( - Revision.unpeeled(needPrefix ? ref.getName() : name, ref.getObjectId())).toUrl()); - value.put("name", name); - if (headLeaf != null) { - value.put("isHead", headLeaf.equals(ref)); + Ref refForName = refdb.getRef(name); + if (refForName != null) { + boolean needPrefix = !ref.getName().equals(refForName.getName()); + Map<String, Object> value = Maps.newHashMapWithExpectedSize(3); + value.put("url", GitilesView.revision().copyFrom(view).setRevision( + Revision.unpeeled(needPrefix ? ref.getName() : name, ref.getObjectId())).toUrl()); + value.put("name", name); + if (headLeaf != null) { + value.put("isHead", headLeaf.equals(ref)); + } + result.add(value); } - result.add(value); } return result; }