package org.wiztools.restclient.server;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
*
* @author subwiz
*/
public class TraceServlet extends HttpServlet {
private void process(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
response.setContentType("text/plain; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("**RESTClient TraceServlet**");
out.println("\n*Method*");
out.println("\t" + request.getMethod());
out.println("\n*Path Info*");
out.println("\t" + request.getPathInfo());
out.println("\n*Headers*");
Enumeration eHeaders = request.getHeaderNames();
while(eHeaders.hasMoreElements()){
final String headerName = (String)eHeaders.nextElement();
Enumeration eValues = request.getHeaders(headerName);
while(eValues.hasMoreElements()) {
String headerValue = (String) eValues.nextElement();
headerValue = headerValue.replaceAll("\n", "\n\t");
out.println("\t" + headerName + ": " + headerValue);
}
}
out.println("\n*Query String*");
out.println("\t" + request.getQueryString());
out.println("\n*Parameters*");
Enumeration eParams = request.getParameterNames();
while(eParams.hasMoreElements()){
String paramName = (String)eParams.nextElement();
String[] paramValues = request.getParameterValues(paramName);
for(String paramValue: paramValues) {
paramValue = paramValue.replaceAll("\n", "\n\t");
out.println("\t~Parameter Name: " + paramName);
out.println("\t~Parameter Value:");
out.println("\t" + paramValue);
}
}
out.println("\n*Body (First 100 characters only)*");
String body = Util.inputStreamToString(request.getInputStream());
String[] arr = body.split("\n");
for(String s: arr) {
out.print("\t");
out.println(s);
}
out.println();
out.flush();
out.close();
}
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
process(request, response);
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
process(request, response);
}
@Override
public void doPut(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
process(request, response);
}
@Override
public void doDelete(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
process(request, response);
}
/*@Override
public void doHead(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
System.out.println("doHead called!");
process(request, response);
}
@Override
public void doOptions(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
process(request, response);
}
@Override
public void doTrace(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
process(request, response);
}*/
}