You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2007/03/06 23:53:10 UTC
svn commit: r515337 - in /tapestry/tapestry5/tapestry-core/trunk/src:
main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
Author: hlship
Date: Tue Mar 6 14:53:09 2007
New Revision: 515337
URL: http://svn.apache.org/viewvc?view=rev&rev=515337
Log:
TAPESTRY-1297: Incorrect context generated for URLs with final slash
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
Modified: tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java?view=diff&rev=515337&r1=515336&r2=515337
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/internal/services/PageRenderDispatcher.java Tue Mar 6 14:53:09 2007
@@ -114,6 +114,9 @@
*/
private String[] convertActivationContext(String extraPath)
{
+ if(extraPath.length() == 0)
+ return new String[0];
+
String[] context = extraPath.split("/");
for (int i = 0; i < context.length; i++)
Modified: tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java?view=diff&rev=515337&r1=515336&r2=515337
==============================================================================
--- tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java (original)
+++ tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/internal/services/PageRenderDispatcherTest.java Tue Mar 6 14:53:09 2007
@@ -56,7 +56,18 @@
}
@Test
- public void no_extra_context() throws Exception
+ public void no_extra_context_without_final_slash() throws Exception
+ {
+ no_extra_context(false);
+ }
+
+ @Test
+ public void no_extra_context_with_final_slash() throws Exception
+ {
+ no_extra_context(true);
+ }
+
+ private void no_extra_context(boolean finalSlash) throws Exception
{
ComponentClassResolver resolver = newComponentClassResolver();
PageResponseRenderer renderer = newPageResponseRenderer();
@@ -67,7 +78,8 @@
Page page = newPage();
ComponentPageElement rootElement = newComponentPageElement();
- train_getPath(request, "/foo/Bar");
+ String path = "/foo/Bar" + (finalSlash ? "/" : "");
+ train_getPath(request, path);
train_isPageName(resolver, "foo", false);
train_isPageName(resolver, "foo/Bar", true);
@@ -96,7 +108,18 @@
}
@Test
- public void context_passed_in_path() throws Exception
+ public void context_passed_in_path_without_final_slash() throws Exception
+ {
+ context_passed_in_path(false);
+ }
+
+ @Test
+ public void context_passed_in_path_with_final_slash() throws Exception
+ {
+ context_passed_in_path(true);
+ }
+
+ private void context_passed_in_path(boolean finalSlash) throws Exception
{
ComponentEventResultProcessor processor = newComponentEventResultProcessor();
ComponentClassResolver resolver = newComponentClassResolver();
@@ -107,7 +130,8 @@
Page page = newPage();
ComponentPageElement rootElement = newComponentPageElement();
- train_getPath(request, "/foo/Bar/zip/zoom");
+ String path = "/foo/Bar/zip/zoom" + (finalSlash ? "/" : "");
+ train_getPath(request, path);
train_isPageName(resolver, "foo", false);
train_isPageName(resolver, "foo/Bar", true);