From bc07a451dc5ff7dd9ea7a8be88c412273de05989 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Mon, 16 Mar 2026 11:12:06 +0100 Subject: [PATCH] Fix ParameterizedTypeReference nullness This commit ensures that `ParameterizedTypeReference` can accept nullable types. This is especially useful for Kotlin extension functions and assertion contracts. Fixes gh-36477 --- .../core/ParameterizedTypeReference.java | 2 +- .../rsocket/RSocketRequesterExtensionsTests.kt | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/ParameterizedTypeReference.java b/spring-core/src/main/java/org/springframework/core/ParameterizedTypeReference.java index 0191deae128..1953bddc3b9 100644 --- a/spring-core/src/main/java/org/springframework/core/ParameterizedTypeReference.java +++ b/spring-core/src/main/java/org/springframework/core/ParameterizedTypeReference.java @@ -42,7 +42,7 @@ import org.springframework.util.Assert; * @param the referenced type * @see Neal Gafter on Super Type Tokens */ -public abstract class ParameterizedTypeReference { +public abstract class ParameterizedTypeReference { private final Type type; diff --git a/spring-messaging/src/test/kotlin/org/springframework/messaging/rsocket/RSocketRequesterExtensionsTests.kt b/spring-messaging/src/test/kotlin/org/springframework/messaging/rsocket/RSocketRequesterExtensionsTests.kt index 49940f57044..1ab94cddf0e 100644 --- a/spring-messaging/src/test/kotlin/org/springframework/messaging/rsocket/RSocketRequesterExtensionsTests.kt +++ b/spring-messaging/src/test/kotlin/org/springframework/messaging/rsocket/RSocketRequesterExtensionsTests.kt @@ -107,35 +107,35 @@ class RSocketRequesterExtensionsTests { suspend fun retrieveAndAwait() { val response = "foo" val retrieveSpec = mockk() - every { retrieveSpec.retrieveMono(match>(stringTypeRefMatcher)) } returns Mono.just("foo") + every { retrieveSpec.retrieveMono(match>(stringTypeRefMatcher)) } returns Mono.just("foo") assertThat(retrieveSpec.retrieveAndAwait()).isEqualTo(response) } @Test suspend fun retrieveAndAwaitOrNull() { val retrieveSpec = mockk() - every { retrieveSpec.retrieveMono(match>(stringTypeRefMatcher)) } returns Mono.empty() + every { retrieveSpec.retrieveMono(match>(stringTypeRefMatcher)) } returns Mono.empty() assertThat(retrieveSpec.retrieveAndAwaitOrNull()).isNull() } @Test suspend fun retrieveFlow() { val retrieveSpec = mockk() - every { retrieveSpec.retrieveFlux(match>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar") + every { retrieveSpec.retrieveFlux(match>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar") assertThat(retrieveSpec.retrieveFlow().toList()).contains("foo", "bar") } @Test fun retrieveMono() { val retrieveSpec = mockk() - every { retrieveSpec.retrieveMono(match>(stringTypeRefMatcher)) } returns Mono.just("foo") + every { retrieveSpec.retrieveMono(match>(stringTypeRefMatcher)) } returns Mono.just("foo") assertThat(retrieveSpec.retrieveMono().block()).isEqualTo("foo") } @Test fun retrieveFlux() { val retrieveSpec = mockk() - every { retrieveSpec.retrieveFlux(match>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar") + every { retrieveSpec.retrieveFlux(match>(stringTypeRefMatcher)) } returns Flux.just("foo", "bar") assertThat(retrieveSpec.retrieveFlux().collectList().block()).contains("foo", "bar") } }