mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
422 lines
9.1 KiB
Java
422 lines
9.1 KiB
Java
package io.ebeaninternal.api;
|
|
|
|
import io.ebean.annotation.PersistBatch;
|
|
import io.ebean.TransactionCallback;
|
|
import io.ebean.annotation.DocStoreMode;
|
|
import io.ebean.bean.PersistenceContext;
|
|
import io.ebean.event.changelog.BeanChange;
|
|
import io.ebean.event.changelog.ChangeSet;
|
|
import io.ebeaninternal.server.core.PersistDeferredRelationship;
|
|
import io.ebeaninternal.server.core.PersistRequest;
|
|
import io.ebeaninternal.server.core.PersistRequestBean;
|
|
import io.ebeaninternal.server.persist.BatchControl;
|
|
import io.ebeanservice.docstore.api.DocStoreTransaction;
|
|
|
|
import javax.persistence.PersistenceException;
|
|
import java.sql.Connection;
|
|
import java.sql.SQLException;
|
|
|
|
/**
|
|
* Wrapper of a ScopeTrans request and it's underlying transaction.
|
|
*/
|
|
public class ScopedTransaction implements SpiTransaction {
|
|
|
|
private final ScopeTrans scopeTrans;
|
|
|
|
private final SpiTransaction transaction;
|
|
|
|
private boolean committed;
|
|
|
|
public ScopedTransaction(ScopeTrans scopeTrans) {
|
|
this.scopeTrans = scopeTrans;
|
|
this.transaction = scopeTrans.getTransaction();
|
|
}
|
|
|
|
@Override
|
|
public PersistenceException translate(String message, SQLException cause) {
|
|
return transaction.translate(message, cause);
|
|
}
|
|
|
|
@Override
|
|
public void commitAndContinue() {
|
|
transaction.commitAndContinue();
|
|
}
|
|
|
|
@Override
|
|
public void commit() {
|
|
scopeTrans.commitTransaction();
|
|
committed = true;
|
|
}
|
|
|
|
@Override
|
|
public void rollback() throws PersistenceException {
|
|
scopeTrans.rollback(null);
|
|
}
|
|
|
|
@Override
|
|
public void rollback(Throwable e) throws PersistenceException {
|
|
scopeTrans.rollback(e);
|
|
}
|
|
|
|
@Override
|
|
public void rollbackIfActive() {
|
|
transaction.rollbackIfActive();
|
|
}
|
|
|
|
@Override
|
|
public void setRollbackOnly() {
|
|
scopeTrans.setRollbackOnly();
|
|
}
|
|
|
|
@Override
|
|
public boolean isRollbackOnly() {
|
|
return transaction.isRollbackOnly();
|
|
}
|
|
|
|
@Override
|
|
public void end() throws PersistenceException {
|
|
try {
|
|
if (!committed) {
|
|
scopeTrans.rollback(null);
|
|
}
|
|
} finally {
|
|
scopeTrans.restoreSuspended();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setTenantId(Object tenantId) {
|
|
transaction.setTenantId(tenantId);
|
|
}
|
|
|
|
@Override
|
|
public Object getTenantId() {
|
|
return transaction.getTenantId();
|
|
}
|
|
|
|
@Override
|
|
public DocStoreTransaction getDocStoreTransaction() {
|
|
return transaction.getDocStoreTransaction();
|
|
}
|
|
|
|
@Override
|
|
public DocStoreMode getDocStoreMode() {
|
|
return transaction.getDocStoreMode();
|
|
}
|
|
|
|
@Override
|
|
public void setDocStoreMode(DocStoreMode mode) {
|
|
transaction.setDocStoreMode(mode);
|
|
}
|
|
|
|
@Override
|
|
public int getDocStoreBatchSize() {
|
|
return transaction.getDocStoreBatchSize();
|
|
}
|
|
|
|
@Override
|
|
public void setDocStoreBatchSize(int batchSize) {
|
|
transaction.setDocStoreBatchSize(batchSize);
|
|
}
|
|
|
|
@Override
|
|
public String getLogPrefix() {
|
|
return transaction.getLogPrefix();
|
|
}
|
|
|
|
@Override
|
|
public boolean isLogSql() {
|
|
return transaction.isLogSql();
|
|
}
|
|
|
|
@Override
|
|
public boolean isLogSummary() {
|
|
return transaction.isLogSummary();
|
|
}
|
|
|
|
@Override
|
|
public void logSql(String msg) {
|
|
transaction.logSql(msg);
|
|
}
|
|
|
|
@Override
|
|
public void logSummary(String msg) {
|
|
transaction.logSummary(msg);
|
|
}
|
|
|
|
@Override
|
|
public void setSkipCache(boolean skipCache) {
|
|
transaction.setSkipCache(skipCache);
|
|
}
|
|
|
|
@Override
|
|
public boolean isSkipCache() {
|
|
return transaction.isSkipCache();
|
|
}
|
|
|
|
@Override
|
|
public void addBeanChange(BeanChange beanChange) {
|
|
transaction.addBeanChange(beanChange);
|
|
}
|
|
|
|
@Override
|
|
public void sendChangeLog(ChangeSet changes) {
|
|
transaction.sendChangeLog(changes);
|
|
}
|
|
|
|
@Override
|
|
public void registerDeferred(PersistDeferredRelationship derived) {
|
|
transaction.registerDeferred(derived);
|
|
}
|
|
|
|
@Override
|
|
public void registerDeleteBean(Integer hash) {
|
|
transaction.registerDeleteBean(hash);
|
|
}
|
|
|
|
@Override
|
|
public void unregisterDeleteBean(Integer hash) {
|
|
transaction.unregisterDeleteBean(hash);
|
|
}
|
|
|
|
@Override
|
|
public boolean isRegisteredDeleteBean(Integer hash) {
|
|
return transaction.isRegisteredDeleteBean(hash);
|
|
}
|
|
|
|
@Override
|
|
public void unregisterBean(Object bean) {
|
|
transaction.unregisterBean(bean);
|
|
}
|
|
|
|
@Override
|
|
public boolean isRegisteredBean(Object bean) {
|
|
return transaction.isRegisteredBean(bean);
|
|
}
|
|
|
|
@Override
|
|
public String getId() {
|
|
return transaction.getId();
|
|
}
|
|
|
|
@Override
|
|
public void register(TransactionCallback callback) {
|
|
transaction.register(callback);
|
|
}
|
|
|
|
@Override
|
|
public boolean isReadOnly() {
|
|
return transaction.isReadOnly();
|
|
}
|
|
|
|
@Override
|
|
public void setReadOnly(boolean readOnly) {
|
|
transaction.setReadOnly(readOnly);
|
|
}
|
|
|
|
@Override
|
|
public boolean isActive() {
|
|
return transaction.isActive();
|
|
}
|
|
|
|
@Override
|
|
public void setPersistCascade(boolean persistCascade) {
|
|
transaction.setPersistCascade(persistCascade);
|
|
}
|
|
|
|
@Override
|
|
public void setUpdateAllLoadedProperties(boolean updateAllLoaded) {
|
|
transaction.setUpdateAllLoadedProperties(updateAllLoaded);
|
|
}
|
|
|
|
@Override
|
|
public Boolean isUpdateAllLoadedProperties() {
|
|
return transaction.isUpdateAllLoadedProperties();
|
|
}
|
|
|
|
@Override
|
|
public void setBatchMode(boolean useBatch) {
|
|
transaction.setBatchMode(useBatch);
|
|
}
|
|
|
|
@Override
|
|
public void setBatch(PersistBatch persistBatchMode) {
|
|
transaction.setBatch(persistBatchMode);
|
|
}
|
|
|
|
@Override
|
|
public PersistBatch getBatch() {
|
|
return transaction.getBatch();
|
|
}
|
|
|
|
@Override
|
|
public void setBatchOnCascade(PersistBatch batchOnCascadeMode) {
|
|
transaction.setBatchOnCascade(batchOnCascadeMode);
|
|
}
|
|
|
|
@Override
|
|
public PersistBatch getBatchOnCascade() {
|
|
return transaction.getBatchOnCascade();
|
|
}
|
|
|
|
@Override
|
|
public void setBatchSize(int batchSize) {
|
|
transaction.setBatchSize(batchSize);
|
|
}
|
|
|
|
@Override
|
|
public int getBatchSize() {
|
|
return transaction.getBatchSize();
|
|
}
|
|
|
|
@Override
|
|
public void setBatchGetGeneratedKeys(boolean getGeneratedKeys) {
|
|
transaction.setBatchGetGeneratedKeys(getGeneratedKeys);
|
|
}
|
|
|
|
@Override
|
|
public Boolean getBatchGetGeneratedKeys() {
|
|
return transaction.getBatchGetGeneratedKeys();
|
|
}
|
|
|
|
@Override
|
|
public void setBatchFlushOnMixed(boolean batchFlushOnMixed) {
|
|
transaction.setBatchFlushOnMixed(batchFlushOnMixed);
|
|
}
|
|
|
|
@Override
|
|
public void setBatchFlushOnQuery(boolean batchFlushOnQuery) {
|
|
transaction.setBatchFlushOnQuery(batchFlushOnQuery);
|
|
}
|
|
|
|
@Override
|
|
public boolean isBatchFlushOnQuery() {
|
|
return transaction.isBatchFlushOnQuery();
|
|
}
|
|
|
|
@Override
|
|
public void flush() throws PersistenceException {
|
|
transaction.flush();
|
|
}
|
|
|
|
@Override
|
|
public void flushBatch() throws PersistenceException {
|
|
flush();
|
|
}
|
|
|
|
@Override
|
|
public Connection getConnection() {
|
|
return transaction.getConnection();
|
|
}
|
|
|
|
@Override
|
|
public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) {
|
|
transaction.addModification(tableName, inserts, updates, deletes);
|
|
}
|
|
|
|
@Override
|
|
public void putUserObject(String name, Object value) {
|
|
transaction.putUserObject(name, value);
|
|
}
|
|
|
|
@Override
|
|
public Object getUserObject(String name) {
|
|
return transaction.getUserObject(name);
|
|
}
|
|
|
|
@Override
|
|
public void depth(int diff) {
|
|
transaction.depth();
|
|
}
|
|
|
|
@Override
|
|
public int depth() {
|
|
return transaction.depth();
|
|
}
|
|
|
|
@Override
|
|
public boolean isExplicit() {
|
|
return transaction.isExplicit();
|
|
}
|
|
|
|
@Override
|
|
public TransactionEvent getEvent() {
|
|
return transaction.getEvent();
|
|
}
|
|
|
|
@Override
|
|
public boolean isPersistCascade() {
|
|
return transaction.isPersistCascade();
|
|
}
|
|
|
|
@Override
|
|
public boolean isBatchThisRequest(PersistRequest.Type type) {
|
|
return transaction.isBatchThisRequest(type);
|
|
}
|
|
|
|
@Override
|
|
public BatchControl getBatchControl() {
|
|
return transaction.getBatchControl();
|
|
}
|
|
|
|
@Override
|
|
public void setBatchControl(BatchControl control) {
|
|
transaction.setBatchControl(control);
|
|
}
|
|
|
|
@Override
|
|
public PersistenceContext getPersistenceContext() {
|
|
return transaction.getPersistenceContext();
|
|
}
|
|
|
|
@Override
|
|
public void setPersistenceContext(PersistenceContext context) {
|
|
transaction.setPersistenceContext(context);
|
|
}
|
|
|
|
@Override
|
|
public Connection getInternalConnection() {
|
|
return transaction.getInternalConnection();
|
|
}
|
|
|
|
@Override
|
|
public boolean isSaveAssocManyIntersection(String intersectionTable, String beanName) {
|
|
return transaction.isSaveAssocManyIntersection(intersectionTable, beanName);
|
|
}
|
|
|
|
@Override
|
|
public boolean checkBatchEscalationOnCascade(PersistRequestBean<?> request) {
|
|
return transaction.checkBatchEscalationOnCascade(request);
|
|
}
|
|
|
|
@Override
|
|
public void flushBatchOnCascade() {
|
|
transaction.flushBatchOnCascade();
|
|
}
|
|
|
|
@Override
|
|
public void flushBatchOnRollback() {
|
|
transaction.flushBatchOnRollback();
|
|
}
|
|
|
|
@Override
|
|
public void markNotQueryOnly() {
|
|
transaction.markNotQueryOnly();
|
|
}
|
|
|
|
@Override
|
|
public void checkBatchEscalationOnCollection() {
|
|
transaction.checkBatchEscalationOnCollection();
|
|
}
|
|
|
|
@Override
|
|
public void flushBatchOnCollection() {
|
|
transaction.flushBatchOnCollection();
|
|
}
|
|
|
|
@Override
|
|
public void close() {
|
|
transaction.close();
|
|
}
|
|
}
|