From 7b9848a352b0403d59fdeabeb6dc6e4ee043c1a6 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 5 Oct 2021 14:32:46 +0100 Subject: [PATCH] Replace deprecated Reactor Context related methods --- .../reactive/TransactionContextManager.java | 6 ++--- ...bstractReactiveTransactionAspectTests.java | 16 +++++++----- .../ReactiveTransactionSupportTests.java | 26 +++++++++---------- ...bstractCoroutinesTransactionAspectTests.kt | 19 +++++++------- 4 files changed, 35 insertions(+), 32 deletions(-) diff --git a/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java b/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java index 0a2cdda01a8..db6f4fb414c 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java +++ b/spring-tx/src/main/java/org/springframework/transaction/reactive/TransactionContextManager.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -68,8 +68,8 @@ public abstract class TransactionContextManager { * Create a {@link TransactionContext} and register it in the subscriber {@link Context}. * @return functional context registration. * @throws IllegalStateException if a transaction context is already associated. - * @see Mono#subscriberContext(Function) - * @see Flux#subscriberContext(Function) + * @see Mono#contextWrite(Function) + * @see Flux#contextWrite(Function) */ public static Function createTransactionContext() { return context -> context.put(TransactionContext.class, new TransactionContext()); diff --git a/spring-tx/src/test/java/org/springframework/transaction/interceptor/AbstractReactiveTransactionAspectTests.java b/spring-tx/src/test/java/org/springframework/transaction/interceptor/AbstractReactiveTransactionAspectTests.java index 6755d5df16a..54f9b8eaa71 100644 --- a/spring-tx/src/test/java/org/springframework/transaction/interceptor/AbstractReactiveTransactionAspectTests.java +++ b/spring-tx/src/test/java/org/springframework/transaction/interceptor/AbstractReactiveTransactionAspectTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -350,12 +350,14 @@ public abstract class AbstractReactiveTransactionAspectTests { } private void checkReactiveTransaction(boolean expected) { - Mono.subscriberContext().handle((context, sink) -> { - if (context.hasKey(TransactionContext.class) != expected) { - fail("Should have thrown NoTransactionException"); - } - sink.complete(); - }).block(); + Mono.deferContextual(Mono::just) + .handle((context, sink) -> { + if (context.hasKey(TransactionContext.class) != expected) { + fail("Should have thrown NoTransactionException"); + } + sink.complete(); + }) + .block(); } diff --git a/spring-tx/src/test/java/org/springframework/transaction/reactive/ReactiveTransactionSupportTests.java b/spring-tx/src/test/java/org/springframework/transaction/reactive/ReactiveTransactionSupportTests.java index b67f5bf8a4a..4912c96226a 100644 --- a/spring-tx/src/test/java/org/springframework/transaction/reactive/ReactiveTransactionSupportTests.java +++ b/spring-tx/src/test/java/org/springframework/transaction/reactive/ReactiveTransactionSupportTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 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. @@ -41,19 +41,19 @@ public class ReactiveTransactionSupportTests { ReactiveTransactionManager tm = new ReactiveTestTransactionManager(false, true); tm.getReactiveTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_SUPPORTS)) - .subscriberContext(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) + .contextWrite(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) .as(StepVerifier::create).consumeNextWith(actual -> assertThat(actual.hasTransaction()).isFalse() ).verifyComplete(); tm.getReactiveTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED)) - .cast(GenericReactiveTransaction.class).subscriberContext(TransactionContextManager.createTransactionContext()) + .cast(GenericReactiveTransaction.class).contextWrite(TransactionContextManager.createTransactionContext()) .as(StepVerifier::create).consumeNextWith(actual -> { assertThat(actual.hasTransaction()).isTrue(); assertThat(actual.isNewTransaction()).isTrue(); }).verifyComplete(); tm.getReactiveTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_MANDATORY)) - .subscriberContext(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) + .contextWrite(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) .as(StepVerifier::create).expectError(IllegalTransactionStateException.class).verify(); } @@ -62,21 +62,21 @@ public class ReactiveTransactionSupportTests { ReactiveTransactionManager tm = new ReactiveTestTransactionManager(true, true); tm.getReactiveTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_SUPPORTS)) - .subscriberContext(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) + .contextWrite(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) .as(StepVerifier::create).consumeNextWith(actual -> { assertThat(actual.getTransaction()).isNotNull(); assertThat(actual.isNewTransaction()).isFalse(); }).verifyComplete(); tm.getReactiveTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED)) - .subscriberContext(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) + .contextWrite(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) .as(StepVerifier::create).consumeNextWith(actual -> { assertThat(actual.getTransaction()).isNotNull(); assertThat(actual.isNewTransaction()).isFalse(); }).verifyComplete(); tm.getReactiveTransaction(new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_MANDATORY)) - .subscriberContext(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) + .contextWrite(TransactionContextManager.createTransactionContext()).cast(GenericReactiveTransaction.class) .as(StepVerifier::create).consumeNextWith(actual -> { assertThat(actual.getTransaction()).isNotNull(); assertThat(actual.isNewTransaction()).isFalse(); @@ -87,7 +87,7 @@ public class ReactiveTransactionSupportTests { public void commitWithoutExistingTransaction() { ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(false, true); tm.getReactiveTransaction(new DefaultTransactionDefinition()).flatMap(tm::commit) - .subscriberContext(TransactionContextManager.createTransactionContext()) + .contextWrite(TransactionContextManager.createTransactionContext()) .as(StepVerifier::create).verifyComplete(); assertHasBegan(tm); @@ -101,7 +101,7 @@ public class ReactiveTransactionSupportTests { public void rollbackWithoutExistingTransaction() { ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(false, true); tm.getReactiveTransaction(new DefaultTransactionDefinition()).flatMap(tm::rollback) - .subscriberContext(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) + .contextWrite(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) .verifyComplete(); assertHasBegan(tm); @@ -116,7 +116,7 @@ public class ReactiveTransactionSupportTests { ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(false, true); tm.getReactiveTransaction(new DefaultTransactionDefinition()).doOnNext(ReactiveTransaction::setRollbackOnly) .flatMap(tm::commit) - .subscriberContext(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) + .contextWrite(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) .verifyComplete(); assertHasBegan(tm); @@ -130,7 +130,7 @@ public class ReactiveTransactionSupportTests { public void commitWithExistingTransaction() { ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(true, true); tm.getReactiveTransaction(new DefaultTransactionDefinition()).flatMap(tm::commit) - .subscriberContext(TransactionContextManager.createTransactionContext()) + .contextWrite(TransactionContextManager.createTransactionContext()) .as(StepVerifier::create).verifyComplete(); assertHasNotBegan(tm); @@ -144,7 +144,7 @@ public class ReactiveTransactionSupportTests { public void rollbackWithExistingTransaction() { ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(true, true); tm.getReactiveTransaction(new DefaultTransactionDefinition()).flatMap(tm::rollback) - .subscriberContext(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) + .contextWrite(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) .verifyComplete(); assertHasNotBegan(tm); @@ -158,7 +158,7 @@ public class ReactiveTransactionSupportTests { public void rollbackOnlyWithExistingTransaction() { ReactiveTestTransactionManager tm = new ReactiveTestTransactionManager(true, true); tm.getReactiveTransaction(new DefaultTransactionDefinition()).doOnNext(ReactiveTransaction::setRollbackOnly).flatMap(tm::commit) - .subscriberContext(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) + .contextWrite(TransactionContextManager.createTransactionContext()).as(StepVerifier::create) .verifyComplete(); assertHasNotBegan(tm); diff --git a/spring-tx/src/test/kotlin/org/springframework/transaction/interceptor/AbstractCoroutinesTransactionAspectTests.kt b/spring-tx/src/test/kotlin/org/springframework/transaction/interceptor/AbstractCoroutinesTransactionAspectTests.kt index bf437fb430f..e620ccf4de7 100644 --- a/spring-tx/src/test/kotlin/org/springframework/transaction/interceptor/AbstractCoroutinesTransactionAspectTests.kt +++ b/spring-tx/src/test/kotlin/org/springframework/transaction/interceptor/AbstractCoroutinesTransactionAspectTests.kt @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 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. @@ -28,7 +28,7 @@ import org.springframework.transaction.* import org.springframework.transaction.reactive.TransactionContext import reactor.core.publisher.Mono import reactor.core.publisher.SynchronousSink -import reactor.util.context.Context +import reactor.util.context.ContextView import java.lang.reflect.Method import kotlin.coroutines.Continuation @@ -299,14 +299,15 @@ abstract class AbstractCoroutinesTransactionAspectTests { } } - @Suppress("DEPRECATION") private fun checkReactiveTransaction(expected: Boolean) { - Mono.subscriberContext().handle { context: Context, sink: SynchronousSink -> - if (context.hasKey(TransactionContext::class.java) != expected) { - Fail.fail("Should have thrown NoTransactionException") - } - sink.complete() - }.block() + Mono.deferContextual{context -> Mono.just(context)} + .handle { context: ContextView, sink: SynchronousSink -> + if (context.hasKey(TransactionContext::class.java) != expected) { + Fail.fail("Should have thrown NoTransactionException") + } + sink.complete() + } + .block() } protected open fun advised(target: Any, rtm: ReactiveTransactionManager, tas: Array): Any {