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