diff --git a/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java b/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java
index 57fefe535fd..65d2421a5d8 100644
--- a/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java
+++ b/spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java
@@ -26,7 +26,6 @@ import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
@@ -39,6 +38,7 @@ import javax.servlet.http.HttpServletRequestWrapper;
*
Used e.g. by {@link org.springframework.web.filter.AbstractRequestLoggingFilter}.
*
* @author Juergen Hoeller
+ * @author Brian Clozel
* @since 4.1.3
*/
public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
@@ -47,6 +47,7 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
private static final String METHOD_POST = "POST";
+
private final ByteArrayOutputStream cachedContent;
private ServletInputStream inputStream;
@@ -89,42 +90,44 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
@Override
public String getParameter(String name) {
- if(this.cachedContent.size() == 0 && isFormPost()) {
- writeRequestParamsToContent();
+ if (this.cachedContent.size() == 0 && isFormPost()) {
+ writeRequestParametersToCachedContent();
}
return super.getParameter(name);
}
@Override
public Map getParameterMap() {
- if(this.cachedContent.size() == 0 && isFormPost()) {
- writeRequestParamsToContent();
+ if (this.cachedContent.size() == 0 && isFormPost()) {
+ writeRequestParametersToCachedContent();
}
return super.getParameterMap();
}
@Override
public Enumeration getParameterNames() {
- if(this.cachedContent.size() == 0 && isFormPost()) {
- writeRequestParamsToContent();
+ if (this.cachedContent.size() == 0 && isFormPost()) {
+ writeRequestParametersToCachedContent();
}
return super.getParameterNames();
}
@Override
public String[] getParameterValues(String name) {
- if(this.cachedContent.size() == 0 && isFormPost()) {
- writeRequestParamsToContent();
+ if (this.cachedContent.size() == 0 && isFormPost()) {
+ writeRequestParametersToCachedContent();
}
return super.getParameterValues(name);
}
+
private boolean isFormPost() {
- return (getContentType() != null && getContentType().contains(FORM_CONTENT_TYPE) &&
+ String contentType = getContentType();
+ return (contentType != null && contentType.contains(FORM_CONTENT_TYPE) &&
METHOD_POST.equalsIgnoreCase(getMethod()));
}
- private void writeRequestParamsToContent() {
+ private void writeRequestParametersToCachedContent() {
try {
if (this.cachedContent.size() == 0) {
String requestEncoding = getCharacterEncoding();
@@ -134,23 +137,23 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
List values = Arrays.asList(form.get(name));
for (Iterator valueIterator = values.iterator(); valueIterator.hasNext(); ) {
String value = valueIterator.next();
- cachedContent.write(URLEncoder.encode(name, requestEncoding).getBytes());
+ this.cachedContent.write(URLEncoder.encode(name, requestEncoding).getBytes());
if (value != null) {
- cachedContent.write('=');
- cachedContent.write(URLEncoder.encode(value, requestEncoding).getBytes());
+ this.cachedContent.write('=');
+ this.cachedContent.write(URLEncoder.encode(value, requestEncoding).getBytes());
if (valueIterator.hasNext()) {
- cachedContent.write('&');
+ this.cachedContent.write('&');
}
}
}
if (nameIterator.hasNext()) {
- cachedContent.write('&');
+ this.cachedContent.write('&');
}
}
}
}
- catch (IOException e) {
- throw new RuntimeException(e);
+ catch (IOException ex) {
+ throw new IllegalStateException("Failed to write request parameters to cached content", ex);
}
}
@@ -161,6 +164,7 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
return this.cachedContent.toByteArray();
}
+
private class ContentCachingInputStream extends ServletInputStream {
private final ServletInputStream is;
@@ -178,4 +182,5 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
return ch;
}
}
+
}