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();
+
+ }
}