#2424 Preserve using PersistenceException when transaction register(Callback) called with no active transaction

This commit is contained in:
Rob Bygrave
2021-10-21 12:06:45 +13:00
parent 4d34c9e868
commit fcda419abb
2 changed files with 7 additions and 3 deletions
@@ -691,7 +691,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
@Override
public void register(TransactionCallback transactionCallback) {
currentTransaction().register(transactionCallback);
Transaction transaction = currentTransaction();
if (transaction == null) {
throw new PersistenceException("Not currently active transaction when trying to register transactionCallback");
}
transaction.register(transactionCallback);
}
/**
@@ -72,12 +72,12 @@ public class TestTransactionCallback extends BaseTestCase {
@Test
public void test_noActiveTransaction() {
assertThrows(NullPointerException.class, () -> DB.register(new MyCallback()));
assertThrows(PersistenceException.class, () -> DB.register(new MyCallback()));
}
@Test
public void test_noActiveTransaction_withDatabase() {
assertThrows(NullPointerException.class, () -> DB.getDefault().register(new MyCallback()));
assertThrows(PersistenceException.class, () -> DB.getDefault().register(new MyCallback()));
}
class MyCallback extends TransactionCallbackAdapter {