diff --git a/spring-web/src/main/java/org/springframework/http/Cookie.java b/spring-web/src/main/java/org/springframework/http/Cookie.java
deleted file mode 100644
index 3c81ad42c14..00000000000
--- a/spring-web/src/main/java/org/springframework/http/Cookie.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright 2002-2013 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.http;
-
-
-/**
- * Representation of a cookie value parsed from a "Cookie" request header or a
- * "Set-Cookie" response header.
- *
- * @author Rossen Stoyanchev
- * @since 4.0
- *
- * @see http://www.ietf.org/rfc/rfc2109.txt
- */
-public interface Cookie {
-
- /**
- * Returns the name of the cookie.
- */
- String getName();
-
- /**
- * Returns the value of the cookie.
- */
- String getValue();
-
- /**
- * Returns the path on the server to which the browser returns this cookie.
- */
- String getPath();
-
- /**
- * Returns the comment describing the purpose of this cookie.
- */
- String getComment();
-
- /**
- * Returns the domain name set for this cookie.
- */
- String getDomain();
-
- /**
- * Returns the maximum age of the cookie, specified in seconds.
- */
- int getMaxAge();
-
- /**
- * Returns true if the browser is sending cookies only over a
- * secure protocol, or false if the browser can send cookies
- * using any protocol.
- */
- boolean isSecure();
-
- /**
- * Sets the version of the cookie protocol this cookie complies with.
- */
- int getVersion();
-
-}
diff --git a/spring-web/src/main/java/org/springframework/http/server/ServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/ServerHttpRequest.java
index 39ac8d60317..422d1d5bbdb 100644
--- a/spring-web/src/main/java/org/springframework/http/server/ServerHttpRequest.java
+++ b/spring-web/src/main/java/org/springframework/http/server/ServerHttpRequest.java
@@ -18,9 +18,7 @@ package org.springframework.http.server;
import java.net.InetSocketAddress;
import java.security.Principal;
-import java.util.Map;
-import org.springframework.http.Cookie;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpRequest;
import org.springframework.util.MultiValueMap;
@@ -39,11 +37,6 @@ public interface ServerHttpRequest extends HttpRequest, HttpInputMessage {
*/
MultiValueMap getQueryParams();
- /**
- * Return the cookie values parsed from the "Cookie" request header.
- */
- Map getCookies();
-
/**
* Return a {@link java.security.Principal} instance containing the name of the
* authenticated user. If the user has not been authenticated, the method returns
diff --git a/spring-web/src/main/java/org/springframework/http/server/ServletServerCookie.java b/spring-web/src/main/java/org/springframework/http/server/ServletServerCookie.java
deleted file mode 100644
index 96af943b795..00000000000
--- a/spring-web/src/main/java/org/springframework/http/server/ServletServerCookie.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2002-2012 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.springframework.http.server;
-
-import org.springframework.http.Cookie;
-
-
-/**
- * A {@link Cookie} that wraps a {@link javax.servlet.http.Cookie}.
- *
- * @author Rossen Stoyanchev
- * @since 4.0
- */
-public class ServletServerCookie implements Cookie {
-
- private final javax.servlet.http.Cookie servletCookie;
-
-
- public ServletServerCookie(javax.servlet.http.Cookie servletCookie) {
- this.servletCookie = servletCookie;
- }
-
- @Override
- public String getName() {
- return this.servletCookie.getName();
- }
-
- @Override
- public String getValue() {
- return this.servletCookie.getValue();
- }
-
- @Override
- public String getPath() {
- return this.servletCookie.getPath();
- }
-
- @Override
- public String getComment() {
- return this.servletCookie.getComment();
- }
-
- @Override
- public String getDomain() {
- return this.servletCookie.getDomain();
- }
-
- @Override
- public int getMaxAge() {
- return this.servletCookie.getMaxAge();
- }
-
- @Override
- public boolean isSecure() {
- return this.servletCookie.getSecure();
- }
-
- @Override
- public int getVersion() {
- return this.servletCookie.getVersion();
- }
-
- @Override
- public String toString() {
- return "ServletServerCookie [servletCookie=" + this.servletCookie + "]";
- }
-}
diff --git a/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java
index 0d5ae5bfab1..e880e0a3252 100644
--- a/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java
+++ b/spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java
@@ -29,7 +29,6 @@ import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.security.Principal;
import java.util.Arrays;
-import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
@@ -40,7 +39,6 @@ import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
-import org.springframework.http.Cookie;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
@@ -69,12 +67,11 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
private HttpHeaders headers;
- private Map cookies;
-
private MultiValueMap queryParams;
private ServerHttpAsyncRequestControl asyncRequestControl;
+
/**
* Construct a new instance of the ServletServerHttpRequest based on the given {@link HttpServletRequest}.
* @param servletRequest the servlet request
@@ -157,20 +154,6 @@ public class ServletServerHttpRequest implements ServerHttpRequest {
return new InetSocketAddress(this.servletRequest.getRemoteHost(), this.servletRequest.getRemotePort());
}
- @Override
- public Map getCookies() {
- if (this.cookies == null) {
- this.cookies = new HashMap();
- if (this.servletRequest.getCookies() != null) {
- for (javax.servlet.http.Cookie cookie : this.servletRequest.getCookies()) {
- this.cookies.put(cookie.getName(), new ServletServerCookie(cookie));
- }
- }
- this.cookies = Collections.unmodifiableMap(this.cookies);
- }
- return this.cookies;
- }
-
@Override
public MultiValueMap getQueryParams() {
if (this.queryParams == null) {
diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/DefaultSockJsService.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/DefaultSockJsService.java
index 6d6033c9604..19d29867e06 100644
--- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/DefaultSockJsService.java
+++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/DefaultSockJsService.java
@@ -29,7 +29,7 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture;
-import org.springframework.http.Cookie;
+import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.ServerHttpRequest;
@@ -307,9 +307,8 @@ public class DefaultSockJsService extends AbstractSockJsService {
}
if (transportType.sendsSessionCookie() && isDummySessionCookieEnabled()) {
- Cookie cookie = request.getCookies().get("JSESSIONID");
- String value = (cookie != null) ? cookie.getValue() : "dummy";
- response.getHeaders().set("Set-Cookie", "JSESSIONID=" + value + ";path=/");
+ String cookieValue = getJsessionIdCookieValue(request.getHeaders());
+ response.getHeaders().set("Set-Cookie", "JSESSIONID=" + cookieValue + ";path=/");
}
if (transportType.supportsCors()) {
@@ -387,6 +386,20 @@ public class DefaultSockJsService extends AbstractSockJsService {
}, getDisconnectDelay());
}
+ private String getJsessionIdCookieValue(HttpHeaders headers) {
+ List rawCookies = headers.get("Cookie");
+ if (!CollectionUtils.isEmpty(rawCookies)) {
+ for (String rawCookie : rawCookies) {
+ if (rawCookie.startsWith("JSESSIONID=")) {
+ int start = "JSESSIONID=".length();
+ int end = rawCookie.indexOf(';');
+ return (end != -1) ? rawCookie.substring(start, end) : rawCookie.substring(start);
+ }
+ }
+ }
+ return "dummy";
+ }
+
private final SockJsServiceConfig sockJsServiceConfig = new SockJsServiceConfig() {