FIX: possible resource leaking in testcases (all created transactions are closed by followed try statement) (#1273)

This commit is contained in:
Roland Praml
2018-02-26 08:40:53 +13:00
committed by Rob Bygrave
parent 8e9843ab8a
commit e3425a8850
23 changed files with 278 additions and 265 deletions
@@ -60,8 +60,8 @@ public class EbeanServer_saveAllTest extends BaseTestCase {
EbeanServer server = Ebean.getDefaultServer();
Transaction transaction = server.beginTransaction();
transaction.setBatch(PersistBatch.ALL);
try {
transaction.setBatch(PersistBatch.ALL);
LoggedSqlCollector.start();
for (EBasicVer bean : beans(2)) {
@@ -49,7 +49,6 @@ public class TestQueryForUpdate extends BaseTestCase {
ResetBasicData.reset();
Ebean.beginTransaction();
try {
Query<Customer> query = Ebean.find(Customer.class)
.forUpdateNoWait()
@@ -32,13 +32,12 @@ public class TestBatchInsertFlush extends BaseTestCase {
MetaInfoManager metaInfoManager = server.getMetaInfoManager();
metaInfoManager.collectTransactionStatistics(true);
Transaction transaction = server.beginTransaction()
.setPersistCascade(false)
.setBatchSize(10)
.setBatch(PersistBatch.ALL)
.setLabel("TestBatchInsertFlush.no_cascade");
Transaction transaction = server.beginTransaction();
try {
transaction.setPersistCascade(false)
.setBatchSize(10)
.setBatch(PersistBatch.ALL)
.setLabel("TestBatchInsertFlush.no_cascade");
LoggedSqlCollector.start();
@@ -128,12 +128,11 @@ public class TestBatchInsertSimple extends BaseTestCase {
masters.add(createMasterAndDetails(i, 7));
}
Transaction transaction = Ebean.beginTransaction()
.setBatch(PersistBatch.NONE)
.setBatchOnCascade(PersistBatch.ALL)
.setBatchSize(20);
Transaction transaction = Ebean.beginTransaction();
try {
transaction.setBatch(PersistBatch.NONE)
.setBatchOnCascade(PersistBatch.ALL)
.setBatchSize(20);
// escalate based on batchOnCascade value
Ebean.saveAll(masters);
@@ -82,10 +82,10 @@ public class TestBatchOnCascadeExceptionHandling extends BaseTestCase {
protected void testBatchOnCascadeIsExceptionSafe(EbeanServer server, Runnable failingOperation) {
Transaction txn = server.beginTransaction();
assertThat(txn.getBatch()).isSameAs(PersistBatch.NONE);
assertThat(txn.getBatchOnCascade()).isSameAs(PersistBatch.ALL);
try {
assertThat(txn.getBatch()).isSameAs(PersistBatch.NONE);
assertThat(txn.getBatchOnCascade()).isSameAs(PersistBatch.ALL);
failingOperation.run();
Assertions.fail("PersistenceException expected");
} catch (PersistenceException e) {
+32 -31
View File
@@ -16,50 +16,51 @@ public class TestL2DirtyFlagOnLazyLoad extends BaseTestCase {
@Test
public void dirtyFlag_reset_after_lazy() {
//PREPARE
Transaction tx0 = Ebean.beginTransaction();
L2CachedLazyDirtFlagResetBean bean = new L2CachedLazyDirtFlagResetBean();
bean.setName("findById");
Ebean.save(bean);
//bean.save();
tx0.commit();
//PREPARE
try (Transaction tx0 = Ebean.beginTransaction()) {
bean.setName("findById");
Ebean.save(bean);
//bean.save();
tx0.commit();
}
// clearAll() caches via the ServerCacheManager ...
// Clear all the caches on the default/primary EbeanServer
server().getServerCacheManager().clearAll();
//TEST
Transaction tx1 = Ebean.beginTransaction();
// load (and dont touch any related entity)
L2CachedLazyDirtFlagResetBean bean1 = Ebean.find(L2CachedLazyDirtFlagResetBean.class, bean.getId());
assertThat(bean1).isNotNull();
tx1.commit();
try (Transaction tx1 = Ebean.beginTransaction()) {
// load (and dont touch any related entity)
L2CachedLazyDirtFlagResetBean bean1 = Ebean.find(L2CachedLazyDirtFlagResetBean.class, bean.getId());
assertThat(bean1).isNotNull();
tx1.commit();
}
try (Transaction tx2 = Ebean.beginTransaction()) {
// load (and modify)
Transaction tx2 = Ebean.beginTransaction();
// load (and modify)
L2CachedLazyDirtFlagResetBean bean2 = Ebean.find(L2CachedLazyDirtFlagResetBean.class, bean.getId());
assertNotNull(bean2);
assertEquals("findById", bean2.getName());
bean2.setName("something");
BeanState beanState = Ebean.getBeanState(bean2);
assertTrue(beanState.isDirty());
//bean2.getChildren().size();
bean2.someRichObjectMethod();
assertTrue(beanState.isDirty());
L2CachedLazyDirtFlagResetBean bean2 = Ebean.find(L2CachedLazyDirtFlagResetBean.class, bean.getId());
assertNotNull(bean2);
assertEquals("findById", bean2.getName());
bean2.setName("something");
BeanState beanState = Ebean.getBeanState(bean2);
assertTrue(beanState.isDirty());
//bean2.getChildren().size();
bean2.someRichObjectMethod();
assertTrue(beanState.isDirty());
Ebean.update(bean2);
tx2.commit();
}
Ebean.update(bean2);
tx2.commit();
try(Transaction tx3 = Ebean.beginTransaction()) {
// validation
Transaction tx3 = Ebean.beginTransaction();
// validation
L2CachedLazyDirtFlagResetBean bean3 = Ebean.find(L2CachedLazyDirtFlagResetBean.class, bean.getId());
assertEquals("something", bean3.getName());
L2CachedLazyDirtFlagResetBean bean3 = Ebean.find(L2CachedLazyDirtFlagResetBean.class, bean.getId());
assertEquals("something", bean3.getName());
tx3.rollback();
}
}
}
@@ -37,72 +37,72 @@ public class TestCore extends BaseTestCase {
Ebean.createUpdate(Type.class, "delete from Type").execute();
Ebean.createUpdate(SubType.class, "delete from SubType").execute();
Transaction tx = server().beginTransaction();
try (Transaction tx = server().beginTransaction()) {
SubType subType = new SubType();
SubTypeKey subTypeKey = new SubTypeKey();
subTypeKey.setSubTypeId(1);
subType.setKey(subTypeKey);
subType.setDescription("ANY SUBTYPE");
server().save(subType);
SubType subType = new SubType();
SubTypeKey subTypeKey = new SubTypeKey();
subTypeKey.setSubTypeId(1);
subType.setKey(subTypeKey);
subType.setDescription("ANY SUBTYPE");
server().save(subType);
Type type = new Type();
TypeKey typeKey = new TypeKey();
typeKey.setCustomer(1);
typeKey.setType(10);
type.setKey(typeKey);
type.setDescription("Type Old-Item - Customer 1");
type.setSubType(subType);
server().save(type);
Type type = new Type();
TypeKey typeKey = new TypeKey();
typeKey.setCustomer(1);
typeKey.setType(10);
type.setKey(typeKey);
type.setDescription("Type Old-Item - Customer 1");
type.setSubType(subType);
server().save(type);
type = new Type();
typeKey = new TypeKey();
typeKey.setCustomer(2);
typeKey.setType(10);
type.setKey(typeKey);
type.setDescription("Type Old-Item - Customer 2");
type.setSubType(subType);
server().save(type);
type = new Type();
typeKey = new TypeKey();
typeKey.setCustomer(2);
typeKey.setType(10);
type.setKey(typeKey);
type.setDescription("Type Old-Item - Customer 2");
type.setSubType(subType);
server().save(type);
Region region = new Region();
RegionKey regionKey = new RegionKey();
regionKey.setCustomer(1);
regionKey.setType(500);
region.setKey(regionKey);
region.setDescription("Region West - Customer 1");
server().save(region);
Region region = new Region();
RegionKey regionKey = new RegionKey();
regionKey.setCustomer(1);
regionKey.setType(500);
region.setKey(regionKey);
region.setDescription("Region West - Customer 1");
server().save(region);
region = new Region();
regionKey = new RegionKey();
regionKey.setCustomer(2);
regionKey.setType(500);
region.setKey(regionKey);
region.setDescription("Region West - Customer 2");
server().save(region);
region = new Region();
regionKey = new RegionKey();
regionKey.setCustomer(2);
regionKey.setType(500);
region.setKey(regionKey);
region.setDescription("Region West - Customer 2");
server().save(region);
Item item = new Item();
ItemKey itemKey = new ItemKey();
itemKey.setCustomer(1);
itemKey.setItemNumber("ITEM1");
item.setKey(itemKey);
item.setUnits("P");
item.setDescription("Fancy Car - Customer 1");
item.setRegion(500);
item.setType(10);
server().save(item);
Item item = new Item();
ItemKey itemKey = new ItemKey();
itemKey.setCustomer(1);
itemKey.setItemNumber("ITEM1");
item.setKey(itemKey);
item.setUnits("P");
item.setDescription("Fancy Car - Customer 1");
item.setRegion(500);
item.setType(10);
server().save(item);
item = new Item();
itemKey = new ItemKey();
itemKey.setCustomer(2);
itemKey.setItemNumber("ITEM1");
item.setKey(itemKey);
item.setUnits("P");
item.setDescription("Another Fancy Car - Customer 2");
item.setRegion(500);
item.setType(10);
server().save(item);
item = new Item();
itemKey = new ItemKey();
itemKey.setCustomer(2);
itemKey.setItemNumber("ITEM1");
item.setKey(itemKey);
item.setUnits("P");
item.setDescription("Another Fancy Car - Customer 2");
item.setRegion(500);
item.setType(10);
server().save(item);
tx.commit();
tx.commit();
}
}
@Test
@@ -3,6 +3,7 @@ package org.tests.delete;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.EbeanServer;
import io.ebean.Transaction;
import org.tests.model.basic.Product;
import org.tests.model.basic.ResetBasicData;
import org.junit.Assert;
@@ -26,21 +27,21 @@ public class TestDeleteByIdWithPersistenceContext extends BaseTestCase {
Product prod2 = createProduct(101, "bananas");
server.insert(prod2);
server.beginTransaction();
// effectively load these into the persistence context
server.find(Product.class, prod1.getId());
server.find(Product.class, prod2.getId());
try (Transaction txn = server.beginTransaction()) {
// effectively load these into the persistence context
server.find(Product.class, prod1.getId());
server.find(Product.class, prod2.getId());
server.deleteAll(Product.class, Arrays.asList(prod1.getId(), prod2.getId()));
server.deleteAll(Product.class, Arrays.asList(prod1.getId(), prod2.getId()));
// are these found in the persistence context?
Product shadow1 = server.find(Product.class, prod1.getId());
Product shadow2 = server.find(Product.class, prod2.getId());
// are these found in the persistence context?
Product shadow1 = server.find(Product.class, prod1.getId());
Product shadow2 = server.find(Product.class, prod2.getId());
Assert.assertNull(shadow1);
Assert.assertNull(shadow2);
Assert.assertNull(shadow1);
Assert.assertNull(shadow2);
server.endTransaction();
}
}
@@ -30,20 +30,21 @@ public class TestGeneratedKeys extends BaseTestCase {
return;
}
Transaction tx = server.beginTransaction();
try (Transaction tx = server.beginTransaction()) {
long sequenceStart = readSequenceValue(tx, GenKeySequence.SEQUENCE_NAME);
long sequenceStart = readSequenceValue(tx, GenKeySequence.SEQUENCE_NAME);
GenKeySequence al = new GenKeySequence();
al.setDescription("my description");
server.save(al);
GenKeySequence al = new GenKeySequence();
al.setDescription("my description");
server.save(al);
long sequenceCurrent = readSequenceValue(tx, GenKeySequence.SEQUENCE_NAME);
long sequenceCurrent = readSequenceValue(tx, GenKeySequence.SEQUENCE_NAME);
assertNotNull(al.getId());
assertFalse(sequenceStart == sequenceCurrent);
assertEquals(sequenceStart + 20, sequenceCurrent);
assertNotNull(al.getId());
assertFalse(sequenceStart == sequenceCurrent);
assertEquals(sequenceStart + 20, sequenceCurrent);
}
}
@@ -76,19 +77,20 @@ public class TestGeneratedKeys extends BaseTestCase {
return;
}
Transaction tx = server.beginTransaction();
try (Transaction tx = server.beginTransaction()) {
GenKeyIdentity al = new GenKeyIdentity();
al.setDescription("my description");
server.save(al);
GenKeyIdentity al = new GenKeyIdentity();
al.setDescription("my description");
server.save(al);
// For JDBC batching we won't get the id until after
// the batch has been flushed explicitly or via commit
//assertNotNull(al.getId());
// For JDBC batching we won't get the id until after
// the batch has been flushed explicitly or via commit
//assertNotNull(al.getId());
tx.commit();
tx.commit();
assertNotNull(al.getId());
assertNotNull(al.getId());
}
}
}
@@ -49,8 +49,8 @@ public class TestConnectionCloseOnSqlerr extends BaseTestCase {
try {
for (int i = 0; i < 100; i++) {
Ebean.beginTransaction();
try {
Ebean.beginTransaction();
Query<Customer> q0 = Ebean.find(Customer.class).where().icontains("namexxx", "Rob")
.query();
@@ -3,6 +3,7 @@ package org.tests.query;
import io.ebean.BaseTestCase;
import io.ebean.Ebean;
import io.ebean.Query;
import io.ebean.Transaction;
import org.tests.model.basic.MRole;
import org.tests.model.basic.MUser;
import org.junit.Assert;
@@ -17,39 +18,39 @@ public class TestManyWhereJoinM2M extends BaseTestCase {
@Test
public void test() {
Ebean.beginTransaction();
try (Transaction txn = Ebean.beginTransaction()) {
MRole r1 = new MRole();
r1.setRoleName("role1");
Ebean.save(r1);
MRole r1 = new MRole();
r1.setRoleName("role1");
Ebean.save(r1);
MRole r2 = new MRole();
r2.setRoleName("role2special");
Ebean.save(r2);
MRole r2 = new MRole();
r2.setRoleName("role2special");
Ebean.save(r2);
MRole r3 = new MRole();
r3.setRoleName("role3");
Ebean.save(r3);
MRole r3 = new MRole();
r3.setRoleName("role3");
Ebean.save(r3);
MUser u0 = new MUser();
u0.setUserName("user0");
u0.addRole(r1);
u0.addRole(r2);
MUser u0 = new MUser();
u0.setUserName("user0");
u0.addRole(r1);
u0.addRole(r2);
Ebean.save(u0);
Ebean.save(u0);
MUser u1 = new MUser();
u1.setUserName("user1");
u1.addRole(r1);
MUser u1 = new MUser();
u1.setUserName("user1");
u1.addRole(r1);
Ebean.save(u1);
Ebean.save(u1);
MUser u2 = new MUser();
u2.setUserName("user2");
Ebean.save(u2);
Ebean.commitTransaction();
MUser u2 = new MUser();
u2.setUserName("user2");
Ebean.save(u2);
txn.commit();
}
Query<MUser> query = Ebean.find(MUser.class).fetch("roles")
// the where on a 'many' (like orders) requires an
// additional join and distinct which is independent
@@ -49,7 +49,6 @@ public class TestRawSqlNamedParams extends BaseTestCase {
ResetBasicData.reset();
Transaction transaction = Ebean.beginTransaction();
try {
CallableSql callableSql = Ebean.createCallableSql("set @total = 0");
Ebean.execute(callableSql);
@@ -23,11 +23,11 @@ public class TestRawSqlWithResultSet extends BaseTestCase {
ResetBasicData.reset();
// Transaction supplies our jdbc Connection
Transaction txn = Ebean.beginTransaction();
PreparedStatement pstmt = null;
// Transaction supplies our jdbc Connection
Transaction txn = Ebean.beginTransaction();
try {
pstmt = txn.getConnection().prepareStatement("select id, name, billing_address_id from o_customer");
@@ -44,22 +44,21 @@ public class TimezoneTests {
}
private void fetch() throws SQLException {
Transaction transaction = Ebean.beginTransaction();
Connection connection = transaction.getConnection();
try (
Transaction transaction = Ebean.beginTransaction();
Connection connection = transaction.getConnection();
PreparedStatement statement = connection.prepareStatement("select * from tztest");
ResultSet resultSet = statement.executeQuery()) {
PreparedStatement statement = connection.prepareStatement("select * from tztest");
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
System.out.println(" zone:" + resultSet.getString("zone"));
System.out.println(" ts:" + tsof(resultSet.getTimestamp("ts")));
System.out.println(" tstz:" + tsof(resultSet.getTimestamp("tstz")));
System.out.println(" ts1:" + tsof(resultSet.getTimestamp("ts1", cal())));
System.out.println("tstz1:" + tsof(resultSet.getTimestamp("tstz1", cal())));
while (resultSet.next()) {
System.out.println(" zone:" + resultSet.getString("zone"));
System.out.println(" ts:" + tsof(resultSet.getTimestamp("ts")));
System.out.println(" tstz:" + tsof(resultSet.getTimestamp("tstz")));
System.out.println(" ts1:" + tsof(resultSet.getTimestamp("ts1", cal())));
System.out.println("tstz1:" + tsof(resultSet.getTimestamp("tstz1", cal())));
}
System.out.println("");
}
System.out.println("");
resultSet.close();
statement.close();
transaction.end();
}
private String tsof(Timestamp timestamp) {
@@ -79,17 +78,19 @@ public class TimezoneTests {
setZone(zone);
}
Transaction transaction = Ebean.beginTransaction();
Connection connection = transaction.getConnection();
PreparedStatement statement = connection.prepareStatement(insert);
statement.setString(1, zone);
statement.setTimestamp(2, nowTs);
statement.setTimestamp(3, nowTs);
statement.setTimestamp(4, nowTs, cal());
statement.setTimestamp(5, nowTs, cal());
statement.executeUpdate();
try (
Transaction transaction = Ebean.beginTransaction();
Connection connection = transaction.getConnection();
PreparedStatement statement = connection.prepareStatement(insert)) {
statement.setString(1, zone);
statement.setTimestamp(2, nowTs);
statement.setTimestamp(3, nowTs);
statement.setTimestamp(4, nowTs, cal());
statement.setTimestamp(5, nowTs, cal());
statement.executeUpdate();
transaction.commit();
transaction.commit();
}
}
private Calendar cal() {
@@ -65,30 +65,30 @@ public class TestAutoCommitDataSource extends BaseTestCase {
UTMaster bean3 = new UTMaster("three3");
// use a different transaction to do final query check
Transaction otherTxn = ebeanServer.createTransaction();
Transaction txn = ebeanServer.beginTransaction();
try (Transaction otherTxn = ebeanServer.createTransaction()) {
assertTrue(txn.getConnection().getAutoCommit());
Transaction txn = ebeanServer.beginTransaction();
try {
assertTrue(txn.getConnection().getAutoCommit());
ebeanServer.save(bean1);
ebeanServer.save(bean2);
try {
ebeanServer.save(bean1);
ebeanServer.save(bean2);
Query<UTMaster> query2 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query2, otherTxn);
assertEquals(2, details.size());
Query<UTMaster> query2 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query2, otherTxn);
assertEquals(2, details.size());
ebeanServer.save(bean3);
ebeanServer.save(bean3);
txn.rollback();
txn.rollback();
} finally {
txn.end();
}
} finally {
txn.end();
Query<UTMaster> query3 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query3, otherTxn);
assertEquals(3, details.size());
}
Query<UTMaster> query3 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query3, otherTxn);
assertEquals(3, details.size());
}
}
@@ -61,7 +61,6 @@ public class TestBeanStateReset extends BaseTestCase {
b.getCs().add(c);
Transaction transaction = Ebean.beginTransaction();
try {
// turn off cascade ...
transaction.setPersistCascade(false);
@@ -10,6 +10,7 @@ import javax.persistence.PersistenceException;
import java.sql.Connection;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class TestBeginTransactionWithExisting extends BaseTestCase {
@@ -30,7 +31,9 @@ public class TestBeginTransactionWithExisting extends BaseTestCase {
Transaction txn = Ebean.beginTransaction();
try {
Ebean.beginTransaction(TxIsolation.READ_COMMITED);
try (Transaction txn2 = Ebean.beginTransaction(TxIsolation.READ_COMMITED)) {
fail("Expected persitenceException here");
}
} finally {
txn.end();
@@ -77,29 +77,30 @@ public class TestExplicitTransactionMode extends BaseTestCase {
UTMaster bean3 = new UTMaster("three3");
// use a different transaction to do final query check
Transaction otherTxn = ebeanServer.createTransaction();
Transaction txn = ebeanServer.beginTransaction();
try (Transaction otherTxn = ebeanServer.createTransaction()) {
try {
ebeanServer.save(bean1);
ebeanServer.save(bean2);
Transaction txn = ebeanServer.beginTransaction();
try {
ebeanServer.save(bean1);
ebeanServer.save(bean2);
// not visible in other transaction
Query<UTMaster> query2 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query2, otherTxn);
assertEquals(0, details.size());
// not visible in other transaction
Query<UTMaster> query2 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query2, otherTxn);
assertEquals(0, details.size());
ebeanServer.save(bean3);
ebeanServer.save(bean3);
txn.commit();
txn.commit();
} finally {
txn.end();
} finally {
txn.end();
}
// commit as expected
Query<UTMaster> query3 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query3, otherTxn);
assertEquals(3, details.size());
}
// commit as expected
Query<UTMaster> query3 = ebeanServer.find(UTMaster.class);
details = ebeanServer.findList(query3, otherTxn);
assertEquals(3, details.size());
}
}
@@ -22,17 +22,17 @@ public class TestPersistContextClear extends BaseTestCase {
ResetBasicData.reset();
ResetBasicData.createOrderCustAndOrder("testPc");
Order order0 = null;
Transaction t = Ebean.beginTransaction();
SpiTransaction spiTxn = (SpiTransaction) t;
PersistenceContext pc = spiTxn.getPersistenceContext();
// no orders or customers in the PC
Assert.assertEquals(0, pc.size(Order.class));
Assert.assertEquals(0, pc.size(Customer.class));
Order order0 = null;
try {
SpiTransaction spiTxn = (SpiTransaction) t;
PersistenceContext pc = spiTxn.getPersistenceContext();
// no orders or customers in the PC
Assert.assertEquals(0, pc.size(Order.class));
Assert.assertEquals(0, pc.size(Customer.class));
EbeanServer server = Ebean.getServer(null);
List<Order> list = server.find(Order.class).fetch("customer").fetch("details").findList();
@@ -22,8 +22,9 @@ public class TestSqlServerBatch extends BaseTestCase {
@Test
public void testBasicIdentityBatch() {
Transaction txn = Ebean.beginTransaction().setBatchMode(true).setBatchSize(3);
Transaction txn = Ebean.beginTransaction();
try {
txn.setBatchMode(true).setBatchSize(3);
for (int i = 0; i < 10; i++) {
ESimple model = new ESimple();
@@ -15,24 +15,25 @@ public class TestStatelessUpdateClearPC extends BaseTestCase {
Ebean.beginTransaction();
try {
EBasic newUser = new EBasic();
newUser.setName("any@email.com");
Ebean.save(newUser);
EBasic newUser = new EBasic();
newUser.setName("any@email.com");
Ebean.save(newUser);
// load the bean into the persistence context
EBasic dummyLoadedUser = Ebean.find(EBasic.class, newUser.getId()); // This row is added
assertNotNull(dummyLoadedUser);
// load the bean into the persistence context
EBasic dummyLoadedUser = Ebean.find(EBasic.class, newUser.getId()); // This row is added
assertNotNull(dummyLoadedUser);
// stateless update (should clear the bean from the persistence context)
EBasic updateUser = new EBasic();
updateUser.setId(newUser.getId());
updateUser.setName("anyNew@email.com");
Ebean.update(updateUser);
// stateless update (should clear the bean from the persistence context)
EBasic updateUser = new EBasic();
updateUser.setId(newUser.getId());
updateUser.setName("anyNew@email.com");
Ebean.update(updateUser);
EBasic loadedUser = Ebean.find(EBasic.class, newUser.getId());
assertEquals("anyNew@email.com", loadedUser.getName());
Ebean.rollbackTransaction();
EBasic loadedUser = Ebean.find(EBasic.class, newUser.getId());
assertEquals("anyNew@email.com", loadedUser.getName());
} finally {
Ebean.rollbackTransaction();
}
}
}
@@ -28,10 +28,11 @@ public class TestTransactionCallback extends BaseTestCase {
public void test_commitAndRollback() {
Transaction txn = Ebean.beginTransaction();
Ebean.register(new MyCallback());
txn.getConnection();
Ebean.commitTransaction();
try (Transaction txn = Ebean.beginTransaction()) {
Ebean.register(new MyCallback());
txn.getConnection();
Ebean.commitTransaction();
}
assertEquals(1, countPreCommit);
assertEquals(1, countPostCommit);
@@ -39,8 +40,11 @@ public class TestTransactionCallback extends BaseTestCase {
assertEquals(0, countPostRollback);
Ebean.beginTransaction();
Ebean.register(new MyCallback());
Ebean.rollbackTransaction();
try {
Ebean.register(new MyCallback());
} finally {
Ebean.rollbackTransaction();
}
assertEquals(1, countPreCommit);
assertEquals(1, countPostCommit);
@@ -96,18 +96,20 @@ public class TestSqlUpdateInTxn extends BaseTestCase {
Ebean.beginTransaction();
try {
SqlUpdate update = Ebean.createSqlUpdate(updateDml);
update.setParameter("desc", "foo4");
update.setParameter("id", id);
update.execute();
SqlUpdate update = Ebean.createSqlUpdate(updateDml);
update.setParameter("desc", "foo4");
update.setParameter("id", id);
update.execute();
updateMod = Ebean.createSqlUpdate(updateModDml);
updateMod.setParameter("desc", "mod2");
updateMod.execute();
Ebean.commitTransaction();
updateMod = Ebean.createSqlUpdate(updateModDml);
updateMod.setParameter("desc", "mod2");
updateMod.execute();
Ebean.commitTransaction();
} finally {
Ebean.endTransaction();
}
AuditLog log5 = Ebean.find(AuditLog.class, log.getId());
Assert.assertEquals("foo4", log5.getDescription());
Assert.assertEquals("mod2", log5.getModifiedDescription());