| /* |
| * weinre is available under *either* the terms of the modified BSD license *or* the |
| * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. |
| * |
| * Copyright (c) 2010, 2011 IBM Corporation |
| */ |
| |
| package weinre.server.http; |
| |
| import java.io.IOException; |
| import java.io.PrintStream; |
| import java.util.Enumeration; |
| |
| import javax.servlet.ServletException; |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| |
| import org.eclipse.jetty.server.Request; |
| import org.eclipse.jetty.server.Response; |
| import org.eclipse.jetty.server.handler.HandlerWrapper; |
| |
| |
| /** |
| * Debug Handler. |
| * A lightweight debug handler that can be used in production code. |
| * Details of the request and response are written to an output stream |
| * and the current thread name is updated with information that will link |
| * to the details in that output. |
| */ |
| public class DebugHandler extends HandlerWrapper { |
| |
| //--------------------------------------------------------------- |
| public void handle(String target, Request request, HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws IOException, ServletException { |
| try { |
| getHandler().handle(target, request, servletRequest, servletResponse); |
| } |
| catch(IOException e) { |
| throw new RuntimeException(e); |
| } |
| |
| Response response = request.getResponse(); |
| |
| dump(System.out, target, request, response); |
| } |
| |
| //--------------------------------------------------------------- |
| private void dump(PrintStream oStream, String target, Request request, Response response) { |
| oStream.println("----------------------------------------------------------"); |
| oStream.println("target: " + target); |
| |
| oStream.println("request:"); |
| oStream.println(" headers:"); |
| dumpHeaders(oStream, request); |
| |
| oStream.println("response:"); |
| oStream.println(" status: " + response.getStatus()); |
| } |
| |
| //--------------------------------------------------------------- |
| @SuppressWarnings("rawtypes") |
| private void dumpHeaders(PrintStream oStream, Request request) { |
| Enumeration e = request.getHeaderNames(); |
| while (e.hasMoreElements()) { |
| String name = (String) e.nextElement(); |
| Enumeration e2 = request.getHeaders(name); |
| while (e2.hasMoreElements()) { |
| String value = (String) e2.nextElement(); |
| oStream.println(" " + name + ": " + value); |
| } |
| } |
| } |
| |
| } |