Merge branch 'issue/1263-transaction-api'

This commit is contained in:
Rob Bygrave committed 2018-02-19 22:47:42 +13:00
commit 8d0df6541e
10 files changed
+180 -126

No files matched your search

@@ -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;
}
/**
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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