Author: mgrigorov
Date: Mon Jul 25 13:57:47 2011
New Revision: 1150703
URL: http://svn.apache.org/viewvc?rev=1150703&view=rev
Log:
WICKET-3926 CryptoMapper does not correctly decrypt URLs for the home page
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/CryptoMapperTest.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java?rev=1150703&r1=1150702&r2=1150703&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/CryptoMapper.java
Mon Jul 25 13:57:47 2011
@@ -175,6 +175,11 @@ public class CryptoMapper implements IRe
Url originalUrl = Url.parse(decryptedUrl,
request.getCharset());
int originalNumberOfSegments =
originalUrl.getSegments().size();
+ if (originalNumberOfSegments == 0 &&
+ originalUrl.getQueryParameters().isEmpty() ==
false)
+ {
+ originalNumberOfSegments = 1;
+ }
int numberOfSegments =
encryptedUrl.getSegments().size();
char[] encryptedChars =
encryptedUrlString.toCharArray();
@@ -195,7 +200,8 @@ public class CryptoMapper implements IRe
segment += String.format("%02x", Math.abs(hash
% 256));
hash = hashString(segment);
- if (segment.equals(segments.get(segNo)))
+ if (segment.equals(segments.get(segNo)) &&
+ originalUrl.getSegments().size() >=
segNo)
{
url.getSegments().add(originalUrl.getSegments().get(segNo - 1));
}
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/CryptoMapperTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/CryptoMapperTest.java?rev=1150703&r1=1150702&r2=1150703&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/CryptoMapperTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/CryptoMapperTest.java
Mon Jul 25 13:57:47 2011
@@ -121,4 +121,28 @@ public class CryptoMapperTest extends Ab
PageParameters actualParameters = handler.getPageParameters();
assertEquals(expectedParameters, actualParameters);
}
+
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-3926
+ */
+ public void testHomePageWithParameters()
+ {
+ String expectedEncrypted =
"0lhSFdMIt3yZUNwbtLuXgDePMclxSbks/0lh9b";
+ PageParameters expectedParameters = new PageParameters();
+ expectedParameters.add("namedKey1", "namedValue1");
+
+ RenderPageRequestHandler renderPageRequestHandler = new
RenderPageRequestHandler(
+ new PageProvider(tester.getApplication().getHomePage(),
expectedParameters));
+ Url url = mapper.mapHandler(renderPageRequestHandler);
+ assertEquals(expectedEncrypted, url.toString());
+
+ Request request = getRequest(url);
+ IRequestHandler requestHandler = mapper.mapRequest(request);
+ assertTrue(requestHandler instanceof RenderPageRequestHandler);
+
+ RenderPageRequestHandler handler =
(RenderPageRequestHandler)requestHandler;
+ assertEquals(tester.getApplication().getHomePage(),
handler.getPageClass());
+ PageParameters actualParameters = handler.getPageParameters();
+ assertEquals(expectedParameters, actualParameters);
+ }
}