Restore TransactionOperations Kotlin API compatibilty

This commit renames the Runnable variant to executeWithoutResult
and uses a Consumer<TransactionStatus> parameter for better
consistency with TransactionCallbackWithoutResult.

Closes gh-23724
This commit is contained in:
Sebastien Deleuze 2019-09-28 17:04:57 +02:00
parent 1e0bdc0337
commit b24ac74106
5 changed files with 22 additions and 15 deletions

View File

@ -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));
}

View File

@ -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();
});

View File

@ -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));
}
}

View File

@ -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> T execute(TransactionCallback<T> 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<TransactionStatus> action) throws TransactionException {
execute(status -> {
action.run();
action.accept(status);
return null;
});
}

View File

@ -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<TransactionStatus> action) throws TransactionException {
action.accept(new SimpleTransactionStatus(false));
}
}