Author: apetrelli
Date: Thu Nov  6 02:06:51 2008
New Revision: 711829

URL: http://svn.apache.org/viewvc?rev=711829&view=rev
Log:
TILES-329
Removed self-injection from ChainedTilesContextFactory when using 
"setFactories".

Modified:
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
    
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/context/ChainedTilesContextFactoryTest.java
    
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
    
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java?rev=711829&r1=711828&r2=711829&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/context/ChainedTilesContextFactory.java
 Thu Nov  6 02:06:51 2008
@@ -71,7 +71,6 @@
      */
     public void setFactories(List<TilesContextFactory> factories) {
         this.factories = factories;
-        injectParentTilesContextFactory();
     }
 
     /** [EMAIL PROTECTED] */
@@ -93,6 +92,10 @@
                         .forName(classNames[i]);
                 if (TilesContextFactory.class.isAssignableFrom(clazz)) {
                     TilesContextFactory factory = clazz.newInstance();
+                    if (factory instanceof TilesRequestContextFactoryAware) {
+                        ((TilesRequestContextFactoryAware) factory)
+                                .setRequestContextFactory(this);
+                    }
                     factories.add(factory);
                 } else {
                     throw new IllegalArgumentException("The class "
@@ -118,7 +121,6 @@
                                 + " default constructor", e);
             }
         }
-        injectParentTilesContextFactory();
     }
 
     /** [EMAIL PROTECTED] */
@@ -156,16 +158,4 @@
 
         return retValue;
     }
-
-    /**
-     * Injects this context factory to all chained context factories.
-     */
-    protected void injectParentTilesContextFactory() {
-        for (TilesContextFactory factory : factories) {
-            if (factory instanceof TilesRequestContextFactoryAware) {
-                ((TilesRequestContextFactoryAware) factory)
-                        .setRequestContextFactory(this);
-            }
-        }
-    }
 }

Modified: 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java?rev=711829&r1=711828&r2=711829&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/main/java/org/apache/tiles/factory/BasicTilesContainerFactory.java
 Thu Nov  6 02:06:51 2008
@@ -30,6 +30,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.tiles.TilesApplicationContext;
 import org.apache.tiles.TilesContainer;
+import org.apache.tiles.awareness.TilesRequestContextFactoryAware;
 import org.apache.tiles.context.ChainedTilesContextFactory;
 import org.apache.tiles.context.TilesContextFactory;
 import org.apache.tiles.definition.DefinitionsFactory;
@@ -136,13 +137,13 @@
                 CONTEXT_FACTORY_CHAIN_COUNT);
         registerContextFactory(
                 "org.apache.tiles.servlet.context.ServletTilesContextFactory",
-                factories);
+                factories, contextFactory);
         registerContextFactory(
                 "org.apache.tiles.portlet.context.PortletTilesContextFactory",
-                factories);
+                factories, contextFactory);
         registerContextFactory(
                 "org.apache.tiles.jsp.context.JspTilesContextFactory",
-                factories);
+                factories, contextFactory);
         contextFactory.setFactories(factories);
     }
 
@@ -151,14 +152,22 @@
      *
      * @param className The name of the class to instantiate.
      * @param factories The list of factories to add to.
+     * @param parent The parent [EMAIL PROTECTED] TilesContextFactory}. If 
null it won't be
+     * considered.
+     * @since 2.1.1
      */
     protected void registerContextFactory(String className,
-            List<TilesContextFactory> factories) {
+            List<TilesContextFactory> factories, TilesContextFactory parent) {
         TilesContextFactory retValue = null;
         try {
             Class<? extends TilesContextFactory> clazz = Class.forName(
                     className).asSubclass(TilesContextFactory.class);
             retValue = clazz.newInstance();
+            if (parent != null
+                    && retValue instanceof TilesRequestContextFactoryAware) {
+                ((TilesRequestContextFactoryAware) retValue)
+                        .setRequestContextFactory(parent);
+            }
         } catch (ClassNotFoundException e) {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Cannot find JspTilesContextFactory, ignoring 
problem", e);

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/context/ChainedTilesContextFactoryTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/context/ChainedTilesContextFactoryTest.java?rev=711829&r1=711828&r2=711829&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/context/ChainedTilesContextFactoryTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/context/ChainedTilesContextFactoryTest.java
 Thu Nov  6 02:06:51 2008
@@ -77,6 +77,7 @@
         ChainedTilesContextFactory factory = new ChainedTilesContextFactory();
         List<TilesContextFactory> factories = new 
ArrayList<TilesContextFactory>();
         RepeaterTilesContextFactory repFactory = new 
RepeaterTilesContextFactory();
+        repFactory.setRequestContextFactory(factory);
         factories.add(repFactory);
         factory.setFactories(factories);
         TilesRequestContext context = factory.createRequestContext(appContext, 
requestContext);

Modified: 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java?rev=711829&r1=711828&r2=711829&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-core/src/test/java/org/apache/tiles/factory/BasicTilesContainerFactoryTest.java
 Thu Nov  6 02:06:51 2008
@@ -276,7 +276,8 @@
                 ChainedTilesContextFactory contextFactory) {
             List<TilesContextFactory> factories =
                 new ArrayList<TilesContextFactory>(1);
-            TilesContextFactory factory = new 
RepeaterTilesContextFactory(applicationContext);
+            RepeaterTilesContextFactory factory = new 
RepeaterTilesContextFactory(applicationContext);
+            factory.setRequestContextFactory(contextFactory);
             factories.add(factory);
             contextFactory.setFactories(factories);
         }

Modified: 
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java?rev=711829&r1=711828&r2=711829&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-test/src/main/java/org/apache/tiles/test/factory/TestTilesContainerFactory.java
 Thu Nov  6 02:06:51 2008
@@ -84,7 +84,9 @@
         List<TilesContextFactory> factories = new 
ArrayList<TilesContextFactory>(
                 CONTEXT_FACTORY_CHAIN_COUNT);
         factories.add(new WildcardServletTilesContextFactory());
-        factories.add(new JspTilesContextFactory());
+        JspTilesContextFactory factory = new JspTilesContextFactory();
+        factory.setRequestContextFactory(contextFactory);
+        factories.add(factory);
         contextFactory.setFactories(factories);
     }
 


Reply via email to