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;