Don't decode URI for content negotiation by extension

Minor bug fix in the ContentNegotiatingViewResolver where decoding the
URI prevented proper detection of the file extension in a URL.

Issue: SPR-9390
This commit is contained in:
Rossen Stoyanchev
2012-05-10 15:00:01 -04:00
parent 80af842662
commit e04b322110
2 changed files with 18 additions and 6 deletions

View File

@@ -100,7 +100,7 @@ public class ContentNegotiatingViewResolverTests {
}
// SPR-8678
@Test
public void getMediaTypeFilenameWithContextPath() {
request.setContextPath("/project-1.0.0.M3");
@@ -110,6 +110,15 @@ public class ContentNegotiatingViewResolverTests {
assertTrue("Context path should be excluded", viewResolver.getMediaTypes(request).isEmpty());
}
// SPR-9390
@Test
public void getMediaTypeFilenameWithEncodedURI() {
request.setRequestURI("/quo%20vadis%3f.html");
List<MediaType> result = viewResolver.getMediaTypes(request);
assertEquals("Invalid content type", Collections.singletonList(new MediaType("text", "html")), result);
}
@Test
public void getMediaTypeParameter() {
viewResolver.setFavorParameter(true);
@@ -426,7 +435,7 @@ public class ContentNegotiatingViewResolverTests {
StaticWebApplicationContext webAppContext = new StaticWebApplicationContext();
webAppContext.setServletContext(new MockServletContext());
webAppContext.refresh();
UrlBasedViewResolver urlViewResolver = new InternalResourceViewResolver();
urlViewResolver.setApplicationContext(webAppContext);
ViewResolver xmlViewResolver = createMock(ViewResolver.class);
@@ -435,7 +444,7 @@ public class ContentNegotiatingViewResolverTests {
View xmlView = createMock("application_xml", View.class);
View jsonView = createMock("application_json", View.class);
viewResolver.setDefaultViews(Arrays.asList(jsonView));
String viewName = "redirect:anotherTest";
Locale locale = Locale.ENGLISH;
@@ -449,7 +458,7 @@ public class ContentNegotiatingViewResolverTests {
verify(xmlViewResolver, xmlView, jsonView);
}
@Test
public void resolveViewNoMatch() throws Exception {
request.addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9");
@@ -505,7 +514,7 @@ public class ContentNegotiatingViewResolverTests {
StaticWebApplicationContext webAppContext = new StaticWebApplicationContext();
webAppContext.setServletContext(new MockServletContext());
webAppContext.refresh();
InternalResourceViewResolver nestedResolver = new InternalResourceViewResolver();
nestedResolver.setApplicationContext(webAppContext);
nestedResolver.setViewClass(InternalResourceView.class);