Author: apetrelli
Date: Sat Oct  3 12:16:36 2009
New Revision: 821300

URL: http://svn.apache.org/viewvc?rev=821300&view=rev
Log:
TILES-472
Leveraged the chained attribute renderer to check Velocity and Freemarker 
templates too.

Modified:
    
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
    
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java

Modified: 
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java?rev=821300&r1=821299&r2=821300&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
 (original)
+++ 
tiles/framework/trunk/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
 Sat Oct  3 12:16:36 2009
@@ -78,7 +78,10 @@
 import org.apache.tiles.ognl.SessionScopeNestedObjectExtractor;
 import org.apache.tiles.ognl.TilesApplicationContextNestedObjectExtractor;
 import org.apache.tiles.ognl.TilesContextPropertyAccessorDelegateFactory;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
 import org.apache.tiles.renderer.impl.BasicRendererFactory;
+import org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer;
 import org.apache.tiles.util.URLUtil;
 import org.apache.tiles.velocity.context.VelocityTilesRequestContextFactory;
 import org.apache.tiles.velocity.renderer.VelocityAttributeRenderer;
@@ -102,6 +105,16 @@
  */
 public class CompleteAutoloadTilesContainerFactory extends 
BasicTilesContainerFactory {
 
+    /**
+     * The freemarker renderer name.
+     */
+    private static final String FREEMARKER_RENDERER_NAME = "freemarker";
+
+    /**
+     * The velocity renderer name.
+     */
+    private static final String VELOCITY_RENDERER_NAME = "velocity";
+
     /** {...@inheritdoc} */
     @Override
     protected BasicTilesContainer instantiateContainer(
@@ -145,14 +158,41 @@
         freemarkerRenderer.setParameter("default_encoding", "ISO-8859-1");
         freemarkerRenderer.setParameter("number_format", "0.##########");
         freemarkerRenderer.commit();
-        rendererFactory.registerRenderer("freemarker", freemarkerRenderer);
+        rendererFactory.registerRenderer(FREEMARKER_RENDERER_NAME, 
freemarkerRenderer);
 
         VelocityAttributeRenderer velocityRenderer = new 
VelocityAttributeRenderer();
         velocityRenderer.setApplicationContext(applicationContext);
         
velocityRenderer.setAttributeEvaluatorFactory(attributeEvaluatorFactory);
         velocityRenderer.setRequestContextFactory(contextFactory);
         velocityRenderer.commit();
-        rendererFactory.registerRenderer("velocity", velocityRenderer);
+        rendererFactory.registerRenderer(VELOCITY_RENDERER_NAME, 
velocityRenderer);
+    }
+
+
+
+    /** {...@inheritdoc} */
+    @Override
+    protected AttributeRenderer createDefaultAttributeRenderer(
+            BasicRendererFactory rendererFactory,
+            TilesApplicationContext applicationContext,
+            TilesRequestContextFactory contextFactory,
+            TilesContainer container,
+            AttributeEvaluatorFactory attributeEvaluatorFactory) {
+        ChainedDelegateAttributeRenderer retValue = new 
ChainedDelegateAttributeRenderer();
+        retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) 
rendererFactory
+                .getRenderer(DEFINITION_RENDERER_NAME));
+        retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) 
rendererFactory
+                .getRenderer(VELOCITY_RENDERER_NAME));
+        retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) 
rendererFactory
+                .getRenderer(FREEMARKER_RENDERER_NAME));
+        retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) 
rendererFactory
+                .getRenderer(TEMPLATE_RENDERER_NAME));
+        retValue.addAttributeRenderer((TypeDetectingAttributeRenderer) 
rendererFactory
+                .getRenderer(STRING_RENDERER_NAME));
+        retValue.setApplicationContext(applicationContext);
+        retValue.setRequestContextFactory(contextFactory);
+        retValue.setAttributeEvaluatorFactory(attributeEvaluatorFactory);
+        return retValue;
     }
 
     /** {...@inheritdoc} */

