Upgrade to Coroutines 1.4.0-M1 and use awaitSingle()
This commit raises the minimum Coroutines version supported to 1.4.0-M1 and above, and changes usages of awaitFirst() or awaitFirstOrNull() to awaitSingle() or awaitSingleOrNull() to fix gh-25007. Closes gh-25914 Closes gh-25007
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.springframework.r2dbc.core
|
||||
|
||||
import kotlinx.coroutines.reactive.awaitFirstOrNull
|
||||
import kotlinx.coroutines.reactive.awaitSingleOrNull
|
||||
|
||||
/**
|
||||
* Coroutines variant of [DatabaseClient.GenericExecuteSpec.then].
|
||||
@@ -24,7 +24,7 @@ import kotlinx.coroutines.reactive.awaitFirstOrNull
|
||||
* @author Sebastien Deleuze
|
||||
*/
|
||||
suspend fun DatabaseClient.GenericExecuteSpec.await() {
|
||||
then().awaitFirstOrNull()
|
||||
then().awaitSingleOrNull()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ package org.springframework.r2dbc.core
|
||||
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.reactive.asFlow
|
||||
import kotlinx.coroutines.reactive.awaitFirstOrNull
|
||||
import kotlinx.coroutines.reactive.awaitSingleOrNull
|
||||
import org.springframework.dao.EmptyResultDataAccessException
|
||||
|
||||
/**
|
||||
@@ -26,7 +26,7 @@ import org.springframework.dao.EmptyResultDataAccessException
|
||||
* @author Sebastien Deleuze
|
||||
*/
|
||||
suspend fun <T> RowsFetchSpec<T>.awaitOne(): T {
|
||||
return one().awaitFirstOrNull() ?: throw EmptyResultDataAccessException(1)
|
||||
return one().awaitSingleOrNull() ?: throw EmptyResultDataAccessException(1)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -35,15 +35,15 @@ suspend fun <T> RowsFetchSpec<T>.awaitOne(): T {
|
||||
* @author Sebastien Deleuze
|
||||
*/
|
||||
suspend fun <T> RowsFetchSpec<T>.awaitOneOrNull(): T? =
|
||||
one().awaitFirstOrNull()
|
||||
one().awaitSingleOrNull()
|
||||
|
||||
/**
|
||||
* Non-nullable Coroutines variant of [RowsFetchSpec.first].
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
*/
|
||||
suspend fun <T> RowsFetchSpec<T>.awaitFirst(): T {
|
||||
return first().awaitFirstOrNull() ?: throw EmptyResultDataAccessException(1)
|
||||
suspend fun <T> RowsFetchSpec<T>.awaitSingle(): T {
|
||||
return first().awaitSingleOrNull() ?: throw EmptyResultDataAccessException(1)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,8 +51,8 @@ suspend fun <T> RowsFetchSpec<T>.awaitFirst(): T {
|
||||
*
|
||||
* @author Sebastien Deleuze
|
||||
*/
|
||||
suspend fun <T> RowsFetchSpec<T>.awaitFirstOrNull(): T? =
|
||||
first().awaitFirstOrNull()
|
||||
suspend fun <T> RowsFetchSpec<T>.awaitSingleOrNull(): T? =
|
||||
first().awaitSingleOrNull()
|
||||
|
||||
/**
|
||||
* Coroutines [Flow] variant of [RowsFetchSpec.all].
|
||||
|
||||
@@ -98,7 +98,7 @@ class RowsFetchSpecExtensionsTests {
|
||||
every { spec.first() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
assertThat(spec.awaitFirst()).isEqualTo("foo")
|
||||
assertThat(spec.awaitSingle()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
@@ -112,7 +112,7 @@ class RowsFetchSpecExtensionsTests {
|
||||
every { spec.first() } returns Mono.empty()
|
||||
|
||||
assertThatExceptionOfType(EmptyResultDataAccessException::class.java).isThrownBy {
|
||||
runBlocking { spec.awaitFirst() }
|
||||
runBlocking { spec.awaitSingle() }
|
||||
}
|
||||
|
||||
verify {
|
||||
@@ -121,12 +121,12 @@ class RowsFetchSpecExtensionsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun awaitFirstOrNullWithValue() {
|
||||
fun awaitSingleOrNullWithValue() {
|
||||
val spec = mockk<RowsFetchSpec<String>>()
|
||||
every { spec.first() } returns Mono.just("foo")
|
||||
|
||||
runBlocking {
|
||||
assertThat(spec.awaitFirstOrNull()).isEqualTo("foo")
|
||||
assertThat(spec.awaitSingleOrNull()).isEqualTo("foo")
|
||||
}
|
||||
|
||||
verify {
|
||||
@@ -135,12 +135,12 @@ class RowsFetchSpecExtensionsTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
fun awaitFirstOrNullWithNull() {
|
||||
fun awaitSingleOrNullWithNull() {
|
||||
val spec = mockk<RowsFetchSpec<String>>()
|
||||
every { spec.first() } returns Mono.empty()
|
||||
|
||||
runBlocking {
|
||||
assertThat(spec.awaitFirstOrNull()).isNull()
|
||||
assertThat(spec.awaitSingleOrNull()).isNull()
|
||||
}
|
||||
|
||||
verify {
|
||||
|
||||
Reference in New Issue
Block a user