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 2011/10/24 21:16:42 UTC
svn commit: r1188311 - in /tapestry/tapestry5/trunk/tapestry-core/src:
main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
Author: hlship
Date: Mon Oct 24 19:16:42 2011
New Revision: 1188311
URL: http://svn.apache.org/viewvc?rev=1188311&view=rev
Log:
TAP5-821: Compnent event URLs for page in a library whose name contains the dash character will not be recognized by ComponentEventLinkEncoder
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=1188311&r1=1188310&r2=1188311&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 Mon Oct 24 19:16:42 2011
@@ -104,7 +104,7 @@ public class ComponentEventLinkEncoderIm
"^/" + // The leading slash is recognized but skipped
applicationFolderPattern + // The folder containing the application (TAP5-743)
- "(((\\w+)/)*(\\w+))" + // A series of folder names leading up to the page name, forming
+ "(((\\w(?:\\w|-)*)/)*(\\w+))" + // A series of folder names (which allow dashes) leading up to the page name, forming
// the logical page name (may include the locale name)
"(\\.(\\w+(\\.\\w+)*))?" + // The first dot separates the page name from the nested
// component id
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=1188311&r1=1188310&r2=1188311&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 Mon Oct 24 19:16:42 2011
@@ -18,6 +18,7 @@ import org.apache.tapestry5.Link;
import org.apache.tapestry5.MetaDataConstants;
import org.apache.tapestry5.TapestryConstants;
import org.apache.tapestry5.internal.EmptyEventContext;
+import org.apache.tapestry5.internal.InternalConstants;
import org.apache.tapestry5.internal.test.InternalBaseTestCase;
import org.apache.tapestry5.ioc.services.TypeCoercer;
import org.apache.tapestry5.services.*;
@@ -410,4 +411,41 @@ public class ComponentEventLinkEncoderIm
verify();
}
+
+ @Test
+ public void page_name_includes_dash_in_component_event_request()
+ {
+ ComponentClassResolver resolver = mockComponentClassResolver();
+ Request request = mockRequest();
+ LocalizationSetter ls = mockLocalizationSetter();
+ MetaDataLocator metaDataLocator = neverWhitelistProtected();
+
+ train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null);
+ train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null);
+ train_getLocale(request, Locale.ENGLISH);
+
+ ls.setNonPeristentLocaleFromLocaleName("en");
+
+ String path = "/foo-bar/baz.biff";
+ train_getPath(request, path);
+
+ train_setLocaleFromLocaleName(ls, "foo-bar", false);
+
+ train_isPageName(resolver, "foo-bar/baz", true);
+
+ train_canonicalizePageName(resolver, "foo-bar/baz", "foo-bar/Baz");
+
+ replay();
+
+ ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
+ request, null, null, null, null, true, "", metaDataLocator, null);
+
+ ComponentEventRequestParameters parameters = linkEncoder.decodeComponentEventRequest(request);
+
+ assertEquals(parameters.getActivePageName(), "foo-bar/Baz");
+ assertEquals(parameters.getNestedComponentId(), "biff");
+
+ verify();
+
+ }
}