From 8fd2335b70d9d395e98f93ef9f845ca59dc2a6dd Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Fri, 3 Dec 2010 13:09:01 -0800 Subject: [PATCH] Add debugging toString to TreeFormatter Displaying the current tree in the ls-tree style output makes it easier to see what entries are currently stored. Change-Id: If17c414db0d2e8d84e65de8bbcba7fd1b79aa311 Signed-off-by: Shawn O. Pearce Reviewed-by: Chris Aniszczyk --- .../org/eclipse/jgit/lib/TreeFormatter.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java index 6e53cc740..737a1c3fc 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/TreeFormatter.java @@ -52,9 +52,11 @@ import static org.eclipse.jgit.lib.FileMode.TREE; import java.io.IOException; +import org.eclipse.jgit.errors.CorruptObjectException; import org.eclipse.jgit.revwalk.RevBlob; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevTree; +import org.eclipse.jgit.treewalk.CanonicalTreeParser; import org.eclipse.jgit.util.TemporaryBuffer; /** @@ -311,4 +313,38 @@ public class TreeFormatter { throw new RuntimeException(err); } } + + @Override + public String toString() { + byte[] raw = toByteArray(); + + CanonicalTreeParser p = new CanonicalTreeParser(); + p.reset(raw); + + StringBuilder r = new StringBuilder(); + r.append("Tree={"); + if (!p.eof()) { + r.append('\n'); + try { + new ObjectChecker().checkTree(raw); + } catch (CorruptObjectException error) { + r.append("*** ERROR: ").append(error.getMessage()).append("\n"); + r.append('\n'); + } + } + while (!p.eof()) { + final FileMode mode = p.getEntryFileMode(); + r.append(mode); + r.append(' '); + r.append(Constants.typeString(mode.getObjectType())); + r.append(' '); + r.append(p.getEntryObjectId().name()); + r.append(' '); + r.append(p.getEntryPathString()); + r.append('\n'); + p.next(); + } + r.append("}"); + return r.toString(); + } }