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) {


Reply via email to