BEST_MATCHING_HANDLER_ATTRIBUTE for spring-webmvc
Issue: SPR-17518
This commit is contained in:
@@ -36,6 +36,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.context.support.StaticWebApplicationContext;
|
||||
import org.springframework.web.cors.CorsConfiguration;
|
||||
import org.springframework.web.method.HandlerMethod;
|
||||
import org.springframework.web.servlet.HandlerMapping;
|
||||
import org.springframework.web.util.UrlPathHelper;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -81,8 +82,10 @@ public class HandlerMethodMappingTests {
|
||||
String key = "foo";
|
||||
this.mapping.registerMapping(key, this.handler, this.method1);
|
||||
|
||||
HandlerMethod result = this.mapping.getHandlerInternal(new MockHttpServletRequest("GET", key));
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", key);
|
||||
HandlerMethod result = this.mapping.getHandlerInternal(request);
|
||||
assertEquals(method1, result.getMethod());
|
||||
assertEquals(result, request.getAttribute(HandlerMapping.BEST_MATCHING_HANDLER_ATTRIBUTE));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -90,8 +93,10 @@ public class HandlerMethodMappingTests {
|
||||
this.mapping.registerMapping("/fo*", this.handler, this.method1);
|
||||
this.mapping.registerMapping("/f*", this.handler, this.method2);
|
||||
|
||||
HandlerMethod result = this.mapping.getHandlerInternal(new MockHttpServletRequest("GET", "/foo"));
|
||||
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
|
||||
HandlerMethod result = this.mapping.getHandlerInternal(request);
|
||||
assertEquals(method1, result.getMethod());
|
||||
assertEquals(result, request.getAttribute(HandlerMapping.BEST_MATCHING_HANDLER_ATTRIBUTE));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalStateException.class)
|
||||
|
||||
@@ -42,17 +42,17 @@ public class SimpleUrlHandlerMappingTests {
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("resource")
|
||||
public void handlerBeanNotFound() throws Exception {
|
||||
public void handlerBeanNotFound() {
|
||||
MockServletContext sc = new MockServletContext("");
|
||||
XmlWebApplicationContext root = new XmlWebApplicationContext();
|
||||
root.setServletContext(sc);
|
||||
root.setConfigLocations(new String[] {"/org/springframework/web/servlet/handler/map1.xml"});
|
||||
root.setConfigLocations("/org/springframework/web/servlet/handler/map1.xml");
|
||||
root.refresh();
|
||||
XmlWebApplicationContext wac = new XmlWebApplicationContext();
|
||||
wac.setParent(root);
|
||||
wac.setServletContext(sc);
|
||||
wac.setNamespace("map2err");
|
||||
wac.setConfigLocations(new String[] {"/org/springframework/web/servlet/handler/map2err.xml"});
|
||||
wac.setConfigLocations("/org/springframework/web/servlet/handler/map2err.xml");
|
||||
try {
|
||||
wac.refresh();
|
||||
fail("Should have thrown NoSuchBeanDefinitionException");
|
||||
@@ -95,7 +95,7 @@ public class SimpleUrlHandlerMappingTests {
|
||||
MockServletContext sc = new MockServletContext("");
|
||||
XmlWebApplicationContext wac = new XmlWebApplicationContext();
|
||||
wac.setServletContext(sc);
|
||||
wac.setConfigLocations(new String[] {"/org/springframework/web/servlet/handler/map2.xml"});
|
||||
wac.setConfigLocations("/org/springframework/web/servlet/handler/map2.xml");
|
||||
wac.refresh();
|
||||
Object bean = wac.getBean("mainController");
|
||||
Object otherBean = wac.getBean("otherController");
|
||||
@@ -106,11 +106,13 @@ public class SimpleUrlHandlerMappingTests {
|
||||
HandlerExecutionChain hec = getHandler(hm, req);
|
||||
assertTrue("Handler is correct bean", hec != null && hec.getHandler() == bean);
|
||||
assertEquals("/welcome.html", req.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE));
|
||||
assertEquals(bean, req.getAttribute(HandlerMapping.BEST_MATCHING_HANDLER_ATTRIBUTE));
|
||||
|
||||
req = new MockHttpServletRequest("GET", "/welcome.x");
|
||||
hec = getHandler(hm, req);
|
||||
assertTrue("Handler is correct bean", hec != null && hec.getHandler() == otherBean);
|
||||
assertEquals("welcome.x", req.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE));
|
||||
assertEquals(otherBean, req.getAttribute(HandlerMapping.BEST_MATCHING_HANDLER_ATTRIBUTE));
|
||||
|
||||
req = new MockHttpServletRequest("GET", "/welcome/");
|
||||
hec = getHandler(hm, req);
|
||||
|
||||
Reference in New Issue
Block a user