MockHttpServletResponse.setIntHeader supports 'Content-Length' header as well

Issue: SPR-13752
This commit is contained in:
Juergen Hoeller
2015-12-02 13:36:35 +01:00
parent 4d4d2e2966
commit a4f5c46fed
3 changed files with 34 additions and 20 deletions

View File

@@ -23,6 +23,7 @@ import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
@@ -32,7 +33,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TimeZone;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
@@ -490,16 +490,30 @@ public class MockHttpServletResponse implements HttpServletResponse {
@Override
public void setDateHeader(String name, long value) {
setHeaderValue(name, formatDate(value));
}
public long getDateHeader(String name) {
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US);
dateFormat.setTimeZone(GMT);
setHeaderValue(name, dateFormat.format(new Date(value)));
try {
return dateFormat.parse(getHeader(name)).getTime();
}
catch (ParseException ex) {
throw new IllegalArgumentException(
"Value for header '" + name + "' is not a valid Date: " + getHeader(name));
}
}
@Override
public void addDateHeader(String name, long value) {
addHeaderValue(name, formatDate(value));
}
private String formatDate(long date) {
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT, Locale.US);
dateFormat.setTimeZone(GMT);
setHeaderValue(name, dateFormat.format(new Date(value)));
return dateFormat.format(new Date(date));
}
@Override
@@ -538,11 +552,12 @@ public class MockHttpServletResponse implements HttpServletResponse {
private boolean setSpecialHeader(String name, Object value) {
if (CONTENT_TYPE_HEADER.equalsIgnoreCase(name)) {
setContentType((String) value);
setContentType(value.toString());
return true;
}
else if (CONTENT_LENGTH_HEADER.equalsIgnoreCase(name)) {
setContentLength(Integer.parseInt((String) value));
setContentLength(value instanceof Number ? ((Number) value).intValue() :
Integer.parseInt(value.toString()));
return true;
}
else {