Align with Servlet 6.0 and introduce support for Jakarta WebSocket 2.1
Includes corresponding build upgrade to Tomcat 10.1.1 and Undertow 2.3.0 (while retaining runtime compatibility with Tomcat 10.0 and Undertow 2.2) Closes gh-29435 Closes gh-29436
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 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.
|
||||
@@ -48,6 +48,7 @@ import org.springframework.util.StringUtils;
|
||||
*
|
||||
* @author Marek Hawrylczak
|
||||
* @author Rossen Stoyanchev
|
||||
* @author Juergen Hoeller
|
||||
* @since 5.0
|
||||
*/
|
||||
class UndertowServerHttpRequest extends AbstractServerHttpRequest {
|
||||
@@ -82,15 +83,12 @@ class UndertowServerHttpRequest extends AbstractServerHttpRequest {
|
||||
return HttpMethod.valueOf(this.exchange.getRequestMethod().toString());
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected MultiValueMap<String, HttpCookie> initCookies() {
|
||||
MultiValueMap<String, HttpCookie> cookies = new LinkedMultiValueMap<>();
|
||||
// getRequestCookies() is deprecated in Undertow 2.2
|
||||
for (String name : this.exchange.getRequestCookies().keySet()) {
|
||||
Cookie cookie = this.exchange.getRequestCookies().get(name);
|
||||
HttpCookie httpCookie = new HttpCookie(name, cookie.getValue());
|
||||
cookies.add(name, httpCookie);
|
||||
for (Cookie cookie : this.exchange.requestCookies()) {
|
||||
HttpCookie httpCookie = new HttpCookie(cookie.getName(), cookie.getValue());
|
||||
cookies.add(cookie.getName(), httpCookie);
|
||||
}
|
||||
return cookies;
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ import org.springframework.util.Assert;
|
||||
* @author Marek Hawrylczak
|
||||
* @author Rossen Stoyanchev
|
||||
* @author Arjen Poutsma
|
||||
* @author Juergen Hoeller
|
||||
* @since 5.0
|
||||
*/
|
||||
class UndertowServerHttpResponse extends AbstractListenerServerHttpResponse implements ZeroCopyHttpOutputMessage {
|
||||
@@ -105,7 +106,6 @@ class UndertowServerHttpResponse extends AbstractListenerServerHttpResponse impl
|
||||
protected void applyHeaders() {
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected void applyCookies() {
|
||||
for (String name : getCookies().keySet()) {
|
||||
@@ -123,8 +123,7 @@ class UndertowServerHttpResponse extends AbstractListenerServerHttpResponse impl
|
||||
cookie.setSecure(httpCookie.isSecure());
|
||||
cookie.setHttpOnly(httpCookie.isHttpOnly());
|
||||
cookie.setSameSiteMode(httpCookie.getSameSite());
|
||||
// getResponseCookies() is deprecated in Undertow 2.2
|
||||
this.exchange.getResponseCookies().putIfAbsent(name, cookie);
|
||||
this.exchange.setResponseCookie(cookie);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,14 +134,10 @@ class UndertowServerHttpResponse extends AbstractListenerServerHttpResponse impl
|
||||
Mono.create(sink -> {
|
||||
try {
|
||||
FileChannel source = FileChannel.open(file, StandardOpenOption.READ);
|
||||
|
||||
TransferBodyListener listener = new TransferBodyListener(source, position,
|
||||
count, sink);
|
||||
TransferBodyListener listener = new TransferBodyListener(source, position, count, sink);
|
||||
sink.onDispose(listener::closeSource);
|
||||
|
||||
StreamSinkChannel destination = this.exchange.getResponseChannel();
|
||||
destination.getWriteSetter().set(listener::transfer);
|
||||
|
||||
listener.transfer(destination);
|
||||
}
|
||||
catch (IOException ex) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 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.
|
||||
@@ -78,7 +78,6 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void sendError(int sc, String msg) throws IOException {
|
||||
copyBodyToResponse(false);
|
||||
try {
|
||||
@@ -86,7 +85,7 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
|
||||
}
|
||||
catch (IllegalStateException ex) {
|
||||
// Possibly on Tomcat when called too late: fall back to silent setStatus
|
||||
super.setStatus(sc, msg);
|
||||
super.setStatus(sc);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user