diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
index 8224e9d450..5f73abe401 100644
--- a/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
+++ b/spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java
@@ -87,10 +87,46 @@ public class MockHttpServletRequest implements HttpServletRequest {
private static final String HTTPS = "https";
+ private static final String CONTENT_TYPE_HEADER = "Content-Type";
+
+ private static final String HOST_HEADER = "Host";
+
+ private static final String CHARSET_PREFIX = "charset=";
+
+ private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
+
+ private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM =
+ new DelegatingServletInputStream(StreamUtils.emptyInput());
+
+ private static final BufferedReader EMPTY_BUFFERED_READER =
+ new BufferedReader(new StringReader(""));
+
+ /**
+ * Date formats as specified in the HTTP RFC
+ * @see Section 7.1.1.1 of RFC 7231
+ */
+ private static final String[] DATE_FORMATS = new String[] {
+ "EEE, dd MMM yyyy HH:mm:ss zzz",
+ "EEE, dd-MMM-yy HH:mm:ss zzz",
+ "EEE MMM dd HH:mm:ss yyyy"
+ };
+
+
+ // ---------------------------------------------------------------------
+ // Public constants
+ // ---------------------------------------------------------------------
+
+ /**
+ * The default protocol: 'HTTP/1.1'.
+ * @since 4.3.7
+ */
+ public static final String DEFAULT_PROTOCOL = "HTTP/1.1";
+
/**
- * The default protocol: 'http'.
+ * The default scheme: 'http'.
+ * @since 4.3.7
*/
- public static final String DEFAULT_PROTOCOL = HTTP;
+ public static final String DEFAULT_SCHEME = HTTP;
/**
* The default server address: '127.0.0.1'.
@@ -117,30 +153,12 @@ public class MockHttpServletRequest implements HttpServletRequest {
*/
public static final String DEFAULT_REMOTE_HOST = "localhost";
- private static final String CONTENT_TYPE_HEADER = "Content-Type";
-
- private static final String HOST_HEADER = "Host";
-
- private static final String CHARSET_PREFIX = "charset=";
-
- private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM =
- new DelegatingServletInputStream(StreamUtils.emptyInput());
-
- private static final BufferedReader EMPTY_BUFFERED_READER =
- new BufferedReader(new StringReader(""));
-
- /**
- * Date formats as specified in the HTTP RFC
- * @see Section 7.1.1.1 of RFC 7231
- */
- private static final String[] DATE_FORMATS = new String[] {
- "EEE, dd MMM yyyy HH:mm:ss zzz",
- "EEE, dd-MMM-yy HH:mm:ss zzz",
- "EEE MMM dd HH:mm:ss yyyy"
- };
- private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
+ // ---------------------------------------------------------------------
+ // Lifecycle properties
+ // ---------------------------------------------------------------------
+ private final ServletContext servletContext;
private boolean active = true;
@@ -161,7 +179,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
private String protocol = DEFAULT_PROTOCOL;
- private String scheme = DEFAULT_PROTOCOL;
+ private String scheme = DEFAULT_SCHEME;
private String serverName = DEFAULT_SERVER_NAME;
@@ -176,8 +194,6 @@ public class MockHttpServletRequest implements HttpServletRequest {
private boolean secure = false;
- private final ServletContext servletContext;
-
private int remotePort = DEFAULT_SERVER_PORT;
private String localName = DEFAULT_SERVER_NAME;
@@ -1128,16 +1144,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
@Override
public StringBuffer getRequestURL() {
StringBuffer url = new StringBuffer(this.scheme).append("://").append(this.serverName);
-
- if (this.serverPort > 0
- && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) || (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) {
+ if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) ||
+ (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) {
url.append(':').append(this.serverPort);
}
-
if (StringUtils.hasText(getRequestURI())) {
url.append(getRequestURI());
}
-
return url;
}
diff --git a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java
index 55d6fb74d1..1ec2d9b1df 100644
--- a/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java
+++ b/spring-test/src/test/java/org/springframework/mock/web/MockHttpServletRequestTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 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.
@@ -27,7 +27,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-
import javax.servlet.http.Cookie;
import org.junit.Rule;
@@ -62,6 +61,16 @@ public class MockHttpServletRequestTests {
public final ExpectedException exception = ExpectedException.none();
+ @Test
+ public void protocolAndScheme() {
+ assertEquals(MockHttpServletRequest.DEFAULT_PROTOCOL, request.getProtocol());
+ assertEquals(MockHttpServletRequest.DEFAULT_SCHEME, request.getScheme());
+ request.setProtocol("HTTP/2.0");
+ request.setScheme("https");
+ assertEquals("HTTP/2.0", request.getProtocol());
+ assertEquals("https", request.getScheme());
+ }
+
@Test
public void setContentAndGetInputStream() throws IOException {
byte[] bytes = "body".getBytes(Charset.defaultCharset());
diff --git a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java
index debed377a3..182df3af88 100644
--- a/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java
+++ b/spring-web/src/test/java/org/springframework/mock/web/test/MockHttpServletRequest.java
@@ -87,10 +87,46 @@ public class MockHttpServletRequest implements HttpServletRequest {
private static final String HTTPS = "https";
+ private static final String CONTENT_TYPE_HEADER = "Content-Type";
+
+ private static final String HOST_HEADER = "Host";
+
+ private static final String CHARSET_PREFIX = "charset=";
+
+ private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
+
+ private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM =
+ new DelegatingServletInputStream(StreamUtils.emptyInput());
+
+ private static final BufferedReader EMPTY_BUFFERED_READER =
+ new BufferedReader(new StringReader(""));
+
+ /**
+ * Date formats as specified in the HTTP RFC
+ * @see Section 7.1.1.1 of RFC 7231
+ */
+ private static final String[] DATE_FORMATS = new String[] {
+ "EEE, dd MMM yyyy HH:mm:ss zzz",
+ "EEE, dd-MMM-yy HH:mm:ss zzz",
+ "EEE MMM dd HH:mm:ss yyyy"
+ };
+
+
+ // ---------------------------------------------------------------------
+ // Public constants
+ // ---------------------------------------------------------------------
+
+ /**
+ * The default protocol: 'HTTP/1.1'.
+ * @since 4.3.7
+ */
+ public static final String DEFAULT_PROTOCOL = "HTTP/1.1";
+
/**
- * The default protocol: 'http'.
+ * The default scheme: 'http'.
+ * @since 4.3.7
*/
- public static final String DEFAULT_PROTOCOL = HTTP;
+ public static final String DEFAULT_SCHEME = HTTP;
/**
* The default server address: '127.0.0.1'.
@@ -117,30 +153,12 @@ public class MockHttpServletRequest implements HttpServletRequest {
*/
public static final String DEFAULT_REMOTE_HOST = "localhost";
- private static final String CONTENT_TYPE_HEADER = "Content-Type";
-
- private static final String HOST_HEADER = "Host";
-
- private static final String CHARSET_PREFIX = "charset=";
-
- private static final ServletInputStream EMPTY_SERVLET_INPUT_STREAM =
- new DelegatingServletInputStream(StreamUtils.emptyInput());
-
- private static final BufferedReader EMPTY_BUFFERED_READER =
- new BufferedReader(new StringReader(""));
-
- /**
- * Date formats as specified in the HTTP RFC
- * @see Section 7.1.1.1 of RFC 7231
- */
- private static final String[] DATE_FORMATS = new String[] {
- "EEE, dd MMM yyyy HH:mm:ss zzz",
- "EEE, dd-MMM-yy HH:mm:ss zzz",
- "EEE MMM dd HH:mm:ss yyyy"
- };
- private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
+ // ---------------------------------------------------------------------
+ // Lifecycle properties
+ // ---------------------------------------------------------------------
+ private final ServletContext servletContext;
private boolean active = true;
@@ -161,7 +179,7 @@ public class MockHttpServletRequest implements HttpServletRequest {
private String protocol = DEFAULT_PROTOCOL;
- private String scheme = DEFAULT_PROTOCOL;
+ private String scheme = DEFAULT_SCHEME;
private String serverName = DEFAULT_SERVER_NAME;
@@ -176,8 +194,6 @@ public class MockHttpServletRequest implements HttpServletRequest {
private boolean secure = false;
- private final ServletContext servletContext;
-
private int remotePort = DEFAULT_SERVER_PORT;
private String localName = DEFAULT_SERVER_NAME;
@@ -1128,16 +1144,13 @@ public class MockHttpServletRequest implements HttpServletRequest {
@Override
public StringBuffer getRequestURL() {
StringBuffer url = new StringBuffer(this.scheme).append("://").append(this.serverName);
-
- if (this.serverPort > 0
- && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) || (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) {
+ if (this.serverPort > 0 && ((HTTP.equalsIgnoreCase(this.scheme) && this.serverPort != 80) ||
+ (HTTPS.equalsIgnoreCase(this.scheme) && this.serverPort != 443))) {
url.append(':').append(this.serverPort);
}
-
if (StringUtils.hasText(getRequestURI())) {
url.append(getRequestURI());
}
-
return url;
}