From 2ee4d4a2c732171cd33d373df49093ff8ff4b775 Mon Sep 17 00:00:00 2001 From: Shawn Pearce Date: Sat, 19 Apr 2014 20:02:19 -0700 Subject: [PATCH] blame: Allow candidate to manage its setup before output Pass in the RevWalk and let the candidate decide how to prepare itself for output. This removes the conditional for the missing sourceCommit, as candidates missing a commit can override the method with a no-op. Change-Id: I3fa19b8676dfd3c177583f8f42593b5000b5350d --- .../src/org/eclipse/jgit/blame/BlameGenerator.java | 3 +-- .../src/org/eclipse/jgit/blame/Candidate.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java index d90d59824..dd6717b6d 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java @@ -519,8 +519,7 @@ private boolean done() { } private boolean result(Candidate n) throws IOException { - if (n.sourceCommit != null) - revPool.parseBody(n.sourceCommit); + n.beginResult(revPool); outCandidate = n; outRegion = n.regionList; return true; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java index a652278d0..c7c34f0a3 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/Candidate.java @@ -49,6 +49,7 @@ import org.eclipse.jgit.diff.Edit; import org.eclipse.jgit.diff.EditList; import org.eclipse.jgit.diff.RawText; +import org.eclipse.jgit.errors.MissingObjectException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectLoader; @@ -56,6 +57,7 @@ import org.eclipse.jgit.lib.PersonIdent; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevFlag; +import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.treewalk.filter.PathFilter; /** @@ -114,6 +116,10 @@ class Candidate { recursivePath = path.shouldBeRecursive(); } + void beginResult(RevWalk rw) throws MissingObjectException, IOException { + rw.parseBody(sourceCommit); + } + int getParentCount() { return sourceCommit.getParentCount(); } @@ -405,6 +411,11 @@ static final class BlobCandidate extends Candidate { description = name; } + @Override + void beginResult(RevWalk rw) { + // Blob candidates have nothing to prepare. + } + @Override int getParentCount() { return parent != null ? 1 : 0;