Add boolean flag in RequestMappingHandlerMapping to indicate if type- or method-level @RequestMapping annotation is being introspected

master
Rossen Stoyanchev 13 years ago
parent 1c1bc9b3df
commit 465712c845
  1. 12
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerMapping.java

@ -86,9 +86,9 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
RequestMapping methodAnnot = AnnotationUtils.findAnnotation(method, RequestMapping.class); RequestMapping methodAnnot = AnnotationUtils.findAnnotation(method, RequestMapping.class);
if (methodAnnot != null) { if (methodAnnot != null) {
RequestMapping typeAnnot = AnnotationUtils.findAnnotation(handlerType, RequestMapping.class); RequestMapping typeAnnot = AnnotationUtils.findAnnotation(handlerType, RequestMapping.class);
RequestMappingInfo methodInfo = createRequestMappingInfo(methodAnnot, handlerType, method); RequestMappingInfo methodInfo = createRequestMappingInfo(methodAnnot, true, method, handlerType);
if (typeAnnot != null) { if (typeAnnot != null) {
RequestMappingInfo typeInfo = createRequestMappingInfo(typeAnnot, handlerType, method); RequestMappingInfo typeInfo = createRequestMappingInfo(typeAnnot, false, method, handlerType);
return typeInfo.combine(methodInfo); return typeInfo.combine(methodInfo);
} }
else { else {
@ -106,11 +106,15 @@ public class RequestMappingHandlerMapping extends RequestMappingInfoHandlerMappi
* {@link RequestMappingInfo}s are combined via {@link RequestMappingInfo#combine(RequestMappingInfo)}. * {@link RequestMappingInfo}s are combined via {@link RequestMappingInfo#combine(RequestMappingInfo)}.
* *
* @param annot a type- or a method-level {@link RequestMapping} annotation * @param annot a type- or a method-level {@link RequestMapping} annotation
* @param handlerType the handler type * @param isMethodAnnotation {@code true} if this is a method annotation; {@code false} if it is a type annotation
* @param method the method with which the created RequestMappingInfo will be combined * @param method the method with which the created RequestMappingInfo will be combined
* @param handlerType the handler type
* @return a {@link RequestMappingInfo} instance; never {@code null} * @return a {@link RequestMappingInfo} instance; never {@code null}
*/ */
protected RequestMappingInfo createRequestMappingInfo(RequestMapping annot, Class<?> handlerType, Method method) { RequestMappingInfo createRequestMappingInfo(RequestMapping annot,
boolean isMethodAnnotation,
Method method,
Class<?> handlerType) {
return new RequestMappingInfo( return new RequestMappingInfo(
new PatternsRequestCondition(annot.value(), getUrlPathHelper(), getPathMatcher(), useSuffixPatternMatch), new PatternsRequestCondition(annot.value(), getUrlPathHelper(), getPathMatcher(), useSuffixPatternMatch),
new RequestMethodsRequestCondition(annot.method()), new RequestMethodsRequestCondition(annot.method()),

Loading…
Cancel
Save