Author: hlship
Date: Thu Apr  2 18:23:26 2009
New Revision: 761367

URL: http://svn.apache.org/viewvc?rev=761367&view=rev
Log:
TAP5-610: URLs are not being fully optimized, "/index" is not being stripped 
off when it should

Modified:
    
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
    
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java?rev=761367&r1=761366&r2=761367&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
 Thu Apr  2 18:23:26 2009
@@ -120,13 +120,24 @@
         encodeLocale(builder);
 
         builder.append(SLASH);
-        builder.append(activePageName.toLowerCase());
+        builder.append(encodePageName(activePageName));
 
         appendContext(parameters.getActivationContext(), builder);
 
         return new LinkImpl(builder.toString(), baseURL == null, false, 
response, optimizer);
     }
 
+    private String encodePageName(String pageName)
+    {
+        if (pageName.equalsIgnoreCase("index")) return "";
+
+        String encoded = pageName.toLowerCase();
+
+        if (!encoded.endsWith("/index")) return encoded;
+
+        return encoded.substring(0, encoded.length() - 6);
+    }
+
     private void encodeLocale(StringBuilder builder)
     {
         if (encodeLocaleIntoPath)
@@ -164,7 +175,7 @@
         encodeLocale(builder);
 
         builder.append(SLASH);
-        builder.append(activePageName.toLowerCase());
+        builder.append(encodePageName(activePageName));
 
         if (hasComponentId)
         {
@@ -175,7 +186,7 @@
         if (!hasComponentId || !eventType.equals(EventConstants.ACTION))
         {
             builder.append(":");
-            builder.append(eventType.toLowerCase());
+            builder.append(encodePageName(eventType));
         }
 
         appendContext(parameters.getEventContext(), builder);
@@ -198,7 +209,7 @@
         // need to differentiate that.
 
         if (!containingPageName.equalsIgnoreCase(activePageName))
-            result.addParameter(InternalConstants.CONTAINER_PAGE_NAME, 
containingPageName.toLowerCase());
+            result.addParameter(InternalConstants.CONTAINER_PAGE_NAME, 
encodePageName(containingPageName));
 
         return result;
     }

Modified: 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
URL: 
http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java?rev=761367&r1=761366&r2=761367&view=diff
==============================================================================
--- 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
 (original)
+++ 
tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
 Thu Apr  2 18:23:26 2009
@@ -56,4 +56,66 @@
 
         verify();
     }
+
+    @Test
+    public void index_stripped_off()
+    {
+        RequestSecurityManager manager = mockRequestSecurityManager();
+        Request request = mockRequest();
+        Response response = mockResponse();
+        RequestPathOptimizer optimizer = mockRequestPathOptimizer();
+        ContextPathEncoder contextPathEncoder = 
getService(ContextPathEncoder.class);
+
+        expect(manager.getBaseURL("admin/Index")).andReturn(null);
+        train_getContextPath(request, "");
+
+        train_encodeURL(response, "/admin", "MAGIC");
+
+        replay();
+
+        ComponentEventLinkEncoder encoder = new 
ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
+                                                                              
response,
+                                                                              
manager, optimizer, null, null, null,
+                                                                              
false);
+
+        PageRenderRequestParameters parameters = new 
PageRenderRequestParameters("admin/Index",
+                                                                               
  new EmptyEventContext());
+
+        Link link = encoder.createPageRenderLink(parameters);
+
+        assertEquals(link.toAbsoluteURI(), "MAGIC");
+
+        verify();
+    }
+
+    @Test
+    public void root_index_page_gone()
+    {
+        RequestSecurityManager manager = mockRequestSecurityManager();
+        Request request = mockRequest();
+        Response response = mockResponse();
+        RequestPathOptimizer optimizer = mockRequestPathOptimizer();
+        ContextPathEncoder contextPathEncoder = 
getService(ContextPathEncoder.class);
+
+        expect(manager.getBaseURL("Index")).andReturn(null);
+        train_getContextPath(request, "");
+
+        train_encodeURL(response, "/", "MAGIC");
+
+        replay();
+
+        ComponentEventLinkEncoder encoder = new 
ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
+                                                                              
response,
+                                                                              
manager, optimizer, null, null, null,
+                                                                              
false);
+
+        PageRenderRequestParameters parameters = new 
PageRenderRequestParameters("Index", new EmptyEventContext());
+
+        Link link = encoder.createPageRenderLink(parameters);
+
+        assertEquals(link.toAbsoluteURI(), "MAGIC");
+
+        verify();
+
+    }
 }


Reply via email to