From 913eca9e141b9c58c2c175dc822ceab624a96f0b Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 20 Jul 2020 17:52:29 +0300 Subject: [PATCH] ReactorNettyRequestUpgradeStrategy uses unique builder per request See gh-25315 --- .../ReactorNettyRequestUpgradeStrategy.java | 4 +- ...actorNettyRequestUpgradeStrategyTests.java | 39 +++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 spring-webflux/src/test/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategyTests.java diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java index 827d649429c2..9a27dc8970e7 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategy.java @@ -57,7 +57,7 @@ public class ReactorNettyRequestUpgradeStrategy implements RequestUpgradeStrateg * @since 5.2.6 */ public ReactorNettyRequestUpgradeStrategy() { - this(WebsocketServerSpec.builder()); + this(WebsocketServerSpec::builder); } @@ -83,7 +83,7 @@ public WebsocketServerSpec getWebsocketServerSpec() { return buildSpec(null); } - private WebsocketServerSpec buildSpec(@Nullable String subProtocol) { + WebsocketServerSpec buildSpec(@Nullable String subProtocol) { WebsocketServerSpec.Builder builder = this.specBuilderSupplier.get(); if (subProtocol != null) { builder.protocols(subProtocol); diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategyTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategyTests.java new file mode 100644 index 000000000000..409dc06b20d1 --- /dev/null +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/socket/server/upgrade/ReactorNettyRequestUpgradeStrategyTests.java @@ -0,0 +1,39 @@ +/* + * Copyright 2002-2020 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 + * + * https://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.web.reactive.socket.server.upgrade; + +import org.junit.jupiter.api.Test; +import reactor.netty.http.server.WebsocketServerSpec; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +/** + * Unit tests for {@link ReactorNettyRequestUpgradeStrategy}. + * @author Rossen Stoyanchev + */ +public class ReactorNettyRequestUpgradeStrategyTests { + + @Test // gh-25315 + void defaultWebSocketSpecBuilderIsUniquePerRequest() { + ReactorNettyRequestUpgradeStrategy strategy = new ReactorNettyRequestUpgradeStrategy(); + WebsocketServerSpec spec1 = strategy.buildSpec("p1"); + WebsocketServerSpec spec2 = strategy.getWebsocketServerSpec(); + + assertThat(spec1.protocols()).isEqualTo("p1"); + assertThat(spec2.protocols()).isNull(); + } + +}