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