Coverage Report - net.sf.jolene.servlet.Domlet
 
Classes in this File Line Coverage Branch Coverage Complexity
Domlet
0%
0/29
0%
0/10
0
 
 1  
 package net.sf.jolene.servlet;
 2  
 
 3  
 import net.sf.jolene.util.PrefsReader;
 4  
 import net.sf.jolene.dom.Document;
 5  
 import net.sf.jolene.factories.DocumentFactory;
 6  
 import org.apache.log4j.LogManager;
 7  
 import org.apache.log4j.Logger;
 8  
 
 9  
 import javax.servlet.ServletException;
 10  
 import javax.servlet.http.HttpServlet;
 11  
 import javax.servlet.http.HttpServletRequest;
 12  
 import javax.servlet.http.HttpServletResponse;
 13  
 import java.io.IOException;
 14  
 
 15  
 /**
 16  
  * @author Dan Howard
 17  
  * @since Aug 7, 2005 8:21:03 AM
 18  
  */
 19  0
 public class Domlet extends HttpServlet {
 20  
 
 21  0
     private static final Logger log = LogManager.getLogger(Domlet.class);
 22  
 
 23  
     /**
 24  
      * @param request  HttpServletRequest
 25  
      * @param response HttpServletResponse
 26  
      * @throws ServletException
 27  
      * @throws IOException
 28  
      */
 29  
     @Override
 30  
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 31  0
         handleRequest(request, response);
 32  0
     }
 33  
 
 34  
     /**
 35  
      * @param request  HttpServletRequest
 36  
      * @param response HttpServletResponse
 37  
      * @throws ServletException
 38  
      * @throws IOException
 39  
      */
 40  
     @Override
 41  
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 42  0
         handleRequest(request, response);
 43  0
     }
 44  
 
 45  
     /**
 46  
      * @throws ServletException
 47  
      */
 48  
     @Override
 49  
     public void init() throws ServletException {
 50  
         // Initialize PrefsReader
 51  0
         log.info("Domlet Initializing PrefsReader...");
 52  0
         PrefsReader.init();
 53  0
     }
 54  
 
 55  
     /**
 56  
      * Basic request handler for servlet requests. Looks at the the request or session to locate the
 57  
      * document object to stream out the response writer.
 58  
      *
 59  
      * @param request  HttpServletRequest
 60  
      * @param response HttpServletResponse
 61  
      * @throws IOException if an IOException occurs
 62  
      */
 63  
     protected static void handleRequest(HttpServletRequest request, HttpServletResponse response) throws IOException {
 64  
 
 65  0
         log.debug("handle request");
 66  0
         log.debug("URI: " + request.getRequestURI());
 67  0
         log.debug("URL: " + request.getRequestURL());
 68  0
         log.debug("CP : " + request.getContextPath());
 69  0
         log.debug("SP : " + request.getServletPath());
 70  
 
 71  
         // look 1st for the document in the request scope
 72  
         // otherwise look in the session scope
 73  
         // if none found log warn and add to request scope
 74  
         // The key is the URI minus the context path
 75  0
         String uri = request.getRequestURI();
 76  0
         if (request.getContextPath().length() > 0) {
 77  0
             if (uri.startsWith(request.getContextPath())) {
 78  
                 int n;
 79  0
                 n = uri.indexOf("/", 1);
 80  0
                 if (n > -1) {
 81  0
                     uri = uri.substring(n);
 82  
                 }
 83  
             }
 84  
         }
 85  
 
 86  
         Document document;
 87  0
         if (request.getAttribute(uri) != null) {
 88  0
             document = (Document) request.getAttribute(uri);
 89  
         } else {
 90  0
             document = (Document) request.getSession().getAttribute(uri);
 91  
         }
 92  
 
 93  0
         if (document == null) {
 94  0
             log.warn("No document found at request or session level for url " + uri + " attaching a new document to the request.");
 95  0
             document = DocumentFactory.getInstance().getDocument(request.getSession().getServletContext().getRealPath(uri), request.getContextPath(), uri);
 96  
         }
 97  0
         log.debug("DOC URI: " + document.getUri());
 98  
 
 99  0
         document.stream(response.getWriter());
 100  0
     }
 101  
 
 102  
 
 103  
 }