Consistently use response encoding when creating writers

Forgetting to do this was an unfortunate side effect of I7c17c65d,
where we stopped depending on the response's writer.

Change-Id: I5a20907e1ecb4409d18b15a6fa505c562aecff0f
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
index 08920a2..bbd432a 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -260,7 +260,7 @@
     setApiHeaders(res, JSON);
     res.setStatus(SC_OK);
 
-    Writer writer = getWriter(res);
+    Writer writer = newWriter(res);
     newGsonBuilder(req).create().toJson(src, typeOfSrc, writer);
     writer.write('\n');
     writer.close();
@@ -284,7 +284,7 @@
   protected Writer startRenderText(HttpServletRequest req, HttpServletResponse res,
       String contentType) throws IOException {
     setApiHeaders(res, contentType);
-    return getWriter(res);
+    return newWriter(res);
   }
 
   /**
@@ -322,7 +322,7 @@
     res.setStatus(statusCode);
     setApiHeaders(res, TEXT);
     setCacheHeaders(res);
-    Writer out = getWriter(res);
+    Writer out = newWriter(res);
     out.write(message);
     out.close();
   }
@@ -360,7 +360,11 @@
     setCacheHeaders(res);
   }
 
-  private Writer getWriter(HttpServletResponse res) throws IOException {
-    return new OutputStreamWriter(res.getOutputStream(), res.getCharacterEncoding());
+  protected Writer newWriter(HttpServletResponse res) throws IOException {
+    return newWriter(res.getOutputStream(), res);
+  }
+
+  protected static Writer newWriter(OutputStream os, HttpServletResponse res) throws IOException {
+    return new OutputStreamWriter(os, res.getCharacterEncoding());
   }
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
index c469962..e189a4f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
@@ -38,7 +38,6 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.Set;
@@ -138,8 +137,7 @@
         return;
       }
 
-      try (OutputStream out = BaseEncoding.base64()
-          .encodingStream(new OutputStreamWriter(res.getOutputStream()))) {
+      try (OutputStream out = BaseEncoding.base64().encodingStream(newWriter(res))) {
         formatDiff(repo, oldTree, newTree, view.getPathPart(), new DiffFormatter(out));
       }
     } finally {
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 c72a118..ec6c600 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -50,7 +50,6 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.util.Collection;
 import java.util.List;
@@ -117,7 +116,7 @@
       data.put("title", title);
 
       try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.logDetail", data);
-          Writer w = new OutputStreamWriter(out)) {
+          Writer w = newWriter(out, res)) {
         new LogSoyData(req, access, pretty)
             .renderStreaming(paginator, null, renderer, w, df);
       }
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 0a4003d..4e726dd 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -32,7 +32,6 @@
 
 import java.io.IOException;
 import java.io.OutputStream;
-import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.util.List;
 import java.util.Map;
@@ -99,7 +98,7 @@
       if (paginator != null) {
         DateFormatter df = new DateFormatter(access, Format.DEFAULT);
         try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data);
-            Writer w = new OutputStreamWriter(out)) {
+            Writer w = newWriter(out, res)) {
           new LogSoyData(req, access, "oneline")
               .renderStreaming(paginator, "HEAD", renderer, w, df);
         }