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.