SPR-8543 Fix issue in AnnotationMethodHandlerAdapter with extracting URI template variable from URL with file extension

This commit is contained in:
Rossen Stoyanchev
2011-07-26 08:26:09 +00:00
parent 30f363bbc9
commit 38a6660777
5 changed files with 56 additions and 16 deletions

View File

@@ -340,6 +340,19 @@ public class UriTemplateServletAnnotationControllerTests {
assertEquals("bar-bar", response.getContentAsString());
}
/*
* See SPR-8543
*/
@Test
public void variableNamesWithUrlExtension() throws Exception {
initServlet(VariableNamesController.class);
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test/foo.json");
MockHttpServletResponse response = new MockHttpServletResponse();
servlet.service(request, response);
assertEquals("foo-foo", response.getContentAsString());
}
/*
* See SPR-6906
*/

View File

@@ -51,6 +51,7 @@ import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver;
import org.springframework.web.servlet.mvc.annotation.UriTemplateServletAnnotationControllerTests;
import org.springframework.web.servlet.mvc.annotation.UriTemplateServletAnnotationControllerTests.VariableNamesController;
import org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver;
import org.springframework.web.servlet.view.AbstractView;
@@ -320,6 +321,19 @@ public class UriTemplateServletHandlerMethodTests {
assertEquals("bar-bar", response.getContentAsString());
}
/*
* See SPR-8543
*/
@Test
public void variableNamesWithUrlExtension() throws Exception {
initDispatcherServlet(VariableNamesController.class, null);
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/test/foo.json");
MockHttpServletResponse response = new MockHttpServletResponse();
servlet.service(request, response);
assertEquals("foo-foo", response.getContentAsString());
}
/*
* See SPR-6978
*/

View File

@@ -17,6 +17,7 @@
package org.springframework.web.servlet.resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
@@ -137,6 +138,14 @@ public class ResourceHttpRequestHandlerTests {
response = new MockHttpServletResponse();
handler.handleRequest(request, response);
assertEquals(404, response.getStatus());
handler.setLocations(Arrays.<Resource>asList(new ClassPathResource("testsecret/", getClass())));
request.setAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE, "secret.txt");
response = new MockHttpServletResponse();
handler.handleRequest(request, response);
assertEquals(200, response.getStatus());
assertEquals("text/plain", response.getContentType());
assertEquals("big secret", response.getContentAsString());
}
@Test