From 4025df1ef892bccf154553ff50306d83a3b67eba Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Fri, 8 May 2009 10:02:17 +0000 Subject: [PATCH] SPR-5726: Unexpected @RequestMapping semantics when class-level and method-level mappings used together --- .../mvc/annotation/AnnotationMethodHandlerAdapter.java | 4 +++- .../UriTemplateServletAnnotationControllerTests.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java index a602bc3925..361a38e8b6 100644 --- a/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java +++ b/org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java @@ -62,6 +62,7 @@ import org.springframework.util.AntPathMatcher; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; import org.springframework.util.PathMatcher; import org.springframework.util.StringUtils; import org.springframework.validation.support.BindingAwareModelMap; @@ -502,7 +503,8 @@ public class AnnotationMethodHandlerAdapter extends WebContentGenerator implemen } private boolean isPathMatch(String methodLevelPattern, String lookupPath) { - if (isPathMatchInternal(methodLevelPattern, lookupPath)) { + if ((!hasTypeLevelMapping() || ObjectUtils.isEmpty(getTypeLevelMapping().value())) && + isPathMatchInternal(methodLevelPattern, lookupPath)) { return true; } if (hasTypeLevelMapping()) { diff --git a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/UriTemplateServletAnnotationControllerTests.java b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/UriTemplateServletAnnotationControllerTests.java index 587f70a9bf..95c1071465 100644 --- a/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/UriTemplateServletAnnotationControllerTests.java +++ b/org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/mvc/annotation/UriTemplateServletAnnotationControllerTests.java @@ -319,7 +319,7 @@ public class UriTemplateServletAnnotationControllerTests { writer.write("create"); } - @RequestMapping(value = "{hotel}", method = RequestMethod.GET) + @RequestMapping(value = "/{hotel}", method = RequestMethod.GET) public void show(@PathVariable String hotel, Writer writer) throws IOException { writer.write("show-" + hotel); }