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 748c4678fb5..1c003185417 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 class JCacheEhCacheAnnotationTests extends AbstractCacheAnnotationTests { @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 40f745cee0f..74337eb76e4 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 class TransactionAwareCacheDecoratorTests { 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 class TransactionAwareCacheDecoratorTests { 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 class TransactionAwareCacheDecoratorTests { 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 class TransactionAwareCacheDecoratorTests { 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 class TransactionAwareCacheDecoratorTests { 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 class TransactionAwareCacheDecoratorTests { 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 4093cd07a69..c2aaa34f2a8 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 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen 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 ffec5fb7083..3ba6d3f2884 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 a106f0f2503..08a4e4cd43a 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 @@ final class WithoutTransactionOperations implements TransactionOperations { } @Override - public void execute(Runnable action) throws TransactionException { - action.run(); + public void executeWithoutResult(Consumer action) throws TransactionException { + action.accept(new SimpleTransactionStatus(false)); } }