package io.ebeaninternal.server.core;
import io.ebeaninternal.api.SpiTransaction;
/**
* Used to temporarily wrap a thread local based transaction.
* <p>
* Additionally notes if the transaction was created by the request in which
* case it needs to be commited after the request has been processed.
* </p>
*/
final class TransWrapper {
final SpiTransaction transaction;
private final boolean wasCreated;
/**
* Wrap the transaction indicating if it was just created.
*/
TransWrapper(SpiTransaction t, boolean created) {
transaction = t;
wasCreated = created;
}
void batchEscalateOnCollection() {
transaction.checkBatchEscalationOnCollection();
}
void flushBatchOnCollection() {
if (!wasCreated) {
transaction.flushBatchOnCollection();
}
}
void commitIfCreated() {
if (wasCreated) {
transaction.commit();
}
}
void rollbackIfCreated() {
if (wasCreated) {
transaction.rollbackIfActive();
}
}
/**
* Return true if the transaction was just created. If true it should be
* committed after the request has been processed.
*/
boolean wasCreated() {
return wasCreated;
}
}