From e834a3a80c7df51219363ba3b33015aed8d3ae10 Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Fri, 19 Sep 2025 16:31:54 -0700 Subject: [PATCH] Nullability fixes for AtomicReference variables Closes gh-35514 Signed-off-by: Manu Sridharan --- .../core/io/buffer/OutputStreamPublisher.java | 2 +- .../core/io/buffer/SubscriberInputStream.java | 2 +- .../r2dbc/connection/SingleConnectionFactory.java | 2 +- .../springframework/test/web/servlet/DefaultMvcResult.java | 2 +- .../springframework/http/client/OutputStreamPublisher.java | 2 +- .../http/client/ReactorClientHttpRequest.java | 5 +++-- .../springframework/http/client/SubscriberInputStream.java | 2 +- .../servlet/mvc/method/annotation/ReactiveTypeHandler.java | 2 +- 8 files changed, 10 insertions(+), 9 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java b/spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java index 62b852637a..0d6341e26d 100644 --- a/spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java +++ b/spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java @@ -137,7 +137,7 @@ final class OutputStreamPublisher implements Publisher { private final AtomicLong requested = new AtomicLong(); - private final AtomicReference parkedThread = new AtomicReference<>(); + private final AtomicReference<@Nullable Object> parkedThread = new AtomicReference<>(); private volatile @Nullable Throwable error; diff --git a/spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java b/spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java index 479ec41fc5..df9e3bb399 100644 --- a/spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java +++ b/spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java @@ -72,7 +72,7 @@ final class SubscriberInputStream extends InputStream implements Subscriber queue; - private final AtomicReference parkedThread = new AtomicReference<>(); + private final AtomicReference<@Nullable Object> parkedThread = new AtomicReference<>(); private final AtomicInteger workAmount = new AtomicInteger(); diff --git a/spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/SingleConnectionFactory.java b/spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/SingleConnectionFactory.java index 5e079928ac..5254852ead 100644 --- a/spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/SingleConnectionFactory.java +++ b/spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/SingleConnectionFactory.java @@ -73,7 +73,7 @@ public class SingleConnectionFactory extends DelegatingConnectionFactory private @Nullable Boolean autoCommit; /** Wrapped Connection. */ - private final AtomicReference target = new AtomicReference<>(); + private final AtomicReference<@Nullable Connection> target = new AtomicReference<>(); /** Proxy Connection. */ private @Nullable Connection connection; diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java b/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java index 2b586b27bd..f39a6fe012 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/DefaultMvcResult.java @@ -54,7 +54,7 @@ class DefaultMvcResult implements MvcResult { private @Nullable Exception resolvedException; - private final AtomicReference asyncResult = new AtomicReference<>(RESULT_NONE); + private final AtomicReference<@Nullable Object> asyncResult = new AtomicReference<>(RESULT_NONE); private @Nullable CountDownLatch asyncDispatchLatch; diff --git a/spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java b/spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java index cda0e099c8..710c61cf3f 100644 --- a/spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java +++ b/spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java @@ -135,7 +135,7 @@ final class OutputStreamPublisher implements Flow.Publisher { private final AtomicLong requested = new AtomicLong(); - private final AtomicReference parkedThread = new AtomicReference<>(); + private final AtomicReference<@Nullable Object> parkedThread = new AtomicReference<>(); private volatile @Nullable Throwable error; diff --git a/spring-web/src/main/java/org/springframework/http/client/ReactorClientHttpRequest.java b/spring-web/src/main/java/org/springframework/http/client/ReactorClientHttpRequest.java index 1967d07dd6..73f1ed5a59 100644 --- a/spring-web/src/main/java/org/springframework/http/client/ReactorClientHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/client/ReactorClientHttpRequest.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.UncheckedIOException; import java.net.URI; import java.time.Duration; +import java.util.Objects; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicReference; @@ -131,13 +132,13 @@ final class ReactorClientHttpRequest extends AbstractStreamingClientHttpRequest return Mono.empty(); } - AtomicReference executorRef = new AtomicReference<>(); + AtomicReference<@Nullable Executor> executorRef = new AtomicReference<>(); return outbound .withConnection(connection -> executorRef.set(connection.channel().eventLoop())) .send(FlowAdapters.toPublisher(new OutputStreamPublisher<>( os -> body.writeTo(StreamUtils.nonClosing(os)), new ByteBufMapper(outbound), - executorRef.getAndSet(null), null))); + Objects.requireNonNull(executorRef.getAndSet(null)), null))); } static IOException convertException(RuntimeException ex) { diff --git a/spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java b/spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java index df57638d0a..e5e6ac4c17 100644 --- a/spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java +++ b/spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java @@ -81,7 +81,7 @@ final class SubscriberInputStream extends InputStream implements Flow.Subscri private final Queue queue; - private final AtomicReference parkedThread = new AtomicReference<>(); + private final AtomicReference<@Nullable Object> parkedThread = new AtomicReference<>(); private final AtomicInteger workAmount = new AtomicInteger(); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java index 856b88a55c..1894fb0fe4 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java @@ -256,7 +256,7 @@ class ReactiveTypeHandler { private @Nullable Subscription subscription; - private final AtomicReference elementRef = new AtomicReference<>(); + private final AtomicReference<@Nullable Object> elementRef = new AtomicReference<>(); private @Nullable Throwable error;