View Javadoc

1   package com.atlassian.plugin.descriptors.servlet;
2   
3   import org.apache.commons.logging.Log;
4   import org.apache.commons.logging.LogFactory;
5   
6   import javax.servlet.http.HttpServlet;
7   import javax.servlet.http.HttpServletRequest;
8   import javax.servlet.http.HttpServletResponse;
9   import javax.servlet.ServletConfig;
10  import javax.servlet.ServletException;
11  import javax.servlet.UnavailableException;
12  
13  import java.io.IOException;
14  
15  public abstract class ServletModuleContainerServlet extends HttpServlet
16  {
17      private static final Log log = LogFactory.getLog(ServletModuleContainerServlet.class);
18      private ServletConfig servletConfig;
19  
20      public void init(ServletConfig servletConfig) throws ServletException
21      {
22          super.init(servletConfig);
23          this.servletConfig = servletConfig;
24      }
25  
26      protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
27      {
28          if (getServletModuleManager() == null)
29          {
30              log.error("Could not get ServletModuleManager?");
31              response.sendError(500, "Could not get ServletModuleManager.");
32              return;
33          }
34  
35          HttpServlet servlet = getServletModuleManager().getServlet(request.getPathInfo(), servletConfig);
36  
37          if (servlet == null)
38          {
39              log.debug("No servlet found for: " + request.getRequestURI());
40              response.sendError(404, "Could not find servlet for: " + request.getRequestURI());
41              return;
42          }
43  
44          try
45          {
46              servlet.service(request, response);
47          }
48          catch (UnavailableException e) // prevent this servlet from unloading itself (PLUG-79)
49          {
50              log.error(e);
51              response.sendError(500, e.getMessage());
52          }
53          catch (ServletException e)
54          {
55              log.error(e);
56              response.sendError(500, e.getMessage());
57          }
58      }
59  
60      /**
61       * Retrieve the ServletModuleManager from your container framework.
62       */
63      protected abstract ServletModuleManager getServletModuleManager();
64  }