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