{"thread":{"id":"16143","subject":"[EGIT PATCH 1/1] Some error handling for GitDocument","startedAt":"2008-11-02T23:46:21Z","lastAt":"2008-11-02T23:46:21Z","messageCount":1,"participants":["Robin Rosenberg"],"isPatch":true,"patchVersion":1,"patchTotal":1},"messages":[{"id":"94706","messageId":"200811030046.22265.robin.rosenberg@dewire.com","threadId":"16143","inReplyTo":null,"subject":"[EGIT PATCH 1/1] Some error handling for GitDocument","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2008-11-02T23:46:21Z","receivedAt":"2008-11-02T23:46:21Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"We sometimes (rarely) gets errors from unresolvable trees. Do not just\nthrow a NullPointerException.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n\nThis is primarily necessary to track down a rare problem, but we\nshould have error handling here anyway.\n\n .../egit/ui/internal/decorators/GitDocument.java   |   10 +++++++++-\n 1 files changed, 9 insertions(+), 1 deletions(-)\n\ndiff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitDocument.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitDocument.java\nindex 3724304..6e10144 100644\n--- a/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitDocument.java\n+++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/internal/decorators/GitDocument.java\n@@ -21,6 +21,7 @@\n import org.spearce.jgit.lib.RefsChangedEvent;\n import org.spearce.jgit.lib.Repository;\n import org.spearce.jgit.lib.RepositoryListener;\n+import org.spearce.jgit.lib.Tree;\n import org.spearce.jgit.lib.TreeEntry;\n \n class GitDocument extends Document implements RepositoryListener {\n@@ -52,7 +53,14 @@ void populate() throws IOException {\n \t\tString baseline = GitQuickDiffProvider.baseline.get(repository);\n \t\tif (baseline == null)\n \t\t\tbaseline = \"HEAD\";\n-\t\tTreeEntry blobEnry = repository.mapTree(baseline).findBlobMember(gitPath);\n+\t\tTree baselineTree = repository.mapTree(baseline);\n+\t\tif (baselineTree == null) {\n+\t\t\tActivator.logError(\"Could not resolve quickdiff baseline \"\n+\t\t\t\t\t+ baseline + \" corresponding to \" + resource + \" in \"\n+\t\t\t\t\t+ repository, new Throwable());\n+\t\t\treturn;\n+\t\t}\n+\t\tTreeEntry blobEnry = baselineTree.findBlobMember(gitPath);\n \t\tif (blobEnry != null) {\n \t\t\tActivator.trace(\"(GitQuickDiffProvider) compareTo: \" + baseline);\n \t\t\tObjectLoader loader = repository.openBlob(blobEnry.getId());\n-- \n1.6.0.3.578.g6a50\n"}]}