BaseServlet: Extract method for custom GsonBuilder initialization Subclasses may want domain-specific initialization, such as registering custom type adapters, including type adapters that may vary per request. Change-Id: I8e594be97428534afd94209633e07ec6503b3842
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 6f1f247..846c3c1 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -225,16 +225,19 @@ res.setStatus(SC_OK); Writer writer = getWriter(res); - new GsonBuilder() - .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) - .setPrettyPrinting() - .generateNonExecutableJson() - .create() - .toJson(src, typeOfSrc, writer); + newGsonBuilder(req).create().toJson(src, typeOfSrc, writer); writer.write('\n'); writer.close(); } + @SuppressWarnings("unused") // Used in subclasses. + protected GsonBuilder newGsonBuilder(HttpServletRequest req) throws IOException { + return new GsonBuilder() + .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) + .setPrettyPrinting() + .generateNonExecutableJson(); + } + /** * @see #startRenderText(HttpServletRequest, HttpServletResponse) * @param req in-progress request.