You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tiles.apache.org by mc...@apache.org on 2013/05/20 17:39:45 UTC
svn commit: r1484502 - in /tiles/request/branches/TREQ_1_0_X: ./
tiles-request-mustache/
tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/
tiles-request-mustache/src/test/java/org/apache/tiles/request/mustache/
tiles-request-portl...
Author: mck
Date: Mon May 20 15:39:44 2013
New Revision: 1484502
URL: http://svn.apache.org/r1484502
Log:
backport commits 1377657, 1377659, and 1484315
and fix test and spring version number (RC2 -> RELEASE).
Removed:
tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeMap.java
Modified:
tiles/request/branches/TREQ_1_0_X/ (props changed)
tiles/request/branches/TREQ_1_0_X/pom.xml
tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/pom.xml
tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheRenderer.java
tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java
tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/test/java/org/apache/tiles/request/mustache/MustacheRendererTest.java
tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/ (props changed)
tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/pom.xml
tiles/request/branches/TREQ_1_0_X/tiles-request-servlet-wildcard/src/test/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContextTest.java
Propchange: tiles/request/branches/TREQ_1_0_X/
------------------------------------------------------------------------------
Merged /tiles/request/trunk:r1377658-1377659,1484315
Modified: tiles/request/branches/TREQ_1_0_X/pom.xml
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/pom.xml?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/pom.xml (original)
+++ tiles/request/branches/TREQ_1_0_X/pom.xml Mon May 20 15:39:44 2013
@@ -216,7 +216,7 @@ under the License.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
- <version>2.5.6</version>
+ <version>3.2.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
@@ -225,21 +225,6 @@ under the License.
</exclusions>
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc-portlet</artifactId>
- <version>2.5.6</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- </exclusion>
- <exclusion>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
@@ -299,13 +284,8 @@ under the License.
</dependency>
<dependency>
<groupId>com.github.spullara.mustache.java</groupId>
- <artifactId>core</artifactId>
- <version>0.6.2</version>
- </dependency>
- <dependency>
- <groupId>com.github.spullara.mustache.java</groupId>
- <artifactId>builder</artifactId>
- <version>0.6.2</version>
+ <artifactId>compiler</artifactId>
+ <version>0.8.4</version>
</dependency>
</dependencies>
</dependencyManagement>
Modified: tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/pom.xml
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/pom.xml?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/pom.xml (original)
+++ tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/pom.xml Mon May 20 15:39:44 2013
@@ -38,11 +38,8 @@ under the License.
</dependency>
<dependency>
<groupId>com.github.spullara.mustache.java</groupId>
- <artifactId>core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.github.spullara.mustache.java</groupId>
- <artifactId>builder</artifactId>
+ <artifactId>compiler</artifactId>
+ <version>0.8.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
Modified: tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheRenderer.java
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheRenderer.java?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheRenderer.java (original)
+++ tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheRenderer.java Mon May 20 15:39:44 2013
@@ -21,19 +21,16 @@
package org.apache.tiles.request.mustache;
-import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import com.sampullara.mustache.MustacheBuilder;
-import com.sampullara.mustache.MustacheException;
-import com.sampullara.mustache.Scope;
-import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.ApplicationResource;
+import com.github.mustachejava.MustacheFactory;
+import com.github.mustachejava.DefaultMustacheFactory;
+import com.github.mustachejava.MustacheException;
import org.apache.tiles.request.Request;
import org.apache.tiles.request.render.CannotRenderException;
import org.apache.tiles.request.render.Renderer;
@@ -41,46 +38,59 @@ import org.apache.tiles.request.render.R
/**
* The Mustache-specific renderer.
*
+ * Can be configured to render paths only according to the acceptPattern.
+ *
* @version $Rev: 1215006 $ $Date: 2011-12-16 01:30:41 +0100 (Fri, 16 Dec 2011) $
*/
-public final class MustacheRenderer implements Renderer {
+public class MustacheRenderer implements Renderer {
+
+ // hack. exposes the tiles Request for MustacheFactory implementations.
+ private static final ThreadLocal<Request> REQUEST_HOLDER = new ThreadLocal<Request>();
+ private final MustacheFactory factory;
private Pattern acceptPattern;
+ /** Uses the {@link DefaultMustacheFactory} */
+ public MustacheRenderer(){
+ this.factory = new DefaultMustacheFactory();
+ }
+
+ public MustacheRenderer(MustacheFactory factory) {
+ this.factory = factory;
+ }
+
@Override
public void render(String path, Request request) throws IOException {
if (path == null) {
throw new CannotRenderException("Cannot dispatch a null path");
}
- try{
- new MustacheBuilder()
- .build(new BufferedReader(new InputStreamReader(getResourceStream(request, path))), path)
+ try {
+ REQUEST_HOLDER.set(request);
+ factory
+ .compile(path)
.execute(request.getWriter(), buildScope(request));
+ REQUEST_HOLDER.remove();
- }catch(MustacheException ex){
+ } catch(MustacheException ex) {
throw new IOException("failed to MustacheRenderer.render(" + path + ",request)", ex);
}
}
- private static InputStream getResourceStream(Request request, String path) throws IOException {
- final ApplicationContext applicationContext = request.getApplicationContext();
- final ApplicationResource resource = applicationContext.getResource(path);
- return resource.getInputStream();
+ public static Request getThreadLocalRequest() {
+ return REQUEST_HOLDER.get();
}
- private static Scope buildScope(Request request){
- Scope scope = null;
+ protected Map<String,Object> buildScope(Request request) {
+ Map<String,Object> scope = new HashMap<String,Object>();
List<String> availableScopes = request.getAvailableScopes();
- for(int i = availableScopes.size() -1; i >= 0; --i){
- scope = null == scope
- ? new Scope(request.getContext(availableScopes.get(i)))
- : new Scope(request.getContext(availableScopes.get(i)), scope);
+ for (int i = availableScopes.size() -1; i >= 0; --i) {
+ scope.putAll(request.getContext(availableScopes.get(i)));
}
return scope;
}
- //@Override
+ @Override
public boolean isRenderable(String path, Request request) {
if (path == null) {
return false;
@@ -92,7 +102,7 @@ public final class MustacheRenderer impl
return true;
}
- public void setAcceptPattern(Pattern acceptPattern) {
+ public final void setAcceptPattern(Pattern acceptPattern) {
this.acceptPattern = acceptPattern;
}
}
Modified: tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java (original)
+++ tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/main/java/org/apache/tiles/request/mustache/MustacheScopeExtractor.java Mon May 20 15:39:44 2013
@@ -18,16 +18,16 @@ package org.apache.tiles.request.mustach
import java.util.Collections;
import java.util.Enumeration;
+import java.util.Map;
import java.util.Set;
-import com.sampullara.mustache.Scope;
import org.apache.tiles.request.attribute.AttributeExtractor;
public final class MustacheScopeExtractor implements AttributeExtractor {
- private final Scope scope;
+ private final Map<String,Object> scope;
- public MustacheScopeExtractor(Scope scope){
+ public MustacheScopeExtractor(Map<String,Object> scope) {
this.scope = scope;
}
@@ -48,6 +48,6 @@ public final class MustacheScopeExtracto
@Override
public void setValue(String key, Object value) {
- scope.put(value, value);
+ scope.put(key, value);
}
}
\ No newline at end of file
Modified: tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/test/java/org/apache/tiles/request/mustache/MustacheRendererTest.java
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/test/java/org/apache/tiles/request/mustache/MustacheRendererTest.java?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/test/java/org/apache/tiles/request/mustache/MustacheRendererTest.java (original)
+++ tiles/request/branches/TREQ_1_0_X/tiles-request-mustache/src/test/java/org/apache/tiles/request/mustache/MustacheRendererTest.java Mon May 20 15:39:44 2013
@@ -22,21 +22,25 @@ package org.apache.tiles.request.mustach
import java.io.IOException;
-import java.io.Writer;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.regex.Pattern;
+import com.github.mustachejava.DefaultMustacheFactory;
import org.apache.tiles.request.ApplicationContext;
import org.apache.tiles.request.ApplicationResource;
-import org.apache.tiles.request.mustache.MustacheRenderer;
import org.apache.tiles.request.render.CannotRenderException;
import org.apache.tiles.request.render.Renderer;
import org.apache.tiles.request.Request;
import org.junit.Test;
import static org.easymock.classextension.EasyMock.*;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -54,27 +58,29 @@ public final class MustacheRendererTest
@Test
public void testRender() throws IOException {
Request request = createMock(Request.class);
- Writer writer = createMock(Writer.class);
+ StringWriter writer = new StringWriter();
ApplicationContext applicationContext = createMock(ApplicationContext.class);
ApplicationResource applicationResource = createMock(ApplicationResource.class);
- expect(applicationResource.getInputStream()).andReturn(getClass().getResource("/test.html").openStream());
Map<String,Object> context = Collections.singletonMap("testKey", (Object)"test value");
- expect(request.getApplicationContext()).andReturn(applicationContext);
expect(applicationContext.getResource(isA(String.class))).andReturn(applicationResource).anyTimes();
expect(request.getAvailableScopes()).andReturn(Arrays.asList(Request.REQUEST_SCOPE, "session", Request.APPLICATION_SCOPE));
expect(request.getContext(Request.REQUEST_SCOPE)).andReturn(context);
expect(request.getContext("session")).andReturn(Collections.<String,Object>emptyMap());
expect(request.getContext(Request.APPLICATION_SCOPE)).andReturn(Collections.<String,Object>emptyMap());
- expect(request.getWriter()).andReturn(writer);
- writer.write("test template with test value");
- writer.flush();
+ expect(request.getWriter()).andReturn(writer).anyTimes();
- replay(request, applicationContext, applicationResource, writer);
- Renderer renderer = new MustacheRenderer();
+ replay(request, applicationContext, applicationResource);
+ Renderer renderer = new MustacheRenderer(new DefaultMustacheFactory() {
+ @Override
+ public Reader getReader(String path) {
+ return new InputStreamReader(getClass().getResourceAsStream(path), Charset.forName("utf-8"));
+ }
+ });
renderer.render("/test.html", request);
- verify(request, applicationContext, applicationResource, writer);
+ verify(request, applicationContext, applicationResource);
+ assertEquals("test template with test value", writer.toString());
}
/**
Propchange: tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/
------------------------------------------------------------------------------
Merged /tiles/request/trunk/tiles-request-portlet-wildcard:r1484315
Modified: tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/pom.xml
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/pom.xml?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/pom.xml (original)
+++ tiles/request/branches/TREQ_1_0_X/tiles-request-portlet-wildcard/pom.xml Mon May 20 15:39:44 2013
@@ -97,8 +97,19 @@
</dependency>
<dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc-portlet</artifactId>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc-portlet</artifactId>
+ <version>3.2.0.RC2</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-webmvc</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
Modified: tiles/request/branches/TREQ_1_0_X/tiles-request-servlet-wildcard/src/test/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContextTest.java
URL: http://svn.apache.org/viewvc/tiles/request/branches/TREQ_1_0_X/tiles-request-servlet-wildcard/src/test/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContextTest.java?rev=1484502&r1=1484501&r2=1484502&view=diff
==============================================================================
--- tiles/request/branches/TREQ_1_0_X/tiles-request-servlet-wildcard/src/test/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContextTest.java (original)
+++ tiles/request/branches/TREQ_1_0_X/tiles-request-servlet-wildcard/src/test/java/org/apache/tiles/request/servlet/wildcard/WildcardServletApplicationContextTest.java Mon May 20 15:39:44 2013
@@ -97,13 +97,13 @@ public class WildcardServletApplicationC
.anyTimes();
File dir = new File(".");
EasyMock.expect(servletContext.getResource("/WEB-INF/")).andReturn(
- dir.toURI().toURL());
+ dir.toURI().toURL()).anyTimes();
URL pomUrl = new URL("file://tiles/pom.xml");
EasyMock.expect(servletContext.getResource("/WEB-INF/pom.xml"))
- .andReturn(pomUrl);
+ .andReturn(pomUrl).anyTimes();
Set<String> elementSet = new HashSet<String>();
elementSet.add("/WEB-INF/pom.xml");
- EasyMock.expect(servletContext.getResourcePaths("/WEB-INF/")).andReturn(elementSet);
+ EasyMock.expect(servletContext.getResourcePaths("/WEB-INF/")).andReturn(elementSet).anyTimes();
EasyMock.replay(servletContext);
assertEquals(new URLApplicationResource(u.toExternalForm(), u), context.getResource(url));