diff --git a/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java b/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java index da172d4f062..bf1cdd54090 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/HttpPutFormContentFilter.java @@ -61,6 +61,7 @@ public class HttpPutFormContentFilter extends OncePerRequestFilter { private final FormHttpMessageConverter formConverter = new AllEncompassingFormHttpMessageConverter(); + /** * The default character set to use for reading form data. */ @@ -68,6 +69,7 @@ public class HttpPutFormContentFilter extends OncePerRequestFilter { this.formConverter.setCharset(charset); } + @Override protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { @@ -104,29 +106,30 @@ public class HttpPutFormContentFilter extends OncePerRequestFilter { } } + private static class HttpPutFormContentRequestWrapper extends HttpServletRequestWrapper { private MultiValueMap formParameters; public HttpPutFormContentRequestWrapper(HttpServletRequest request, MultiValueMap parameters) { super(request); - this.formParameters = (parameters != null) ? parameters : new LinkedMultiValueMap<>(); + this.formParameters = (parameters != null ? parameters : new LinkedMultiValueMap<>()); } @Override public String getParameter(String name) { String queryStringValue = super.getParameter(name); String formValue = this.formParameters.getFirst(name); - return (queryStringValue != null) ? queryStringValue : formValue; + return (queryStringValue != null ? queryStringValue : formValue); } @Override public Map getParameterMap() { Map result = new LinkedHashMap<>(); - Enumeration names = this.getParameterNames(); + Enumeration names = getParameterNames(); while (names.hasMoreElements()) { String name = names.nextElement(); - result.put(name, this.getParameterValues(name)); + result.put(name, getParameterValues(name)); } return result; } @@ -150,7 +153,7 @@ public class HttpPutFormContentFilter extends OncePerRequestFilter { return formValues.toArray(new String[formValues.size()]); } else { - List result = new ArrayList<>(); + List result = new ArrayList<>(queryStringValues.length + formValues.size()); result.addAll(Arrays.asList(queryStringValues)); result.addAll(formValues); return result.toArray(new String[result.size()]); diff --git a/spring-web/src/test/java/org/springframework/web/multipart/support/RequestPartServletServerHttpRequestTests.java b/spring-web/src/test/java/org/springframework/web/multipart/support/RequestPartServletServerHttpRequestTests.java index 441f701a8b7..1a741deae26 100644 --- a/spring-web/src/test/java/org/springframework/web/multipart/support/RequestPartServletServerHttpRequestTests.java +++ b/spring-web/src/test/java/org/springframework/web/multipart/support/RequestPartServletServerHttpRequestTests.java @@ -108,6 +108,7 @@ public class RequestPartServletServerHttpRequestTests { return headers; } }; + byte[] bytes = {(byte) 0xC4}; mockRequest.setParameter("part", new String(bytes, StandardCharsets.ISO_8859_1)); ServerHttpRequest request = new RequestPartServletServerHttpRequest(mockRequest, "part"); @@ -125,6 +126,7 @@ public class RequestPartServletServerHttpRequestTests { return headers; } }; + byte[] bytes = {(byte) 0xC4}; mockRequest.setParameter("part", new String(bytes, StandardCharsets.ISO_8859_1)); mockRequest.setCharacterEncoding("iso-8859-1");