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


Reply via email to