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