add basic setup of the mustache renderer into the CompleteAutoloadTilesContainerFactory
git-svn-id: https://svn.apache.org/repos/asf/tiles/framework/trunk@1332136 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-parent/tiles-extras/pom.xml b/tiles-parent/tiles-extras/pom.xml
index 0b15f87..70afd39 100644
--- a/tiles-parent/tiles-extras/pom.xml
+++ b/tiles-parent/tiles-extras/pom.xml
@@ -72,6 +72,11 @@
</dependency>
<dependency>
<groupId>org.apache.tiles</groupId>
+ <artifactId>tiles-request-mustache</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>${pom.groupId}</groupId>
<artifactId>tiles-jsp</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/tiles-parent/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java b/tiles-parent/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
index 99bbee0..6831ce2 100644
--- a/tiles-parent/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
+++ b/tiles-parent/tiles-extras/src/main/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactory.java
@@ -21,10 +21,12 @@
package org.apache.tiles.extras.complete;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Locale;
+import java.util.regex.Pattern;
import javax.el.ArrayELResolver;
import javax.el.BeanELResolver;
@@ -77,9 +79,11 @@
import org.apache.tiles.request.freemarker.render.FreemarkerRenderer;
import org.apache.tiles.request.freemarker.render.FreemarkerRendererBuilder;
import org.apache.tiles.request.freemarker.servlet.SharedVariableLoaderFreemarkerServlet;
+import org.apache.tiles.request.mustache.MustacheRenderer;
import org.apache.tiles.request.render.BasicRendererFactory;
import org.apache.tiles.request.render.ChainedDelegateRenderer;
import org.apache.tiles.request.render.Renderer;
+import org.apache.tiles.request.servlet.ServletUtil;
import org.apache.tiles.request.velocity.render.VelocityRenderer;
import org.apache.tiles.request.velocity.render.VelocityRendererBuilder;
import org.mvel2.integration.VariableResolverFactory;
@@ -88,7 +92,7 @@
* Tiles container factory that:
* <ul>
* <li>create supporting objects for Velocity and FreeMarker;</li>
- * <li>create renderers for Velocity and FreeMarker templates;</li>
+ * <li>create renderers for Velocity, FreeMarker, and Mustache templates;</li>
* <li>allows using EL, MVEL and OGNL as attribute expressions;</li>
* <li>allows using Wildcards and Regular Expressions in definition names;</li>
* <li>loads Tiles 1.x definition files;</li>
@@ -112,6 +116,11 @@
*/
private static final String VELOCITY_RENDERER_NAME = "velocity";
+ /**
+ * The mustache renderer name.
+ */
+ private static final String MUSTACHE_RENDERER_NAME = "mustache";
+
/** {@inheritDoc} */
@Override
public TilesContainer createDecoratedContainer(TilesContainer originalContainer,
@@ -121,9 +130,11 @@
/** {@inheritDoc} */
@Override
- protected void registerAttributeRenderers(BasicRendererFactory rendererFactory,
- ApplicationContext applicationContext, TilesContainer container,
- AttributeEvaluatorFactory attributeEvaluatorFactory) {
+ protected void registerAttributeRenderers(
+ final BasicRendererFactory rendererFactory,
+ final ApplicationContext applicationContext,
+ final TilesContainer container,
+ final AttributeEvaluatorFactory attributeEvaluatorFactory) {
super.registerAttributeRenderers(rendererFactory, applicationContext, container, attributeEvaluatorFactory);
FreemarkerRenderer freemarkerRenderer = FreemarkerRendererBuilder
@@ -142,6 +153,10 @@
VelocityRenderer velocityRenderer = VelocityRendererBuilder.createInstance()
.setApplicationContext(applicationContext).build();
rendererFactory.registerRenderer(VELOCITY_RENDERER_NAME, velocityRenderer);
+
+ MustacheRenderer mustacheRenderer = new MustacheRenderer();
+ mustacheRenderer.setAcceptPattern(Pattern.compile(".+\\.mustache"));
+ rendererFactory.registerRenderer(MUSTACHE_RENDERER_NAME, mustacheRenderer);
}
/** {@inheritDoc} */
@@ -149,10 +164,12 @@
protected Renderer createDefaultAttributeRenderer(BasicRendererFactory rendererFactory,
ApplicationContext applicationContext, TilesContainer container,
AttributeEvaluatorFactory attributeEvaluatorFactory) {
+
ChainedDelegateRenderer retValue = new ChainedDelegateRenderer();
retValue.addAttributeRenderer(rendererFactory.getRenderer(DEFINITION_RENDERER_NAME));
retValue.addAttributeRenderer(rendererFactory.getRenderer(VELOCITY_RENDERER_NAME));
retValue.addAttributeRenderer(rendererFactory.getRenderer(FREEMARKER_RENDERER_NAME));
+ retValue.addAttributeRenderer(rendererFactory.getRenderer(MUSTACHE_RENDERER_NAME));
retValue.addAttributeRenderer(rendererFactory.getRenderer(TEMPLATE_RENDERER_NAME));
retValue.addAttributeRenderer(rendererFactory.getRenderer(STRING_RENDERER_NAME));
return retValue;
diff --git a/tiles-parent/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java b/tiles-parent/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
index d65cf83..b03a517 100644
--- a/tiles-parent/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
+++ b/tiles-parent/tiles-extras/src/test/java/org/apache/tiles/extras/complete/CompleteAutoloadTilesContainerFactoryTest.java
@@ -52,6 +52,7 @@
import org.apache.tiles.request.ApplicationContext;
import org.apache.tiles.request.ApplicationResource;
import org.apache.tiles.request.freemarker.render.FreemarkerRenderer;
+import org.apache.tiles.request.mustache.MustacheRenderer;
import org.apache.tiles.request.render.BasicRendererFactory;
import org.apache.tiles.request.render.ChainedDelegateRenderer;
import org.apache.tiles.request.render.DispatchRenderer;
@@ -121,6 +122,7 @@
rendererFactory.registerRenderer(eq("definition"), isA(DefinitionRenderer.class));
rendererFactory.registerRenderer(eq("freemarker"), isA(FreemarkerRenderer.class));
rendererFactory.registerRenderer(eq("velocity"), isA(VelocityRenderer.class));
+ rendererFactory.registerRenderer(eq("mustache"), isA(MustacheRenderer.class));
expect(applicationContext.getContext()).andReturn(servletContext).anyTimes();
expect(servletContext.getInitParameter(VelocityView.PROPERTIES_KEY)).andReturn(null);
@@ -158,12 +160,14 @@
Renderer definitionRenderer = createMock(Renderer.class);
Renderer velocityRenderer = createMock(Renderer.class);
Renderer freemarkerRenderer = createMock(Renderer.class);
+ Renderer mustacheRenderer = createMock(Renderer.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);
+ expect(rendererFactory.getRenderer("mustache")).andReturn(mustacheRenderer);
replay(container, attributeEvaluatorFactory, rendererFactory, applicationContext);
Renderer renderer = factory.createDefaultAttributeRenderer(rendererFactory, applicationContext, container,