You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2011/09/06 16:01:19 UTC
svn commit: r1165675 - in /wicket/trunk/wicket-core/src:
main/java/org/apache/wicket/request/mapper/
test/java/org/apache/wicket/request/mapper/
Author: pete
Date: Tue Sep 6 14:01:19 2011
New Revision: 1165675
URL: http://svn.apache.org/viewvc?rev=1165675&view=rev
Log:
WICKET-4020 ResourceMapper throws IllegalStateException when attempting to map a request to a URL ending in a empty segment (directory)
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceMapper.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java
Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceMapper.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceMapper.java?rev=1165675&r1=1165674&r2=1165675&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceMapper.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/mapper/ResourceMapper.java Tue Sep 6 14:01:19 2011
@@ -237,11 +237,23 @@ public class ResourceMapper extends Abst
if (segments.isEmpty() == false)
{
+ // get filename (the last segment)
final int lastSegmentAt = segments.size() - 1;
- final ResourceUrl resourceUrl = new ResourceUrl(segments.get(lastSegmentAt), parameters);
+ String filename = segments.get(lastSegmentAt);
+
+ // ignore requests with empty filename
+ if(Strings.isEmpty(filename))
+ {
+ return;
+ }
+
+ // create resource url from filename and query parameters
+ final ResourceUrl resourceUrl = new ResourceUrl(filename, parameters);
+ // remove caching information from request
getCachingStrategy().undecorateUrl(resourceUrl);
+ // check for broken caching strategy (this must never happen)
if (Strings.isEmpty(resourceUrl.getFileName()))
{
throw new IllegalStateException("caching strategy returned empty name for " + resourceUrl);
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java?rev=1165675&r1=1165674&r2=1165675&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/BasicResourceReferenceMapperTest.java Tue Sep 6 14:01:19 2011
@@ -20,6 +20,7 @@ import java.io.Serializable;
import java.util.Locale;
import org.apache.wicket.request.IRequestHandler;
+import org.apache.wicket.request.Request;
import org.apache.wicket.request.Url;
import org.apache.wicket.request.handler.resource.ResourceReferenceRequestHandler;
import org.apache.wicket.request.mapper.parameter.INamedParameters;
@@ -37,6 +38,7 @@ import org.apache.wicket.util.IProvider;
import org.apache.wicket.util.ValueProvider;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
+import org.junit.Test;
/**
* @author Matej Knopp
@@ -515,6 +517,13 @@ public class BasicResourceReferenceMappe
assertEquals("test-version-1.0.4-beta.txt", url.getFileName());
}
+ public void testRequestWithEmptyFilename()
+ {
+ Url url = Url.parse("wicket/resource/" + CLASS_NAME + "/");
+ IRequestHandler handler = encoder.mapRequest(getRequest(url));
+ assertNull(handler);
+ }
+
/**
* Tests <a href="https://issues.apache.org/jira/browse/WICKET-3918">WICKET-3918</a>.
*/
Modified: wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java?rev=1165675&r1=1165674&r2=1165675&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java (original)
+++ wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/mapper/ResourceMapperTest.java Tue Sep 6 14:01:19 2011
@@ -247,6 +247,16 @@ public class ResourceMapperTest extends
assertEquals("123", params.get("val").toString());
}
+ @Test
+ public void requestWithEmptyFilename()
+ {
+ // request invalid path with empty filename
+ // this must not return a handler
+ Request request = createRequest("test2/image/");
+ IRequestHandler handler = mapperWithPlaceholder.mapRequest(request);
+ assertNull(handler);
+ }
+
private static class TestResource implements IResource
{
private static final long serialVersionUID = -3130204487473856574L;