diff --git a/spring-context-support/src/test/java/org/springframework/cache/jcache/JCacheEhCacheAnnotationTests.java b/spring-context-support/src/test/java/org/springframework/cache/jcache/JCacheEhCacheAnnotationTests.java index 748c4678fb51..1c0031854174 100644 --- a/spring-context-support/src/test/java/org/springframework/cache/jcache/JCacheEhCacheAnnotationTests.java +++ b/spring-context-support/src/test/java/org/springframework/cache/jcache/JCacheEhCacheAnnotationTests.java @@ -83,22 +83,22 @@ public void testCustomCacheManager() { @Test public void testEvictWithTransaction() { - txTemplate.execute(() -> testEvict(this.cs, false)); + txTemplate.executeWithoutResult(s -> testEvict(this.cs, false)); } @Test public void testEvictEarlyWithTransaction() { - txTemplate.execute(() -> testEvictEarly(this.cs)); + txTemplate.executeWithoutResult(s -> testEvictEarly(this.cs)); } @Test public void testEvictAllWithTransaction() { - txTemplate.execute(() -> testEvictAll(this.cs, false)); + txTemplate.executeWithoutResult(s -> testEvictAll(this.cs, false)); } @Test public void testEvictAllEarlyWithTransaction() { - txTemplate.execute(() -> testEvictAllEarly(this.cs)); + txTemplate.executeWithoutResult(s -> testEvictAllEarly(this.cs)); } diff --git a/spring-context-support/src/test/java/org/springframework/cache/transaction/TransactionAwareCacheDecoratorTests.java b/spring-context-support/src/test/java/org/springframework/cache/transaction/TransactionAwareCacheDecoratorTests.java index 40f745cee0f4..74337eb76e48 100644 --- a/spring-context-support/src/test/java/org/springframework/cache/transaction/TransactionAwareCacheDecoratorTests.java +++ b/spring-context-support/src/test/java/org/springframework/cache/transaction/TransactionAwareCacheDecoratorTests.java @@ -79,7 +79,7 @@ public void putTransactional() { Cache cache = new TransactionAwareCacheDecorator(target); Object key = new Object(); - txTemplate.execute(() -> { + txTemplate.executeWithoutResult(s -> { cache.put(key, "123"); assertThat(target.get(key)).isNull(); }); @@ -106,7 +106,7 @@ public void putIfAbsentTransactional() { // no transactional support for putIfA Cache cache = new TransactionAwareCacheDecorator(target); Object key = new Object(); - txTemplate.execute(() -> { + txTemplate.executeWithoutResult(s -> { assertThat(cache.putIfAbsent(key, "123")).isNull(); assertThat(target.get(key, String.class)).isEqualTo("123"); assertThat(cache.putIfAbsent(key, "456").get()).isEqualTo("123"); @@ -135,7 +135,7 @@ public void evictTransactional() { Object key = new Object(); cache.put(key, "123"); - txTemplate.execute(() -> { + txTemplate.executeWithoutResult(s -> { cache.evict(key); assertThat(target.get(key, String.class)).isEqualTo("123"); }); @@ -161,7 +161,7 @@ public void evictIfPresentTransactional() { // no transactional support for evi Object key = new Object(); cache.put(key, "123"); - txTemplate.execute(() -> { + txTemplate.executeWithoutResult(s -> { cache.evictIfPresent(key); assertThat(target.get(key)).isNull(); }); @@ -187,7 +187,7 @@ public void clearTransactional() { Object key = new Object(); cache.put(key, "123"); - txTemplate.execute(() -> { + txTemplate.executeWithoutResult(s -> { cache.clear(); assertThat(target.get(key, String.class)).isEqualTo("123"); }); @@ -213,7 +213,7 @@ public void invalidateTransactional() { // no transactional support for invalid Object key = new Object(); cache.put(key, "123"); - txTemplate.execute(() -> { + txTemplate.executeWithoutResult(s -> { cache.invalidate(); assertThat(target.get(key)).isNull(); }); diff --git a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java index 4093cd07a693..c2aaa34f2a88 100644 --- a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java @@ -260,7 +260,7 @@ private void executeSqlScripts( TransactionDefinition.PROPAGATION_REQUIRED); TransactionAttribute txAttr = TestContextTransactionUtils.createDelegatingTransactionAttribute( testContext, new DefaultTransactionAttribute(propagation)); - new TransactionTemplate(txMgr, txAttr).execute(() -> populator.execute(finalDataSource)); + new TransactionTemplate(txMgr, txAttr).executeWithoutResult(s -> populator.execute(finalDataSource)); } } diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionOperations.java b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionOperations.java index ffec5fb7083a..3ba6d3f2884d 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/TransactionOperations.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/TransactionOperations.java @@ -16,8 +16,11 @@ package org.springframework.transaction.support; +import java.util.function.Consumer; + import org.springframework.lang.Nullable; import org.springframework.transaction.TransactionException; +import org.springframework.transaction.TransactionStatus; /** * Interface specifying basic transaction execution operations. @@ -40,6 +43,7 @@ public interface TransactionOperations { * @return a result object returned by the callback, or {@code null} if none * @throws TransactionException in case of initialization, rollback, or system errors * @throws RuntimeException if thrown by the TransactionCallback + * @see #executeWithoutResult(Consumer) */ @Nullable T execute(TransactionCallback action) throws TransactionException; @@ -59,9 +63,9 @@ public interface TransactionOperations { * @see #execute(TransactionCallback) * @see TransactionCallbackWithoutResult */ - default void execute(Runnable action) throws TransactionException { + default void executeWithoutResult(Consumer action) throws TransactionException { execute(status -> { - action.run(); + action.accept(status); return null; }); } diff --git a/spring-tx/src/main/java/org/springframework/transaction/support/WithoutTransactionOperations.java b/spring-tx/src/main/java/org/springframework/transaction/support/WithoutTransactionOperations.java index a106f0f2503d..08a4e4cd43a6 100644 --- a/spring-tx/src/main/java/org/springframework/transaction/support/WithoutTransactionOperations.java +++ b/spring-tx/src/main/java/org/springframework/transaction/support/WithoutTransactionOperations.java @@ -16,8 +16,11 @@ package org.springframework.transaction.support; +import java.util.function.Consumer; + import org.springframework.lang.Nullable; import org.springframework.transaction.TransactionException; +import org.springframework.transaction.TransactionStatus; /** * A {@link TransactionOperations} implementation which executes a given @@ -43,8 +46,8 @@ public T execute(TransactionCallback action) throws TransactionException } @Override - public void execute(Runnable action) throws TransactionException { - action.run(); + public void executeWithoutResult(Consumer action) throws TransactionException { + action.accept(new SimpleTransactionStatus(false)); } }