mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
FIX: possible resource leaking in testcases (all created transactions are closed by followed try statement) (#1273)
This commit is contained in:
committed by
Rob Bygrave
parent
8e9843ab8a
commit
e3425a8850
@@ -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
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user