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);