Skip to content

Commit

Permalink
Restore TransactionOperations Kotlin API compatibilty
Browse files Browse the repository at this point in the history
This commit renames the Runnable variant to executeWithoutResult
and uses a Consumer<TransactionStatus> parameter for better
consistency with TransactionCallbackWithoutResult.

Closes gh-23724
  • Loading branch information
sdeleuze committed Sep 29, 2019
1 parent 1e0bdc0 commit b24ac74
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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();
});
Expand All @@ -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");
Expand Down Expand Up @@ -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");
});
Expand All @@ -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();
});
Expand All @@ -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");
});
Expand All @@ -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();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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;
Expand All @@ -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;
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -43,8 +46,8 @@ public <T> T execute(TransactionCallback<T> action) throws TransactionException
}

@Override
public void execute(Runnable action) throws TransactionException {
action.run();
public void executeWithoutResult(Consumer<TransactionStatus> action) throws TransactionException {
action.accept(new SimpleTransactionStatus(false));
}

}

0 comments on commit b24ac74

Please sign in to comment.