diff --git a/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionDefaultScopeIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionDefaultScopeIntegrationTests.java index 9cf350e04..414d425d0 100644 --- a/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionDefaultScopeIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionDefaultScopeIntegrationTests.java @@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.fail; import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertNotInTransaction; +import static org.springframework.data.couchbase.util.Util.assertInAnnotationTransaction; import java.util.ArrayList; import java.util.List; @@ -483,20 +484,4 @@ public void fetchAndRemove(String id, AtomicInteger tryCount) { } - static void assertInAnnotationTransaction(boolean inTransaction) { - StackTraceElement[] stack = Thread.currentThread().getStackTrace(); - for (StackTraceElement ste : stack) { - if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")) { - if (inTransaction) { - return; - } - } - } - if (!inTransaction) { - return; - } - throw new RuntimeException( - "in transaction = " + (!inTransaction) + " but expected in annotation transaction = " + inTransaction); - } - } diff --git a/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionIntegrationTests.java index e0ccbd22b..789e63b45 100644 --- a/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateCollectionIntegrationTests.java @@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.fail; import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertNotInTransaction; +import static org.springframework.data.couchbase.util.Util.assertInAnnotationTransaction; import java.util.ArrayList; import java.util.List; @@ -450,10 +451,10 @@ public Person declarativeFindReplaceTwicePersonCallback(Person person, AtomicInt } @Transactional(timeout = 2) - public Person replace(Person person, AtomicInteger tryCount) { assertInAnnotationTransaction(true); tryCount.incrementAndGet(); + System.err.println("try: " + tryCount.get()); return personOperations.replaceById(Person.class).inScope(scopeName).inCollection(collectionName).one(person); } @@ -483,20 +484,4 @@ public void fetchAndRemove(String id, AtomicInteger tryCount) { } - static void assertInAnnotationTransaction(boolean inTransaction) { - StackTraceElement[] stack = Thread.currentThread().getStackTrace(); - for (StackTraceElement ste : stack) { - if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")) { - if (inTransaction) { - return; - } - } - } - if (!inTransaction) { - return; - } - throw new RuntimeException( - "in transaction = " + (!inTransaction) + " but expected in annotation transaction = " + inTransaction); - } - } diff --git a/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateIntegrationTests.java b/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateIntegrationTests.java index d65c60500..214b32e7c 100644 --- a/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateIntegrationTests.java +++ b/src/test/java/org/springframework/data/couchbase/transactions/CouchbaseTransactionalTemplateIntegrationTests.java @@ -22,7 +22,9 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.fail; +import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertInReactiveTransaction; import static org.springframework.data.couchbase.transactions.util.TransactionTestUtil.assertNotInTransaction; +import static org.springframework.data.couchbase.util.Util.assertInAnnotationTransaction; import java.util.ArrayList; import java.util.List; @@ -394,6 +396,7 @@ public Person declarativeSavePerson(Person person) { @Transactional public Person declarativeSavePersonWithThread(Person person, Thread thread) { assertInAnnotationTransaction(true); + assertInReactiveTransaction(); long currentThreadId = Thread.currentThread().getId(); System.out.printf("Thread %d %s, started from %d %s%n", Thread.currentThread().getId(), Thread.currentThread().getName(), thread.getId(), thread.getName()); @@ -483,20 +486,4 @@ public void fetchAndRemove(String id, AtomicInteger tryCount) { } - static void assertInAnnotationTransaction(boolean inTransaction) { - StackTraceElement[] stack = Thread.currentThread().getStackTrace(); - for (StackTraceElement ste : stack) { - if (ste.getClassName().startsWith("org.springframework.transaction.interceptor")) { - if (inTransaction) { - return; - } - } - } - if (!inTransaction) { - return; - } - throw new RuntimeException( - "in transaction = " + (!inTransaction) + " but expected in annotation transaction = " + inTransaction); - } - } diff --git a/src/test/java/org/springframework/data/couchbase/util/Util.java b/src/test/java/org/springframework/data/couchbase/util/Util.java index e54581fa9..dc7aa106b 100644 --- a/src/test/java/org/springframework/data/couchbase/util/Util.java +++ b/src/test/java/org/springframework/data/couchbase/util/Util.java @@ -155,7 +155,8 @@ public static Pair, List> comprisesNot(Iterable source, T[] al public static void assertInAnnotationTransaction(boolean inTransaction) { StackTraceElement[] stack = Thread.currentThread().getStackTrace(); for (StackTraceElement ste : stack) { - if (ste.getClassName().startsWith("org.springframework.transaction.interceptor") + if (ste.getClassName() + .startsWith("org.springframework.data.couchbase.transaction.CouchbaseCallbackTransactionManager") || ste.getClassName().startsWith("org.springframework.data.couchbase.transaction.interceptor")) { if (inTransaction) { return;