|
@@ -24,11 +24,14 @@ import javax.servlet.ServletException;
|
|
|
import javax.servlet.http.HttpServlet;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.ws.rs.core.HttpHeaders;
|
|
|
|
|
|
import org.apache.hadoop.classification.InterfaceAudience;
|
|
|
import org.apache.hadoop.classification.InterfaceStability;
|
|
|
import org.apache.hadoop.http.HttpServer2;
|
|
|
|
|
|
+import com.google.common.annotations.VisibleForTesting;
|
|
|
+
|
|
|
/**
|
|
|
* A servlet to print out the running configuration data.
|
|
|
*/
|
|
@@ -37,9 +40,8 @@ import org.apache.hadoop.http.HttpServer2;
|
|
|
public class ConfServlet extends HttpServlet {
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
|
|
- private static final String FORMAT_JSON = "json";
|
|
|
- private static final String FORMAT_XML = "xml";
|
|
|
- private static final String FORMAT_PARAM = "format";
|
|
|
+ protected static final String FORMAT_JSON = "json";
|
|
|
+ protected static final String FORMAT_XML = "xml";
|
|
|
|
|
|
/**
|
|
|
* Return the Configuration of the daemon hosting this servlet.
|
|
@@ -61,11 +63,7 @@ public class ConfServlet extends HttpServlet {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- String format = request.getParameter(FORMAT_PARAM);
|
|
|
- if (null == format) {
|
|
|
- format = FORMAT_XML;
|
|
|
- }
|
|
|
-
|
|
|
+ String format = parseAccecptHeader(request);
|
|
|
if (FORMAT_XML.equals(format)) {
|
|
|
response.setContentType("text/xml; charset=utf-8");
|
|
|
} else if (FORMAT_JSON.equals(format)) {
|
|
@@ -81,6 +79,13 @@ public class ConfServlet extends HttpServlet {
|
|
|
out.close();
|
|
|
}
|
|
|
|
|
|
+ @VisibleForTesting
|
|
|
+ static String parseAccecptHeader(HttpServletRequest request) {
|
|
|
+ String format = request.getHeader(HttpHeaders.ACCEPT);
|
|
|
+ return format != null && format.contains(FORMAT_JSON) ?
|
|
|
+ FORMAT_JSON : FORMAT_XML;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Guts of the servlet - extracted for easy testing.
|
|
|
*/
|