From f956d399aef9875ebbd63653c966aa7b53c54ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Deleuze?= Date: Mon, 22 May 2023 17:48:33 +0200 Subject: [PATCH] Upgrade to Kotlin Coroutines 1.7 Leverages Kotlin/kotlinx.coroutines#3487. Closes gh-30514 --- framework-platform/framework-platform.gradle | 2 +- .../interceptor/TransactionAspectSupport.java | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle index 863ba399e9..3164963ce0 100644 --- a/framework-platform/framework-platform.gradle +++ b/framework-platform/framework-platform.gradle @@ -16,7 +16,7 @@ dependencies { api(platform("org.apache.groovy:groovy-bom:4.0.11")) api(platform("org.apache.logging.log4j:log4j-bom:2.20.0")) api(platform("org.eclipse.jetty:jetty-bom:11.0.15")) - api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.4")) + api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.7.1")) api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.4.0")) api(platform("org.junit:junit-bom:5.9.3")) api(platform("org.mockito:mockito-bom:5.3.1")) diff --git a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java index cf8d02d528..c0a1805a60 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java +++ b/spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java @@ -26,8 +26,8 @@ import io.vavr.control.Try; import kotlin.coroutines.Continuation; import kotlin.coroutines.CoroutineContext; import kotlinx.coroutines.Job; -import kotlinx.coroutines.reactive.AwaitKt; import kotlinx.coroutines.reactive.ReactiveFlowKt; +import kotlinx.coroutines.reactor.MonoKt; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.reactivestreams.Publisher; @@ -372,9 +372,8 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init } Object result = txSupport.invokeWithinTransaction(method, targetClass, callback, txAttr, rtm); if (corInv != null) { - Publisher pr = (Publisher) result; - return (hasSuspendingFlowReturnType ? KotlinDelegate.asFlow(pr) : - KotlinDelegate.awaitSingleOrNull(pr, corInv.getContinuation())); + return (hasSuspendingFlowReturnType ? KotlinDelegate.asFlow((Publisher) result) : + KotlinDelegate.awaitSingleOrNull((Mono) result, corInv.getContinuation())); } return result; } @@ -901,10 +900,10 @@ public abstract class TransactionAspectSupport implements BeanFactoryAware, Init return ReactiveFlowKt.asFlow(publisher); } - @SuppressWarnings({"unchecked", "deprecation"}) + @SuppressWarnings("unchecked") @Nullable - private static Object awaitSingleOrNull(Publisher publisher, Object continuation) { - return AwaitKt.awaitSingleOrNull(publisher, (Continuation) continuation); + private static Object awaitSingleOrNull(Mono publisher, Object continuation) { + return MonoKt.awaitSingleOrNull(publisher, (Continuation) continuation); } public static Publisher invokeSuspendingFunction(Method method, CoroutinesInvocationCallback callback) {