Author: apetrelli
Date: Thu Jan 8 04:57:47 2009
New Revision: 732696
URL: http://svn.apache.org/viewvc?rev=732696&view=rev
Log:
TILES-346
Refactoring to allow an easier pure Java configuration under a servlet
environment.
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java?rev=732696&r1=732695&r2=732696&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesFilter.java
Thu Jan 8 04:57:47 2009
@@ -41,6 +41,11 @@
* Processes Reloadable Tiles Definitions.
*
* @version $Rev$ $Date$
+ * @deprecated Use {...@link TilesServlet} or {...@link TilesListener}. If you
want a
+ * decoration Filter, use
+ * {...@link org.apache.tiles.web.util.TilesDecorationFilter}. Moreover,
definition
+ * files reload themselves if the {...@link
.apache.tiles.definition.dao.DefinitionDAO} implements
+ * {...@link org.apache.tiles.definition.Refreshable}.
*/
public class TilesFilter extends TilesServlet implements Filter {
@@ -120,7 +125,7 @@
super.init(createServletConfig());
containerKey = filterConfig.getInitParameter(
- TilesListener.CONTAINER_KEY_INIT_PARAMETER);
+ BasicTilesServletInitializer.CONTAINER_KEY_INIT_PARAMETER);
if (DEBUG) {
log("TilesDecorationFilter:Initializing filter");
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java?rev=732696&r1=732695&r2=732696&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesListener.java
Thu Jan 8 04:57:47 2009
@@ -22,13 +22,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.tiles.Initializable;
-import org.apache.tiles.TilesApplicationContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.TilesException;
import org.apache.tiles.access.TilesAccess;
-import org.apache.tiles.context.AbstractTilesApplicationContextFactory;
-import org.apache.tiles.factory.AbstractTilesContainerFactory;
import org.apache.tiles.servlet.context.ServletTilesApplicationContext;
import javax.servlet.ServletContext;
@@ -44,19 +40,35 @@
implements ServletContextListener {
/**
- * Init parameter to define the key under which the container will be
- * stored.
+ * Log instance.
+ */
+ protected static final Log LOG =
+ LogFactory.getLog(TilesListener.class);
+
+ /**
+ * The initializer object.
*
- * @since 2.1.0
+ * @since 2.1.2
*/
- public static final String CONTAINER_KEY_INIT_PARAMETER =
- "org.apache.tiles.web.startup.TilesListener.CONTAINER_KEY";
+ protected TilesServletInitializer initializer;
/**
- * Log instance.
+ * Constructor.
+ *
+ * @since 2.1.2
*/
- protected static final Log LOG =
- LogFactory.getLog(TilesListener.class);
+ public TilesListener() {
+ initializer = createTilesServletInitializer();
+ }
+
+ /**
+ * Constructor with injected initializer.
+ *
+ * @param initializer The initializer to use.
+ */
+ public TilesListener(TilesServletInitializer initializer) {
+ this.initializer = initializer;
+ }
/**
* Initialize the TilesContainer and place it
@@ -66,10 +78,7 @@
*/
public void contextInitialized(ServletContextEvent event) {
ServletContext servletContext = event.getServletContext();
- String key = servletContext.getInitParameter(
- CONTAINER_KEY_INIT_PARAMETER);
- TilesContainer container = createContainer(servletContext);
- TilesAccess.setContainer(servletContext, container, key);
+ initializer.initialize(servletContext);
}
/**
@@ -87,23 +96,25 @@
}
/**
+ * Creates a new instance of {...@link BasicTilesServletInitializer}.
Override it to use a different initializer.
+ *
+ * @return The Tiles servlet-based initializer.
+ * @since 2.1.2
+ */
+ protected TilesServletInitializer createTilesServletInitializer() {
+ return new BasicTilesServletInitializer();
+ }
+
+ /**
* Creates a Tiles container.
*
* @param context The servlet context to use.
- * @return The created container
+ * @return The created container.
+ * @deprecated Use {...@link
BasicTilesServletInitializer#createContainer(org.apache.tiles.TilesApplicationContext)}
+ * instead.
*/
protected TilesContainer createContainer(ServletContext context) {
- TilesApplicationContext applicationContext = new
ServletTilesApplicationContext(
- context);
- AbstractTilesApplicationContextFactory acFactory =
AbstractTilesApplicationContextFactory
- .createFactory(applicationContext);
- if (acFactory instanceof Initializable) {
- ((Initializable)
acFactory).init(applicationContext.getInitParams());
- }
- applicationContext = acFactory.createApplicationContext(context);
- AbstractTilesContainerFactory factory = AbstractTilesContainerFactory
- .getTilesContainerFactory(applicationContext);
- return factory.createContainer(applicationContext);
+ return new BasicTilesServletInitializer()
+ .createContainer(new ServletTilesApplicationContext(context));
}
-
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java?rev=732696&r1=732695&r2=732696&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/startup/TilesServlet.java
Thu Jan 8 04:57:47 2009
@@ -20,15 +20,17 @@
*/
package org.apache.tiles.web.startup;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.tiles.TilesException;
+import org.apache.tiles.access.TilesAccess;
import org.apache.tiles.web.util.ServletContextAdapter;
import javax.servlet.http.HttpServlet;
-import javax.servlet.ServletContextEvent;
import javax.servlet.ServletException;
/**
- * Initialization Servlet. Provided for backwards compatibility.
- * The prefered method of initialization is to use the TilesListener.
+ * Initialization Servlet.
*
* @see org.apache.tiles.web.startup.TilesListener
* @version $Rev$ $Date$
@@ -36,33 +38,58 @@
public class TilesServlet extends HttpServlet {
/**
+ * Log instance.
+ */
+ protected static final Log LOG =
+ LogFactory.getLog(TilesServlet.class);
+
+ /**
* The private listener instance, that is used to initialize Tiles
* container.
*/
- private TilesListener listener = new TilesListener();
+ private TilesServletInitializer initializer;
+
+ /**
+ * Constructor.
+ *
+ * @since 2.1.2
+ */
+ public TilesServlet() {
+ initializer = createTilesServletInitializer();
+ }
+
+ /**
+ * Constructor with injected initializer.
+ *
+ * @param initializer The initializer to use.
+ */
+ public TilesServlet(TilesServletInitializer initializer) {
+ this.initializer = initializer;
+ }
/** {...@inheritdoc} */
@Override
public void destroy() {
- listener.contextDestroyed(createEvent());
+ try {
+ TilesAccess.setContainer(getServletContext(), null);
+ } catch (TilesException e) {
+ LOG.warn("Unable to remove tiles container from service.", e);
+ }
}
/** {...@inheritdoc} */
@Override
public void init() throws ServletException {
- listener.contextInitialized(createEvent());
+ initializer.initialize(new ServletContextAdapter(getServletConfig()));
}
/**
- * Creates an servlet context event starting for the servlet configuration
- * object.
+ * Creates a new instance of {...@link BasicTilesServletInitializer}.
Override it to use a different initializer.
*
- * @return The servlet context event.
+ * @return The Tiles servlet-based initializer.
+ * @since 2.1.2
*/
- private ServletContextEvent createEvent() {
- return new ServletContextEvent(
- new ServletContextAdapter(getServletConfig())
- );
+ protected TilesServletInitializer createTilesServletInitializer() {
+ return new BasicTilesServletInitializer();
}
-
}
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java?rev=732696&r1=732695&r2=732696&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDecorationFilter.java
Thu Jan 8 04:57:47 2009
@@ -26,7 +26,7 @@
import org.apache.tiles.AttributeContext;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.access.TilesAccess;
-import org.apache.tiles.web.startup.TilesListener;
+import org.apache.tiles.web.startup.BasicTilesServletInitializer;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -147,7 +147,7 @@
filterConfig = config;
containerKey = filterConfig.getInitParameter(
- TilesListener.CONTAINER_KEY_INIT_PARAMETER);
+ BasicTilesServletInitializer.CONTAINER_KEY_INIT_PARAMETER);
String temp = config.getInitParameter("attribute-name");
if (temp != null) {
Modified:
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
URL:
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java?rev=732696&r1=732695&r2=732696&view=diff
==============================================================================
---
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
(original)
+++
tiles/framework/trunk/tiles-servlet/src/main/java/org/apache/tiles/web/util/TilesDispatchServlet.java
Thu Jan 8 04:57:47 2009
@@ -25,7 +25,7 @@
import org.apache.tiles.TilesContainer;
import org.apache.tiles.AttributeContext;
import org.apache.tiles.access.TilesAccess;
-import org.apache.tiles.web.startup.TilesListener;
+import org.apache.tiles.web.startup.BasicTilesServletInitializer;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
@@ -63,7 +63,7 @@
super.init();
containerKey = getServletConfig().getInitParameter(
- TilesListener.CONTAINER_KEY_INIT_PARAMETER);
+ BasicTilesServletInitializer.CONTAINER_KEY_INIT_PARAMETER);
String temp = getInitParameter("mutator");
if (temp != null) {