package com.revolsys.transaction;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
public class TransactionRunnable implements Runnable {
private final Runnable runnable;
private final TransactionDefinition transactionDefinition;
private final PlatformTransactionManager transactionManager;
public TransactionRunnable(final PlatformTransactionManager transactionManager,
final TransactionDefinition transactionDefinition, final Runnable runnable) {
this.transactionManager = transactionManager;
this.transactionDefinition = transactionDefinition;
this.runnable = runnable;
}
@Override
public void run() {
try (
Transaction transaction = new Transaction(this.transactionManager,
this.transactionDefinition)) {
try {
this.runnable.run();
} catch (final Throwable e) {
throw transaction.setRollbackOnly(e);
}
}
}
}