Require a RevWalk when building CommitData All callers have a RevWalk conveniently available, so simplify by assuming one is always present. Change-Id: I9fc83122c3af2240c9c4e39c585af93496ea17aa
diff --git a/java/com/google/gitiles/CommitData.java b/java/com/google/gitiles/CommitData.java index 576de87..ef2ff95 100644 --- a/java/com/google/gitiles/CommitData.java +++ b/java/com/google/gitiles/CommitData.java
@@ -81,23 +81,19 @@ } static class Builder { - private RevWalk walk; private ArchiveFormat archiveFormat; private Map<AnyObjectId, Set<Ref>> refsById; - Builder setRevWalk(@Nullable RevWalk walk) { - this.walk = walk; - return this; - } - Builder setArchiveFormat(@Nullable ArchiveFormat archiveFormat) { this.archiveFormat = archiveFormat; return this; } - CommitData build(HttpServletRequest req, RevCommit c, Set<Field> fs) throws IOException { + CommitData build(HttpServletRequest req, RevWalk walk, RevCommit c, Set<Field> fs) + throws IOException { checkFields(fs); checkNotNull(req, "request"); + checkNotNull(walk, "walk"); Repository repo = ServletUtils.getRepository(req); GitilesView view = ViewFilter.getView(req); @@ -165,14 +161,13 @@ result.shortMessage = msg; } if (fs.contains(Field.DIFF_TREE)) { - result.diffEntries = computeDiffEntries(repo, view, c); + result.diffEntries = computeDiffEntries(repo, view, walk, c); } return result; } private void checkFields(Set<Field> fs) { - checkState(!fs.contains(Field.DIFF_TREE) || walk != null, "RevWalk required for diffTree"); if (fs.contains(Field.ARCHIVE_URL) || fs.contains(Field.ARCHIVE_TYPE)) { checkState(archiveFormat != null, "archive format required"); } @@ -203,14 +198,15 @@ .collect(toList()); } - private AbstractTreeIterator getTreeIterator(RevCommit commit) throws IOException { + private AbstractTreeIterator getTreeIterator(RevWalk walk, RevCommit commit) + throws IOException { CanonicalTreeParser p = new CanonicalTreeParser(); p.reset(walk.getObjectReader(), walk.parseTree(walk.parseCommit(commit).getTree())); return p; } - private DiffList computeDiffEntries(Repository repo, GitilesView view, RevCommit commit) - throws IOException { + private DiffList computeDiffEntries( + Repository repo, GitilesView view, RevWalk walk, RevCommit commit) throws IOException { DiffList result = new DiffList(); result.revision = view.getRevision().matches(commit) @@ -226,13 +222,13 @@ case 1: result.oldRevision = Revision.peeled(result.revision.getName() + "^", commit.getParent(0)); - oldTree = getTreeIterator(commit.getParent(0)); + oldTree = getTreeIterator(walk, commit.getParent(0)); break; default: // TODO(dborowitz): handle merges return result; } - AbstractTreeIterator newTree = getTreeIterator(commit); + AbstractTreeIterator newTree = getTreeIterator(walk, commit); try (DiffFormatter diff = new DiffFormatter(NullOutputStream.INSTANCE)) { diff.setRepository(repo);
diff --git a/java/com/google/gitiles/CommitJsonData.java b/java/com/google/gitiles/CommitJsonData.java index 96f7f2f..953c19c 100644 --- a/java/com/google/gitiles/CommitJsonData.java +++ b/java/com/google/gitiles/CommitJsonData.java
@@ -23,7 +23,6 @@ import java.io.IOException; import java.util.List; import java.util.Set; -import javax.annotation.Nullable; import javax.servlet.http.HttpServletRequest; import org.eclipse.jgit.diff.DiffEntry; import org.eclipse.jgit.lib.PersonIdent; @@ -70,20 +69,15 @@ Integer score; } - private RevWalk walk; - - CommitJsonData setRevWalk(@Nullable RevWalk walk) { - this.walk = walk; - return this; - } - - Commit toJsonData(HttpServletRequest req, RevCommit c, DateFormatter df) throws IOException { - return toJsonData(req, c, DEFAULT_FIELDS, df); - } - - Commit toJsonData(HttpServletRequest req, RevCommit c, Set<Field> fs, DateFormatter df) + Commit toJsonData(HttpServletRequest req, RevWalk walk, RevCommit c, DateFormatter df) throws IOException { - CommitData cd = new CommitData.Builder().setRevWalk(walk).build(req, c, fs); + return toJsonData(req, walk, c, DEFAULT_FIELDS, df); + } + + Commit toJsonData( + HttpServletRequest req, RevWalk walk, RevCommit c, Set<Field> fs, DateFormatter df) + throws IOException { + CommitData cd = new CommitData.Builder().build(req, walk, c, fs); Commit result = new Commit(); if (cd.sha != null) {
diff --git a/java/com/google/gitiles/CommitSoyData.java b/java/com/google/gitiles/CommitSoyData.java index 40c5f74..c4087a6 100644 --- a/java/com/google/gitiles/CommitSoyData.java +++ b/java/com/google/gitiles/CommitSoyData.java
@@ -61,7 +61,6 @@ Sets.immutableEnumSet(Field.PARENT_BLAME_URL); private Linkifier linkifier; - private RevWalk walk; private CommitData.Builder cdb; private ArchiveFormat archiveFormat; @@ -70,24 +69,20 @@ return this; } - CommitSoyData setRevWalk(@Nullable RevWalk walk) { - this.walk = walk; - return this; - } - CommitSoyData setArchiveFormat(@Nullable ArchiveFormat archiveFormat) { this.archiveFormat = archiveFormat; return this; } Map<String, Object> toSoyData( - HttpServletRequest req, RevCommit c, Set<Field> fs, DateFormatter df) throws IOException { + HttpServletRequest req, RevWalk walk, RevCommit c, Set<Field> fs, DateFormatter df) + throws IOException { GitilesView view = ViewFilter.getView(req); if (cdb == null) { cdb = new CommitData.Builder(); } - CommitData cd = cdb.setRevWalk(walk).setArchiveFormat(archiveFormat).build(req, c, fs); + CommitData cd = cdb.setArchiveFormat(archiveFormat).build(req, walk, c, fs); Map<String, Object> data = Maps.newHashMapWithExpectedSize(fs.size()); if (cd.author != null) { @@ -150,9 +145,9 @@ return data; } - Map<String, Object> toSoyData(HttpServletRequest req, RevCommit commit, DateFormatter df) - throws IOException { - return toSoyData(req, commit, DEFAULT_FIELDS, df); + Map<String, Object> toSoyData( + HttpServletRequest req, RevWalk walk, RevCommit commit, DateFormatter df) throws IOException { + return toSoyData(req, walk, commit, DEFAULT_FIELDS, df); } // TODO(dborowitz): Extract this.
diff --git a/java/com/google/gitiles/DiffServlet.java b/java/com/google/gitiles/DiffServlet.java index 657edf8..d0e4409 100644 --- a/java/com/google/gitiles/DiffServlet.java +++ b/java/com/google/gitiles/DiffServlet.java
@@ -96,7 +96,7 @@ new CommitSoyData() .setLinkifier(linkifier) .setArchiveFormat(getArchiveFormat(access)) - .toSoyData(req, walk.parseCommit(view.getRevision().getId()), fs, df)); + .toSoyData(req, walk, walk.parseCommit(view.getRevision().getId()), fs, df)); } if (!data.containsKey("repositoryName") && (view.getRepositoryName() != null)) { data.put("repositoryName", view.getRepositoryName());
diff --git a/java/com/google/gitiles/LogServlet.java b/java/com/google/gitiles/LogServlet.java index 5d06ae5..0dd00f3 100644 --- a/java/com/google/gitiles/LogServlet.java +++ b/java/com/google/gitiles/LogServlet.java
@@ -168,8 +168,7 @@ List<CommitJsonData.Commit> entries = Lists.newArrayListWithCapacity(paginator.getLimit()); for (RevCommit c : paginator) { paginator.getWalk().parseBody(c); - entries.add( - new CommitJsonData().setRevWalk(paginator.getWalk()).toJsonData(req, c, fs, df)); + entries.add(new CommitJsonData().toJsonData(req, paginator.getWalk(), c, fs, df)); } result.log = entries; if (paginator.getPreviousStart() != null) {
diff --git a/java/com/google/gitiles/LogSoyData.java b/java/com/google/gitiles/LogSoyData.java index 6a27782..8bc243f 100644 --- a/java/com/google/gitiles/LogSoyData.java +++ b/java/com/google/gitiles/LogSoyData.java
@@ -124,7 +124,7 @@ csd = new CommitSoyData(); } - Map<String, Object> entry = csd.setRevWalk(paginator.getWalk()).toSoyData(req, c, fields, df); + Map<String, Object> entry = csd.toSoyData(req, paginator.getWalk(), c, fields, df); DiffEntry rename = paginator.getRename(c); if (rename != null) { entry.put("rename", toRenameSoyData(rename));
diff --git a/java/com/google/gitiles/RevisionServlet.java b/java/com/google/gitiles/RevisionServlet.java index a126c7e..17ad143 100644 --- a/java/com/google/gitiles/RevisionServlet.java +++ b/java/com/google/gitiles/RevisionServlet.java
@@ -96,9 +96,8 @@ "data", new CommitSoyData() .setLinkifier(linkifier) - .setRevWalk(walk) .setArchiveFormat(getArchiveFormat(access)) - .toSoyData(req, (RevCommit) obj, COMMIT_SOY_FIELDS, df))); + .toSoyData(req, walk, (RevCommit) obj, COMMIT_SOY_FIELDS, df))); break; case OBJ_TREE: Map<String, Object> tree = @@ -184,9 +183,7 @@ renderJson( req, res, - new CommitJsonData() - .setRevWalk(walk) - .toJsonData(req, (RevCommit) obj, COMMIT_JSON_FIELDS, df), + new CommitJsonData().toJsonData(req, walk, (RevCommit) obj, COMMIT_JSON_FIELDS, df), Commit.class); break; default: