package io.ebeaninternal.server.transaction; import io.ebeaninternal.api.SpiTransaction; import io.ebeaninternal.api.SpiTransactionScopeManager; /** * Manages the Transactions typically held in a ThreadLocal. */ public abstract class TransactionScopeManager implements SpiTransactionScopeManager { protected final TransactionManager transactionManager; protected final String serverName; public TransactionScopeManager(TransactionManager transactionManager) { this.transactionManager = transactionManager; this.serverName = transactionManager.getServerName(); } /** * Return the current Transaction for this serverName and Thread. */ public abstract SpiTransaction get(); /** * Set a new Transaction for this serverName and Thread. */ public abstract void set(SpiTransaction trans); /** * Commit the current transaction. */ public abstract void commit(); /** * Rollback the current transaction. */ public abstract void rollback(); /** * Rollback if required. */ public abstract void end(); /** * Replace the current transaction with this one. * <p> * Used for Background fetching and Nested transaction scopes. * </p> * <p> * Used for background fetching. Replaces the current transaction with a * 'dummy' transaction. The current transaction is given to the background * thread so it can continue the fetch. * </p> */ @Override public abstract void replace(SpiTransaction trans); }