diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java b/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java index 45edd3e0b6..963f5356d6 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/DefaultServerHttpRequestBuilder.java @@ -19,6 +19,7 @@ package org.springframework.http.server.reactive; import java.net.InetSocketAddress; import java.net.URI; import java.net.URISyntaxException; +import java.util.Arrays; import java.util.LinkedList; import java.util.function.Consumer; @@ -111,9 +112,8 @@ class DefaultServerHttpRequestBuilder implements ServerHttpRequest.Builder { } @Override - @SuppressWarnings("deprecation") - public ServerHttpRequest.Builder header(String key, String value) { - this.httpHeaders.add(key, value); + public ServerHttpRequest.Builder header(String headerName, String... headerValues) { + this.httpHeaders.put(headerName, Arrays.asList(headerValues)); return this; } diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/ServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/reactive/ServerHttpRequest.java index c71cc0636a..47b2e4c128 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/ServerHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/ServerHttpRequest.java @@ -18,7 +18,6 @@ package org.springframework.http.server.reactive; import java.net.InetSocketAddress; import java.net.URI; -import java.util.Arrays; import java.util.function.Consumer; import org.springframework.http.HttpCookie; @@ -138,30 +137,16 @@ public interface ServerHttpRequest extends HttpRequest, ReactiveHttpInputMessage */ Builder contextPath(String contextPath); - /** - * Add the given, single header value under the given name. - * @param headerName the header name - * @param headerValue the header value - * @deprecated This method will be removed in Spring Framework 5.2 in - * favor of {@link #header(String, String...)}. - */ - @Deprecated - Builder header(String headerName, String headerValue); - /** * Set or override the specified header values under the given name. - *

If you need to set a single header value, you may invoke this - * method with an explicit one-element array — for example, - * header("key", new String[] { "value" }) — or you - * may choose to use {@link #headers(Consumer)} for greater control. + *

If you need to add header values, remove headers, etc., use + * {@link #headers(Consumer)} for greater control. * @param headerName the header name * @param headerValues the header values * @since 5.1.9 * @see #headers(Consumer) */ - default Builder header(String headerName, String... headerValues) { - return headers(httpHeaders -> httpHeaders.put(headerName, Arrays.asList(headerValues))); - } + Builder header(String headerName, String... headerValues); /** * Manipulate request headers. The provided {@code HttpHeaders} contains diff --git a/spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpRequestTests.java b/spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpRequestTests.java index 83bf3d8cba..c0f860c55b 100644 --- a/spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpRequestTests.java +++ b/spring-web/src/test/java/org/springframework/http/server/reactive/ServerHttpRequestTests.java @@ -126,27 +126,21 @@ public class ServerHttpRequestTests { } @Test - @SuppressWarnings("deprecation") - public void mutateHeaderByAddingHeaderValues() throws Exception { + public void mutateHeadersViaConsumer() throws Exception { String headerName = "key"; String headerValue1 = "value1"; String headerValue2 = "value2"; ServerHttpRequest request = createHttpRequest("/path"); - assertNull(request.getHeaders().get(headerName)); + assertThat(request.getHeaders().get(headerName)).isNull(); - request = request.mutate().header(headerName, headerValue1).build(); + request = request.mutate().headers(headers -> headers.add(headerName, headerValue1)).build(); - assertNotNull(request.getHeaders().get(headerName)); - assertEquals(1, request.getHeaders().get(headerName).size()); - assertEquals(headerValue1, request.getHeaders().get(headerName).get(0)); + assertThat(request.getHeaders().get(headerName)).containsExactly(headerValue1); - request = request.mutate().header(headerName, headerValue2).build(); + request = request.mutate().headers(headers -> headers.add(headerName, headerValue2)).build(); - assertNotNull(request.getHeaders().get(headerName)); - assertEquals(2, request.getHeaders().get(headerName).size()); - assertEquals(headerValue1, request.getHeaders().get(headerName).get(0)); - assertEquals(headerValue2, request.getHeaders().get(headerName).get(1)); + assertThat(request.getHeaders().get(headerName)).containsExactly(headerValue1, headerValue2); } @Test @@ -157,20 +151,15 @@ public class ServerHttpRequestTests { String headerValue3 = "value3"; ServerHttpRequest request = createHttpRequest("/path"); - assertNull(request.getHeaders().get(headerName)); + assertThat(request.getHeaders().get(headerName)).isNull(); request = request.mutate().header(headerName, headerValue1, headerValue2).build(); - assertNotNull(request.getHeaders().get(headerName)); - assertEquals(2, request.getHeaders().get(headerName).size()); - assertEquals(headerValue1, request.getHeaders().get(headerName).get(0)); - assertEquals(headerValue2, request.getHeaders().get(headerName).get(1)); + assertThat(request.getHeaders().get(headerName)).containsExactly(headerValue1, headerValue2); - request = request.mutate().header(headerName, new String[] { headerValue3 }).build(); + request = request.mutate().header(headerName, headerValue3).build(); - assertNotNull(request.getHeaders().get(headerName)); - assertEquals(1, request.getHeaders().get(headerName).size()); - assertEquals(headerValue3, request.getHeaders().get(headerName).get(0)); + assertThat(request.getHeaders().get(headerName)).containsExactly(headerValue3); } private ServerHttpRequest createHttpRequest(String uriString) throws Exception {