Coverage Report - org.webslinger.types.servletMapping
 
Classes in this File Line Coverage Branch Coverage Complexity
servletMapping
100%
20/20
100%
1/1
2
 
 1  
 package org.webslinger.types;
 2  
 
 3  
 import java.io.InputStream;
 4  
 import java.io.IOException;
 5  
 import java.io.StringWriter;
 6  
 import java.net.URL;
 7  
 import java.util.Map;
 8  
 import javax.servlet.RequestDispatcher;
 9  
 import javax.servlet.ServletException;
 10  
 import javax.servlet.ServletRequest;
 11  
 import javax.servlet.ServletRequestWrapper;
 12  
 import javax.servlet.ServletResponse;
 13  
 import javax.servlet.http.HttpServletRequest;
 14  
 import javax.servlet.http.HttpServletResponse;
 15  
 import javax.servlet.http.HttpServletRequestWrapper;
 16  
 import javax.servlet.http.HttpServletResponseWrapper;
 17  
 
 18  
 import org.webslinger.PathContext;
 19  
 import org.webslinger.TypeHandler;
 20  
 import org.webslinger.Webslinger;
 21  
 
 22  3
 public class servletMapping extends TypeHandler {
 23  
     protected Object setAndGet(ServletRequest request, String name, Object newValue) {
 24  12
         Object oldValue = request.getAttribute(name);
 25  12
         request.setAttribute(name, newValue);
 26  12
         return oldValue;
 27  
     }
 28  
 
 29  
     public Object run(Webslinger webslinger) throws IOException, ServletException {
 30  3
         ServletRequest request = webslinger.getRequest();
 31  3
         ServletResponse response = webslinger.getResponse();
 32  
         //System.err.println("servletMapping.run(" + pc + ", " + request + ", " + response + ")");
 33  
         //request = new UpConvertingHttpServletRequest(request, pc);
 34  
         //System.err.println("pathInfo[" + request.getPathInfo() + "]");
 35  3
         String servletName = (String) webslinger.getFileAttribute("servlet-name");
 36  
         //System.err.println("servletName[" + servletName + "]");
 37  3
         RequestDispatcher dispatcher = getContext().getNamedDispatcher(servletName);
 38  3
         if (dispatcher == null) throw new ServletException("Couldn't load servlet(" + servletName + ") on resource " + webslinger);
 39  
         //request = getContext().makeWebslinger(pc, getContext().makeHttp(pc, request, response, true), response);
 40  
         //request = getContext().makeHttp(webslinger.getPathContext(), request, response, true);
 41  3
         Object servletPath = setAndGet(request, "javax.servlet.include.servlet_path", webslinger.getCurrentFile().getName().getPath());
 42  3
         Object queryString = setAndGet(request, "javax.servlet.include.query_string", null);
 43  3
         Object pathInfo = setAndGet(request, "javax.servlet.include.path_info", null);
 44  3
         Object oldWebslinger = setAndGet(request, "org.webslinger.Webslinger", webslinger);
 45  
         try {
 46  3
             dispatcher.include(request, response);
 47  
         } finally {
 48  3
             request.setAttribute("javax.servlet.include.servlet_path", servletPath);
 49  3
             request.setAttribute("javax.servlet.include.query_string", queryString);
 50  3
             request.setAttribute("javax.servlet.include.path_info", pathInfo);
 51  3
             request.setAttribute("org.webslinger.Webslinger", oldWebslinger);
 52  3
         }
 53  3
         return null;
 54  
     }
 55  
 }