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)
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
62
63 protected abstract ServletModuleManager getServletModuleManager();
64 }