Browse Source

RequestHeaderMapMethodArgumentResolver defensively checks for non-existing header values

Issue: SPR-14091
(cherry picked from commit 8f6ede5)
pull/1057/head
Juergen Hoeller 10 years ago
parent
commit
fe76f4084a
  1. 19
      spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMapMethodArgumentResolver.java

19
spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMapMethodArgumentResolver.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2012 the original author or authors.
* Copyright 2002-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -46,8 +46,8 @@ import org.springframework.web.method.support.ModelAndViewContainer; @@ -46,8 +46,8 @@ import org.springframework.web.method.support.ModelAndViewContainer;
public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgumentResolver {
public boolean supportsParameter(MethodParameter parameter) {
return parameter.hasParameterAnnotation(RequestHeader.class)
&& Map.class.isAssignableFrom(parameter.getParameterType());
return (parameter.hasParameterAnnotation(RequestHeader.class) &&
Map.class.isAssignableFrom(parameter.getParameterType()));
}
public Object resolveArgument(
@ -56,7 +56,6 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu @@ -56,7 +56,6 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu
throws Exception {
Class<?> paramType = parameter.getParameterType();
if (MultiValueMap.class.isAssignableFrom(paramType)) {
MultiValueMap<String, String> result;
if (HttpHeaders.class.isAssignableFrom(paramType)) {
@ -67,8 +66,11 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu @@ -67,8 +66,11 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu
}
for (Iterator<String> iterator = webRequest.getHeaderNames(); iterator.hasNext();) {
String headerName = iterator.next();
for (String headerValue : webRequest.getHeaderValues(headerName)) {
result.add(headerName, headerValue);
String[] headerValues = webRequest.getHeaderValues(headerName);
if (headerValues != null) {
for (String headerValue : headerValues) {
result.add(headerName, headerValue);
}
}
}
return result;
@ -78,9 +80,12 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu @@ -78,9 +80,12 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu
for (Iterator<String> iterator = webRequest.getHeaderNames(); iterator.hasNext();) {
String headerName = iterator.next();
String headerValue = webRequest.getHeader(headerName);
result.put(headerName, headerValue);
if (headerValue != null) {
result.put(headerName, headerValue);
}
}
return result;
}
}
}

Loading…
Cancel
Save