class TraceConfigzZPageHandler extends ZPageHandler {

  @Override
  public boolean processRequest(
      String requestMethod, Map<String, String> queryMap, OutputStream outputStream) {
    if (requestMethod.equalsIgnoreCase("POST")) {
      try {
        applyTraceConfig(queryMap);
      } catch (Throwable t) {
        try (PrintStream out = new PrintStream(outputStream, /* autoFlush= */ false, "UTF-8")) {
          out.print("<!DOCTYPE html>");
          out.print("<html lang=\"en\">");
          out.print("<head>");
          out.print("<meta charset=\"UTF-8\">");
          out.print(
              "<link rel=\"shortcut icon\" href=\"data:image/png;base64,"
                  + ZPageLogo.getFaviconBase64()
                  + "\" type=\"image/png\">");
          out.print(
              "<link href=\"https://fonts.googleapis.com/css?family=Open+Sans:300\""
                  + "rel=\"stylesheet\">");
          out.print(
              "<link href=\"https://fonts.googleapis.com/css?family=Roboto\" rel=\"stylesheet\">");
          out.print("<title>" + TRACE_CONFIGZ_NAME + "</title>");
          out.print("</head>");
          out.print("<body>");
          out.print("Error while applying trace config changes: " + t.toString());
          out.print("</body>");
          out.print("</html>");
          logger.log(Level.WARNING, "error while applying trace config changes", t);
        } catch (Throwable e) {
          logger.log(Level.WARNING, "error while applying trace config changes", e);
          return true;
        }
        return true;
      }
    }
    return false;
  }

    TraceConfigzZPageHandler(TracerSdkManagement tracerSdkManagement);

}