1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.tiles.web.startup;
22
23 import org.apache.commons.logging.Log;
24 import org.apache.commons.logging.LogFactory;
25 import org.apache.tiles.TilesException;
26 import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
27 import org.apache.tiles.servlet.context.ServletUtil;
28 import org.apache.tiles.startup.BasicTilesInitializer;
29 import org.apache.tiles.startup.TilesInitializer;
30 import org.apache.tiles.web.util.ServletContextAdapter;
31
32 import javax.servlet.http.HttpServlet;
33 import javax.servlet.ServletContext;
34 import javax.servlet.ServletException;
35
36 /***
37 * Initialization Servlet.
38 *
39 * @see org.apache.tiles.web.startup.TilesListener
40 * @version $Rev: 734996 $ $Date: 2009-01-16 14:27:28 +0100 (ven, 16 gen 2009) $
41 */
42 public class TilesServlet extends HttpServlet {
43
44 /***
45 * Log instance.
46 */
47 protected final Log log =
48 LogFactory.getLog(TilesServlet.class);
49
50 /***
51 * The private listener instance, that is used to initialize Tiles
52 * container.
53 */
54 private TilesInitializer initializer;
55
56 /***
57 * Constructor.
58 *
59 * @since 2.1.2
60 */
61 public TilesServlet() {
62 initializer = createTilesInitializer();
63 }
64
65 /*** {@inheritDoc} */
66 @Override
67 public void destroy() {
68 try {
69 ServletUtil.setContainer(getServletContext(), null);
70 } catch (TilesException e) {
71 log.warn("Unable to remove tiles container from service.", e);
72 }
73 }
74
75 /*** {@inheritDoc} */
76 @Override
77 public void init() throws ServletException {
78 ServletContext adaptedContext = new ServletContextAdapter(
79 getServletConfig());
80 ServletTilesApplicationContext preliminaryContext = new ServletTilesApplicationContext(
81 adaptedContext);
82 initializer.initialize(preliminaryContext);
83 }
84
85 /***
86 * Creates a new instance of {@link BasicTilesInitializer}. Override it to use a different initializer.
87 *
88 * @return The Tiles servlet-based initializer.
89 * @since 2.1.2
90 */
91 protected TilesInitializer createTilesInitializer() {
92 return new BasicTilesInitializer();
93 }
94 }