From 79ded1ca72b22eaecb9dc3830209ddeb97dec2d7 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 2 Dec 2015 13:36:35 +0100 Subject: [PATCH] MockHttpServletResponse.setIntHeader supports 'Content-Length' header as well Issue: SPR-13752 (cherry picked from commit a4f5c46) --- .../mock/web/MockHttpServletResponse.java | 7 +++--- .../web/MockHttpServletResponseTests.java | 19 +++++++-------- .../web/test/MockHttpServletResponse.java | 23 +++++++++++-------- 3 files changed, 27 insertions(+), 22 deletions(-) diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java index 525197336a2..ea384473aab 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -506,11 +506,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 { diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java index 0f1cbc8666d..9316acef87c 100644 --- a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java +++ b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletResponseTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -122,6 +122,13 @@ public class MockHttpServletResponseTests { assertEquals("66", response.getHeader("Content-Length")); } + @Test + public void contentLengthIntHeader() { + response.addIntHeader("Content-Length", 66); + assertEquals(66, response.getContentLength()); + assertEquals("66", response.getHeader("Content-Length")); + } + @Test public void httpHeaderNameCasingIsPreserved() throws Exception { final String headerName = "Header1"; @@ -221,20 +228,14 @@ public class MockHttpServletResponseTests { assertEquals(redirectUrl, response.getRedirectedUrl()); } - /** - * SPR-10414 - */ - @Test + @Test // SPR-10414 public void modifyStatusAfterSendError() throws IOException { response.sendError(HttpServletResponse.SC_NOT_FOUND); response.setStatus(HttpServletResponse.SC_OK); assertEquals(response.getStatus(),HttpServletResponse.SC_NOT_FOUND); } - /** - * SPR-10414 - */ - @Test + @Test // SPR-10414 @SuppressWarnings("deprecation") public void modifyStatusMessageAfterSendError() throws IOException { response.sendError(HttpServletResponse.SC_NOT_FOUND); diff --git a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletResponse.java b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletResponse.java index 080428883b0..98a5b803e74 100644 --- a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletResponse.java +++ b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2015 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. @@ -71,7 +71,7 @@ public class MockHttpServletResponse implements HttpServletResponse { private boolean charset = false; - private final ByteArrayOutputStream content = new ByteArrayOutputStream(); + private final ByteArrayOutputStream content = new ByteArrayOutputStream(1024); private final ServletOutputStream outputStream = new ResponseServletOutputStream(this.content); @@ -189,8 +189,8 @@ public class MockHttpServletResponse implements HttpServletResponse { public String getContentAsString() throws UnsupportedEncodingException { flushBuffer(); - return (this.characterEncoding != null) ? - this.content.toString(this.characterEncoding) : this.content.toString(); + return (this.characterEncoding != null ? + this.content.toString(this.characterEncoding) : this.content.toString()); } @Override @@ -218,8 +218,7 @@ public class MockHttpServletResponse implements HttpServletResponse { if (contentType != null) { int charsetIndex = contentType.toLowerCase().indexOf(CHARSET_PREFIX); if (charsetIndex != -1) { - String encoding = contentType.substring(charsetIndex + CHARSET_PREFIX.length()); - this.characterEncoding = encoding; + this.characterEncoding = contentType.substring(charsetIndex + CHARSET_PREFIX.length()); this.charset = true; } updateContentTypeHeader(); @@ -416,11 +415,13 @@ public class MockHttpServletResponse implements HttpServletResponse { } @Override + @Deprecated public String encodeUrl(String url) { return encodeURL(url); } @Override + @Deprecated public String encodeRedirectUrl(String url) { return encodeRedirectURL(url); } @@ -505,11 +506,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 { @@ -534,14 +536,15 @@ public class MockHttpServletResponse implements HttpServletResponse { @Override public void setStatus(int status) { - if(!this.isCommitted()) { + if (!this.isCommitted()) { this.status = status; } } @Override + @Deprecated public void setStatus(int status, String errorMessage) { - if(!this.isCommitted()) { + if (!this.isCommitted()) { this.status = status; this.errorMessage = errorMessage; }