Move log entry pretty/variant selection into LogSoyData Explicitly use the "oneline" pretty format from RepositoryIndexServlet. This means that configuring a variant for this format will be respected on the repo index page. Change-Id: I0c41bbd0c0160fe7531bf839c92f713b7323a2ee
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java index ff1fb7b..519dc6d 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -18,7 +18,6 @@ import static javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR; import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND; -import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.collect.Iterables; @@ -34,7 +33,6 @@ import org.eclipse.jgit.errors.RevWalkException; import org.eclipse.jgit.http.server.ServletUtils; import org.eclipse.jgit.lib.AbbreviatedObjectId; -import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectReader; @@ -88,16 +86,12 @@ try { GitilesAccess access = getAccess(req); - Config config = access.getConfig(); DateFormatter df = new DateFormatter(access, Format.DEFAULT); // Allow the user to select a logView variant with the "pretty" param. String pretty = Iterables.getFirst(view.getParameters().get(PRETTY_PARAM), "default"); - Map<String, Object> data = new LogSoyData(req, view, - config.getBoolean("logFormat", pretty, "verbose", false)).toSoyData(paginator, null, df); - String variant = config.getString("logFormat", pretty, "variant"); - data.put("logEntryPretty", pretty); - data.put("logEntryVariant", Objects.firstNonNull(variant, pretty)); + Map<String, Object> data = new LogSoyData(req, access, pretty) + .toSoyData(paginator, null, df); if (!view.getRevision().nameIsId()) { List<Map<String, Object>> tags = Lists.newArrayListWithExpectedSize(1);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java index 7b8036f..a2ef5cf 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
@@ -14,12 +14,16 @@ package com.google.gitiles; +import static com.google.common.base.Preconditions.checkNotNull; + +import com.google.common.base.Objects; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.gitiles.CommitData.Field; +import org.eclipse.jgit.lib.Config; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; @@ -39,17 +43,17 @@ private static final ImmutableSet<Field> VERBOSE_FIELDS = Field.setOf(FIELDS, Field.DIFF_TREE); private final HttpServletRequest req; - private final GitilesView view; - private final boolean verbose; + private final Set<Field> fields; + private final String pretty; + private final String variant; - public LogSoyData(HttpServletRequest req, GitilesView view) { - this(req, view, false); - } - - public LogSoyData(HttpServletRequest req, GitilesView view, boolean verbose) { - this.req = req; - this.view = view; - this.verbose = verbose; + public LogSoyData(HttpServletRequest req, GitilesAccess access, String pretty) + throws IOException { + this.req = checkNotNull(req); + this.pretty = checkNotNull(pretty); + Config config = access.getConfig(); + fields = config.getBoolean("logFormat", pretty, "verbose", false) ? VERBOSE_FIELDS : FIELDS; + variant = Objects.firstNonNull(config.getString("logFormat", pretty, "variant"), pretty); } public Map<String, Object> toSoyData(RevWalk walk, int limit, @Nullable String revision, @@ -60,19 +64,21 @@ public Map<String, Object> toSoyData(Paginator paginator, @Nullable String revision, DateFormatter df) throws IOException { Map<String, Object> data = Maps.newHashMapWithExpectedSize(3); + data.put("logEntryPretty", pretty); + data.put("logEntryVariant", variant); List<Map<String, Object>> entries = Lists.newArrayListWithCapacity(paginator.getLimit()); for (RevCommit c : paginator) { - Set<Field> fs = verbose ? VERBOSE_FIELDS : FIELDS; Map<String, Object> entry = new CommitSoyData().setRevWalk(paginator.getWalk()) - .toSoyData(req, c, fs, df); + .toSoyData(req, c, fields, df); if (!entry.containsKey("diffTree")) { entry.put("diffTree", null); } entries.add(entry); } - data.put("entries", entries); + + GitilesView view = ViewFilter.getView(req); ObjectId next = paginator.getNextStart(); if (next != null) { data.put("nextUrl", copyAndCanonicalize(view, revision)
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java index ca1a0dc..ec565b3 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -83,7 +83,8 @@ walk.reset(); walk.markStart((RevCommit) head); DateFormatter df = new DateFormatter(access, Format.DEFAULT); - data = new LogSoyData(req, view).toSoyData(walk, LOG_LIMIT, "HEAD", null, df); + data = new LogSoyData(req, access, "oneline") + .toSoyData(walk, LOG_LIMIT, "HEAD", null, df); } else { // TODO(dborowitz): Handle non-commit or missing HEAD? data = Maps.newHashMapWithExpectedSize(7);