Modified: 
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
URL: 
http://svn.apache.org/viewvc/tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java?rev=821300&r1=821299&r2=821300&view=diff
==============================================================================
--- 
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
 (original)
+++ 
tiles/framework/trunk/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
 Sat Oct  3 12:16:36 2009
@@ -54,7 +54,10 @@
 import org.apache.tiles.impl.mgmt.CachingTilesContainer;
 import org.apache.tiles.jsp.context.JspTilesRequestContextFactory;
 import org.apache.tiles.locale.LocaleResolver;
+import org.apache.tiles.renderer.AttributeRenderer;
+import org.apache.tiles.renderer.TypeDetectingAttributeRenderer;
 import org.apache.tiles.renderer.impl.BasicRendererFactory;
+import org.apache.tiles.renderer.impl.ChainedDelegateAttributeRenderer;
 import org.apache.tiles.renderer.impl.DefinitionAttributeRenderer;
 import org.apache.tiles.renderer.impl.StringAttributeRenderer;
 import org.apache.tiles.renderer.impl.TemplateAttributeRenderer;
@@ -192,6 +195,41 @@
     }
 
     /**
+     * Tests
+     * {...@link 
CompleteAutoloadTilesContainerFactory#createDefaultAttributeRenderer(BasicRendererFactory,
+     * TilesApplicationContext, TilesRequestContextFactory, TilesContainer, 
AttributeEvaluatorFactory)}.
+     */
+    @Test
+    public void testCreateDefaultAttributeRenderer() {
+        TilesApplicationContext applicationContext = 
createMock(TilesApplicationContext.class);
+        TilesContainer container = createMock(TilesContainer.class);
+        TilesRequestContextFactory requestContextFactory = 
createMock(TilesRequestContextFactory.class);
+        AttributeEvaluatorFactory attributeEvaluatorFactory = 
createMock(AttributeEvaluatorFactory.class);
+        BasicRendererFactory rendererFactory = 
createMock(BasicRendererFactory.class);
+        AttributeRenderer stringRenderer = 
createMock(TypeDetectingAttributeRenderer.class);
+        AttributeRenderer templateRenderer = 
createMock(TypeDetectingAttributeRenderer.class);
+        AttributeRenderer definitionRenderer = 
createMock(TypeDetectingAttributeRenderer.class);
+        AttributeRenderer velocityRenderer = 
createMock(TypeDetectingAttributeRenderer.class);
+        AttributeRenderer freemarkerRenderer = 
createMock(TypeDetectingAttributeRenderer.class);
+
+        
expect(rendererFactory.getRenderer("string")).andReturn(stringRenderer);
+        
expect(rendererFactory.getRenderer("template")).andReturn(templateRenderer);
+        
expect(rendererFactory.getRenderer("definition")).andReturn(definitionRenderer);
+        
expect(rendererFactory.getRenderer("velocity")).andReturn(velocityRenderer);
+        
expect(rendererFactory.getRenderer("freemarker")).andReturn(freemarkerRenderer);
+
+        replay(container, requestContextFactory, attributeEvaluatorFactory,
+                rendererFactory, applicationContext);
+        AttributeRenderer renderer = factory.createDefaultAttributeRenderer(
+                rendererFactory, applicationContext, requestContextFactory,
+                container, attributeEvaluatorFactory);
+        assertTrue("The default renderer class is not correct",
+                renderer instanceof ChainedDelegateAttributeRenderer);
+        verify(container, requestContextFactory, attributeEvaluatorFactory,
+                rendererFactory, applicationContext);
+    }
+
+    /**
      * Test method for
      * {...@link CompleteAutoloadTilesContainerFactory
      * #createAttributeEvaluatorFactory(TilesApplicationContext, 
TilesRequestContextFactory, locale.LocaleResolver)}


Reply via email to