diff --git a/src/main/java/io/ebean/Transaction.java b/src/main/java/io/ebean/Transaction.java index 743fcc138..b629c24f9 100644 --- a/src/main/java/io/ebean/Transaction.java +++ b/src/main/java/io/ebean/Transaction.java @@ -57,7 +57,7 @@ public interface Transaction extends AutoCloseable { /** * Register a TransactionCallback with this transaction. */ - void register(TransactionCallback callback); + Transaction register(TransactionCallback callback); /** * Set a label on the transaction. @@ -65,7 +65,7 @@ public interface Transaction extends AutoCloseable { * This label is used to group transaction execution times for performance metrics reporting. *

*/ - void setLabel(String label); + Transaction setLabel(String label); /** * Return true if this transaction is read only. @@ -75,7 +75,7 @@ public interface Transaction extends AutoCloseable { /** * Set whether this transaction should be readOnly. */ - void setReadOnly(boolean readOnly); + Transaction setReadOnly(boolean readOnly); /** * Commits the transaction at this point with the expectation that another @@ -139,7 +139,7 @@ public interface Transaction extends AutoCloseable { /** * Mark the transaction for rollback only. */ - void setRollbackOnly(); + Transaction setRollbackOnly(); /** * Return true if the transaction is marked as rollback only. @@ -172,7 +172,7 @@ public interface Transaction extends AutoCloseable { * to control how that is sent to the document store. *

*/ - void setDocStoreMode(DocStoreMode mode); + Transaction setDocStoreMode(DocStoreMode mode); /** * Set the batch size to use for sending messages to the document store. @@ -184,7 +184,7 @@ public interface Transaction extends AutoCloseable { * Setting this overrides the default of {@link DocStoreConfig#getBulkBatchSize()} *

*/ - void setDocStoreBatchSize(int batchSize); + Transaction setDocStoreBatchSize(int batchSize); /** * Explicitly turn off or on the cascading nature of save() and delete(). This @@ -199,7 +199,7 @@ public interface Transaction extends AutoCloseable { * that do not support getGeneratedKeys. *

*/ - void setPersistCascade(boolean persistCascade); + Transaction setPersistCascade(boolean persistCascade); /** * Set to true when you want all loaded properties to be included in the update @@ -210,7 +210,7 @@ public interface Transaction extends AutoCloseable { * and hence better JDBC batch performance. *

*/ - void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties); + Transaction setUpdateAllLoadedProperties(boolean updateAllLoadedProperties); /** * Set if the L2 cache should be skipped for "find by id" and "find by natural key" queries. @@ -269,7 +269,7 @@ public interface Transaction extends AutoCloseable { * * @see ServerConfig#isSkipCacheAfterWrite() */ - void setSkipCache(boolean skipCache); + Transaction setSkipCache(boolean skipCache); /** * Return true if the L2 cache should be skipped. More accurately if true then find by id @@ -344,7 +344,7 @@ public interface Transaction extends AutoCloseable { * * } */ - void setBatchMode(boolean useBatch); + Transaction setBatchMode(boolean useBatch); /** * The JDBC batch mode to use for this transaction. @@ -356,7 +356,7 @@ public interface Transaction extends AutoCloseable { * @param persistBatchMode the batch mode to use for this transaction * @see io.ebean.config.ServerConfig#setPersistBatch(PersistBatch) */ - void setBatch(PersistBatch persistBatchMode); + Transaction setBatch(PersistBatch persistBatchMode); /** * Return the batch mode at the transaction level. @@ -377,7 +377,7 @@ public interface Transaction extends AutoCloseable { * @param batchOnCascadeMode the batch mode to use per save(), insert(), update() or delete() * @see io.ebean.config.ServerConfig#setPersistBatchOnCascade(PersistBatch) */ - void setBatchOnCascade(PersistBatch batchOnCascadeMode); + Transaction setBatchOnCascade(PersistBatch batchOnCascadeMode); /** * Return the batch mode at the request level (for each save(), insert(), update() or delete()). @@ -387,7 +387,7 @@ public interface Transaction extends AutoCloseable { /** * Specify the number of statements before a batch is flushed automatically. */ - void setBatchSize(int batchSize); + Transaction setBatchSize(int batchSize); /** * Return the current batch size. @@ -405,7 +405,7 @@ public interface Transaction extends AutoCloseable { * number of objects and you don't care about getting back the ids. *

*/ - void setBatchGetGeneratedKeys(boolean getGeneratedKeys); + Transaction setBatchGetGeneratedKeys(boolean getGeneratedKeys); /** * By default when mixing UpdateSql (or CallableSql) with Beans the batch is @@ -422,7 +422,7 @@ public interface Transaction extends AutoCloseable { * have a 2 step process (delayed binding). *

*/ - void setBatchFlushOnMixed(boolean batchFlushOnMixed); + Transaction setBatchFlushOnMixed(boolean batchFlushOnMixed); /** * By default executing a query will automatically flush any batched @@ -432,7 +432,7 @@ public interface Transaction extends AutoCloseable { * execute a query and the batch will not be automatically flushed. *

*/ - void setBatchFlushOnQuery(boolean batchFlushOnQuery); + Transaction setBatchFlushOnQuery(boolean batchFlushOnQuery); /** * Return true if the batch (of persisted beans or executed UpdateSql etc) @@ -498,14 +498,14 @@ public interface Transaction extends AutoCloseable { * caches in synch and maintain text indexes. *

*/ - void addModification(String tableName, boolean inserts, boolean updates, boolean deletes); + Transaction addModification(String tableName, boolean inserts, boolean updates, boolean deletes); /** * Add an arbitrary user object to the transaction. The objects added have no * impact on any internals of ebean and are solely meant as a convenient * method push user information (although somewhat replaced by TransactionCallback). */ - void putUserObject(String name, Object value); + Transaction putUserObject(String name, Object value); /** * Get an object added with {@link #putUserObject(String, Object)}. diff --git a/src/main/java/io/ebeaninternal/api/ScopedTransaction.java b/src/main/java/io/ebeaninternal/api/ScopedTransaction.java index 9ecd6a3b7..17f4fae57 100644 --- a/src/main/java/io/ebeaninternal/api/ScopedTransaction.java +++ b/src/main/java/io/ebeaninternal/api/ScopedTransaction.java @@ -1,5 +1,6 @@ package io.ebeaninternal.api; +import io.ebean.Transaction; import io.ebeaninternal.server.transaction.TransactionScopeManager; import io.ebeaninternal.server.util.ArrayStack; @@ -93,8 +94,9 @@ public class ScopedTransaction extends SpiTransactionProxy { } @Override - public void setRollbackOnly() { + public Transaction setRollbackOnly() { current.setRollbackOnly(); + return this; } /** diff --git a/src/main/java/io/ebeaninternal/api/SpiTransactionProxy.java b/src/main/java/io/ebeaninternal/api/SpiTransactionProxy.java index b9907aa3a..7c7b1e317 100644 --- a/src/main/java/io/ebeaninternal/api/SpiTransactionProxy.java +++ b/src/main/java/io/ebeaninternal/api/SpiTransactionProxy.java @@ -1,6 +1,7 @@ package io.ebeaninternal.api; import io.ebean.ProfileLocation; +import io.ebean.Transaction; import io.ebean.TransactionCallback; import io.ebean.annotation.DocStoreMode; import io.ebean.annotation.PersistBatch; @@ -31,8 +32,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setLabel(String label) { + public Transaction setLabel(String label) { transaction.setLabel(label); + return this; } @Override @@ -101,8 +103,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setDocStoreMode(DocStoreMode mode) { + public Transaction setDocStoreMode(DocStoreMode mode) { transaction.setDocStoreMode(mode); + return this; } @Override @@ -111,8 +114,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setDocStoreBatchSize(int batchSize) { + public Transaction setDocStoreBatchSize(int batchSize) { transaction.setDocStoreBatchSize(batchSize); + return this; } @Override @@ -141,8 +145,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setSkipCache(boolean skipCache) { + public Transaction setSkipCache(boolean skipCache) { transaction.setSkipCache(skipCache); + return this; } @Override @@ -196,8 +201,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void register(TransactionCallback callback) { + public Transaction register(TransactionCallback callback) { transaction.register(callback); + return this; } @Override @@ -206,8 +212,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setReadOnly(boolean readOnly) { + public Transaction setReadOnly(boolean readOnly) { transaction.setReadOnly(readOnly); + return this; } @Override @@ -216,13 +223,15 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setPersistCascade(boolean persistCascade) { + public Transaction setPersistCascade(boolean persistCascade) { transaction.setPersistCascade(persistCascade); + return this; } @Override - public void setUpdateAllLoadedProperties(boolean updateAllLoaded) { + public Transaction setUpdateAllLoadedProperties(boolean updateAllLoaded) { transaction.setUpdateAllLoadedProperties(updateAllLoaded); + return this; } @Override @@ -231,13 +240,15 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setBatchMode(boolean useBatch) { + public Transaction setBatchMode(boolean useBatch) { transaction.setBatchMode(useBatch); + return this; } @Override - public void setBatch(PersistBatch persistBatchMode) { + public Transaction setBatch(PersistBatch persistBatchMode) { transaction.setBatch(persistBatchMode); + return this; } @Override @@ -246,8 +257,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setBatchOnCascade(PersistBatch batchOnCascadeMode) { + public Transaction setBatchOnCascade(PersistBatch batchOnCascadeMode) { transaction.setBatchOnCascade(batchOnCascadeMode); + return this; } @Override @@ -256,8 +268,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setBatchSize(int batchSize) { + public Transaction setBatchSize(int batchSize) { transaction.setBatchSize(batchSize); + return this; } @Override @@ -266,8 +279,9 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setBatchGetGeneratedKeys(boolean getGeneratedKeys) { + public Transaction setBatchGetGeneratedKeys(boolean getGeneratedKeys) { transaction.setBatchGetGeneratedKeys(getGeneratedKeys); + return this; } @Override @@ -276,13 +290,15 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void setBatchFlushOnMixed(boolean batchFlushOnMixed) { + public Transaction setBatchFlushOnMixed(boolean batchFlushOnMixed) { transaction.setBatchFlushOnMixed(batchFlushOnMixed); + return this; } @Override - public void setBatchFlushOnQuery(boolean batchFlushOnQuery) { + public Transaction setBatchFlushOnQuery(boolean batchFlushOnQuery) { transaction.setBatchFlushOnQuery(batchFlushOnQuery); + return this; } @Override @@ -306,13 +322,15 @@ abstract class SpiTransactionProxy implements SpiTransaction { } @Override - public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { + public Transaction addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { transaction.addModification(tableName, inserts, updates, deletes); + return this; } @Override - public void putUserObject(String name, Object value) { + public Transaction putUserObject(String name, Object value) { transaction.putUserObject(name, value); + return this; } @Override diff --git a/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java b/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java index 4bb23735e..dbf1ce00d 100644 --- a/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java +++ b/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java @@ -1,5 +1,7 @@ package io.ebeaninternal.server.transaction; +import io.ebean.Transaction; + import java.sql.Connection; import java.sql.SQLException; @@ -21,8 +23,9 @@ public class DocStoreOnlyTransaction extends JdbcTransaction { } @Override - public void setReadOnly(boolean readOnly) { + public Transaction setReadOnly(boolean readOnly) { // do nothing + return this; } @Override diff --git a/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java b/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java index 0e95880cb..6f39932bc 100644 --- a/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java +++ b/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java @@ -1,6 +1,7 @@ package io.ebeaninternal.server.transaction; import io.ebean.ProfileLocation; +import io.ebean.Transaction; import io.ebean.TransactionCallback; import io.ebean.annotation.DocStoreMode; import io.ebean.annotation.PersistBatch; @@ -85,8 +86,9 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setLabel(String label) { + public Transaction setLabel(String label) { // do nothing + return this; } @Override @@ -130,7 +132,8 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setSkipCache(boolean skipCache) { + public Transaction setSkipCache(boolean skipCache) { + return this; } @Override @@ -149,7 +152,7 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void register(TransactionCallback callback) { + public Transaction register(TransactionCallback callback) { throw new IllegalStateException(notExpectedMessage); } @@ -159,7 +162,7 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setDocStoreBatchSize(int docStoreBatchSize) { + public Transaction setDocStoreBatchSize(int docStoreBatchSize) { throw new IllegalStateException(notExpectedMessage); } @@ -169,7 +172,7 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setDocStoreMode(DocStoreMode docStoreMode) { + public Transaction setDocStoreMode(DocStoreMode docStoreMode) { throw new IllegalStateException(notExpectedMessage); } @@ -244,19 +247,21 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setReadOnly(boolean readOnly) { + public Transaction setReadOnly(boolean readOnly) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } try { connection.setReadOnly(readOnly); + return this; } catch (SQLException e) { throw new PersistenceException(e); } } @Override - public void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { + public Transaction setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { + return this; } @Override @@ -265,13 +270,13 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setBatchMode(boolean batchMode) { - + public Transaction setBatchMode(boolean batchMode) { + return this; } @Override - public void setBatch(PersistBatch batchMode) { - + public Transaction setBatch(PersistBatch batchMode) { + return this; } @Override @@ -280,7 +285,8 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setBatchOnCascade(PersistBatch batchOnCascadeMode) { + public Transaction setBatchOnCascade(PersistBatch batchOnCascadeMode) { + return this; } @Override @@ -294,11 +300,13 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setBatchGetGeneratedKeys(boolean getGeneratedKeys) { + public Transaction setBatchGetGeneratedKeys(boolean getGeneratedKeys) { + return this; } @Override - public void setBatchFlushOnMixed(boolean batchFlushOnMixed) { + public Transaction setBatchFlushOnMixed(boolean batchFlushOnMixed) { + return this; } /** @@ -313,7 +321,8 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setBatchSize(int batchSize) { + public Transaction setBatchSize(int batchSize) { + return this; } @Override @@ -322,7 +331,8 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setBatchFlushOnQuery(boolean batchFlushOnQuery) { + public Transaction setBatchFlushOnQuery(boolean batchFlushOnQuery) { + return this; } /** @@ -536,7 +546,7 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode * Mark the transaction as rollback only. */ @Override - public void setRollbackOnly() { + public Transaction setRollbackOnly() { // expect AutoCommit so we can't really support rollbackOnly throw new IllegalStateException(notExpectedMessage); } @@ -586,11 +596,12 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void setPersistCascade(boolean persistCascade) { + public Transaction setPersistCascade(boolean persistCascade) { + return this; } @Override - public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { + public Transaction addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { throw new IllegalStateException(notExpectedMessage); } @@ -600,11 +611,12 @@ class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCode } @Override - public void putUserObject(String name, Object value) { + public Transaction putUserObject(String name, Object value) { if (userObjects == null) { userObjects = new HashMap<>(); } userObjects.put(name, value); + return this; } @Override diff --git a/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java b/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java index 322f70725..d0b60fea9 100644 --- a/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java +++ b/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java @@ -1,6 +1,7 @@ package io.ebeaninternal.server.transaction; import io.ebean.ProfileLocation; +import io.ebean.Transaction; import io.ebean.TransactionCallback; import io.ebean.annotation.DocStoreMode; import io.ebean.annotation.PersistBatch; @@ -217,8 +218,9 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setLabel(String label) { + public Transaction setLabel(String label) { this.label = label; + return this; } @Override @@ -288,8 +290,9 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setSkipCache(boolean skipCache) { + public Transaction setSkipCache(boolean skipCache) { this.skipCache = skipCache; + return this; } @Override @@ -318,11 +321,12 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void register(TransactionCallback callback) { + public Transaction register(TransactionCallback callback) { if (callbackList == null) { callbackList = new ArrayList<>(4); } callbackList.add(callback); + return this; } protected void firePreRollback() { @@ -385,8 +389,9 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setDocStoreBatchSize(int docStoreBatchSize) { + public Transaction setDocStoreBatchSize(int docStoreBatchSize) { this.docStoreBatchSize = docStoreBatchSize; + return this; } @Override @@ -395,8 +400,9 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setDocStoreMode(DocStoreMode docStoreMode) { + public Transaction setDocStoreMode(DocStoreMode docStoreMode) { this.docStoreMode = docStoreMode; + return this; } @Override @@ -529,21 +535,23 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setReadOnly(boolean readOnly) { + public Transaction setReadOnly(boolean readOnly) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } try { localReadOnly = readOnly; connection.setReadOnly(readOnly); + return this; } catch (SQLException e) { throw new PersistenceException(e); } } @Override - public void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { + public Transaction setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { this.updateAllLoadedProperties = updateAllLoadedProperties; + return this; } @Override @@ -552,19 +560,21 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setBatchMode(boolean batchMode) { + public Transaction setBatchMode(boolean batchMode) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } this.batchMode = (batchMode) ? PersistBatch.ALL : PersistBatch.NONE; + return this; } @Override - public void setBatch(PersistBatch batchMode) { + public Transaction setBatch(PersistBatch batchMode) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } this.batchMode = batchMode; + return this; } @Override @@ -573,11 +583,12 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setBatchOnCascade(PersistBatch batchOnCascadeMode) { + public Transaction setBatchOnCascade(PersistBatch batchOnCascadeMode) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } this.batchOnCascadeMode = batchOnCascadeMode; + return this; } @Override @@ -591,19 +602,21 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setBatchGetGeneratedKeys(boolean getGeneratedKeys) { + public Transaction setBatchGetGeneratedKeys(boolean getGeneratedKeys) { this.batchGetGeneratedKeys = getGeneratedKeys; if (batchControl != null) { batchControl.setGetGeneratedKeys(getGeneratedKeys); } + return this; } @Override - public void setBatchFlushOnMixed(boolean batchFlushOnMixed) { + public Transaction setBatchFlushOnMixed(boolean batchFlushOnMixed) { this.batchFlushOnMixed = batchFlushOnMixed; if (batchControl != null) { batchControl.setBatchFlushOnMixed(batchFlushOnMixed); } + return this; } /** @@ -618,11 +631,12 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setBatchSize(int batchSize) { + public Transaction setBatchSize(int batchSize) { this.batchSize = batchSize; if (batchControl != null) { batchControl.setBatchSize(batchSize); } + return this; } @Override @@ -631,8 +645,9 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setBatchFlushOnQuery(boolean batchFlushOnQuery) { + public Transaction setBatchFlushOnQuery(boolean batchFlushOnQuery) { this.batchFlushOnQuery = batchFlushOnQuery; + return this; } /** @@ -1113,8 +1128,9 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Mark the transaction as rollback only. */ @Override - public void setRollbackOnly() { + public Transaction setRollbackOnly() { this.rollbackOnly = true; + return this; } /** @@ -1182,13 +1198,15 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setPersistCascade(boolean persistCascade) { + public Transaction setPersistCascade(boolean persistCascade) { this.persistCascade = persistCascade; + return this; } @Override - public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { + public Transaction addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { getEvent().add(tableName, inserts, updates, deletes); + return this; } @Override @@ -1201,11 +1219,12 @@ public class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void putUserObject(String name, Object value) { + public Transaction putUserObject(String name, Object value) { if (userObjects == null) { userObjects = new HashMap<>(); } userObjects.put(name, value); + return this; } @Override diff --git a/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java b/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java index 9ee156066..73c6eb930 100644 --- a/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java +++ b/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java @@ -1,6 +1,7 @@ package io.ebeaninternal.server.transaction; import io.ebean.ProfileLocation; +import io.ebean.Transaction; import io.ebean.TransactionCallback; import io.ebean.annotation.DocStoreMode; import io.ebean.annotation.PersistBatch; @@ -28,8 +29,8 @@ class NoTransaction implements SpiTransaction { static final NoTransaction INSTANCE = new NoTransaction(); @Override - public void setLabel(String label) { - // do nothing + public Transaction setLabel(String label) { + return this; } @Override @@ -150,8 +151,8 @@ class NoTransaction implements SpiTransaction { } @Override - public void register(TransactionCallback callback) { - + public Transaction register(TransactionCallback callback) { + return this; } @Override @@ -160,13 +161,13 @@ class NoTransaction implements SpiTransaction { } @Override - public void setReadOnly(boolean readOnly) { - + public Transaction setReadOnly(boolean readOnly) { + return this; } @Override - public void setRollbackOnly() { - + public Transaction setRollbackOnly() { + return this; } @Override @@ -176,28 +177,28 @@ class NoTransaction implements SpiTransaction { @Override - public void setDocStoreMode(DocStoreMode mode) { - + public Transaction setDocStoreMode(DocStoreMode mode) { + return this; } @Override - public void setDocStoreBatchSize(int batchSize) { - + public Transaction setDocStoreBatchSize(int batchSize) { + return this; } @Override - public void setPersistCascade(boolean persistCascade) { - + public Transaction setPersistCascade(boolean persistCascade) { + return this; } @Override - public void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { - + public Transaction setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { + return this; } @Override - public void setSkipCache(boolean skipCache) { - + public Transaction setSkipCache(boolean skipCache) { + return this; } @Override @@ -206,13 +207,13 @@ class NoTransaction implements SpiTransaction { } @Override - public void setBatchMode(boolean useBatch) { - + public Transaction setBatchMode(boolean useBatch) { + return this; } @Override - public void setBatch(PersistBatch persistBatchMode) { - + public Transaction setBatch(PersistBatch persistBatchMode) { + return this; } @Override @@ -221,8 +222,8 @@ class NoTransaction implements SpiTransaction { } @Override - public void setBatchOnCascade(PersistBatch batchOnCascadeMode) { - + public Transaction setBatchOnCascade(PersistBatch batchOnCascadeMode) { + return this; } @Override @@ -231,8 +232,8 @@ class NoTransaction implements SpiTransaction { } @Override - public void setBatchSize(int batchSize) { - + public Transaction setBatchSize(int batchSize) { + return this; } @Override @@ -241,18 +242,18 @@ class NoTransaction implements SpiTransaction { } @Override - public void setBatchGetGeneratedKeys(boolean getGeneratedKeys) { - + public Transaction setBatchGetGeneratedKeys(boolean getGeneratedKeys) { + return this; } @Override - public void setBatchFlushOnMixed(boolean batchFlushOnMixed) { - + public Transaction setBatchFlushOnMixed(boolean batchFlushOnMixed) { + return this; } @Override - public void setBatchFlushOnQuery(boolean batchFlushOnQuery) { - + public Transaction setBatchFlushOnQuery(boolean batchFlushOnQuery) { + return this; } @Override @@ -276,13 +277,13 @@ class NoTransaction implements SpiTransaction { } @Override - public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { - + public Transaction addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { + return this; } @Override - public void putUserObject(String name, Object value) { - + public Transaction putUserObject(String name, Object value) { + return this; } @Override diff --git a/src/test/java/org/tests/batchinsert/TestBatchInsertFlush.java b/src/test/java/org/tests/batchinsert/TestBatchInsertFlush.java index f1618b8d3..d5b5add3f 100644 --- a/src/test/java/org/tests/batchinsert/TestBatchInsertFlush.java +++ b/src/test/java/org/tests/batchinsert/TestBatchInsertFlush.java @@ -32,13 +32,13 @@ public class TestBatchInsertFlush extends BaseTestCase { MetaInfoManager metaInfoManager = server.getMetaInfoManager(); metaInfoManager.collectTransactionStatistics(true); - Transaction transaction = server.beginTransaction(); - try { - transaction.setPersistCascade(false); - transaction.setBatchSize(10); - transaction.setBatch(PersistBatch.ALL); - transaction.setLabel("TestBatchInsertFlush.no_cascade"); + Transaction transaction = server.beginTransaction() + .setPersistCascade(false) + .setBatchSize(10) + .setBatch(PersistBatch.ALL) + .setLabel("TestBatchInsertFlush.no_cascade"); + try { LoggedSqlCollector.start(); diff --git a/src/test/java/org/tests/batchinsert/TestBatchInsertSimple.java b/src/test/java/org/tests/batchinsert/TestBatchInsertSimple.java index 97b13a649..b49aebc75 100644 --- a/src/test/java/org/tests/batchinsert/TestBatchInsertSimple.java +++ b/src/test/java/org/tests/batchinsert/TestBatchInsertSimple.java @@ -3,11 +3,11 @@ package org.tests.batchinsert; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.Transaction; -import io.ebean.annotation.Transactional; import io.ebean.annotation.PersistBatch; +import io.ebean.annotation.Transactional; +import org.junit.Test; import org.tests.model.basic.UTDetail; import org.tests.model.basic.UTMaster; -import org.junit.Test; import java.util.ArrayList; import java.util.List; @@ -128,11 +128,12 @@ public class TestBatchInsertSimple extends BaseTestCase { masters.add(createMasterAndDetails(i, 7)); } - Transaction transaction = Ebean.beginTransaction(); + Transaction transaction = Ebean.beginTransaction() + .setBatch(PersistBatch.NONE) + .setBatchOnCascade(PersistBatch.ALL) + .setBatchSize(20); + try { - transaction.setBatch(PersistBatch.NONE); - transaction.setBatchOnCascade(PersistBatch.ALL); - transaction.setBatchSize(20); // escalate based on batchOnCascade value Ebean.saveAll(masters); diff --git a/src/test/java/org/tests/transaction/TestSqlServerBatch.java b/src/test/java/org/tests/transaction/TestSqlServerBatch.java index 6b463236b..38cd60050 100644 --- a/src/test/java/org/tests/transaction/TestSqlServerBatch.java +++ b/src/test/java/org/tests/transaction/TestSqlServerBatch.java @@ -22,10 +22,8 @@ public class TestSqlServerBatch extends BaseTestCase { @Test public void testBasicIdentityBatch() { - Transaction txn = Ebean.beginTransaction(); + Transaction txn = Ebean.beginTransaction().setBatchMode(true).setBatchSize(3); try { - txn.setBatchMode(true); - txn.setBatchSize(3); for (int i = 0; i < 10; i++) { ESimple model = new ESimple();