package co.codewizards.cloudstore.core.repo.local;
import co.codewizards.cloudstore.core.context.ExtensibleContext;
public interface LocalRepoTransaction extends AutoCloseable, DaoProvider, ExtensibleContext {
void commit();
boolean isActive();
void rollback();
void rollbackIfActive();
/**
* Equivalent to {@link #rollbackIfActive()}.
* <p>
* Implementations must make sure that invoking {@code close()} means exactly the same as invoking
* {@code rollbackIfActive()}. This method was added to make the usage of {@code LocalRepoTransaction}
* possible in a try-with-resources-clause. See {@link AutoCloseable} for more details. Here's a code
* example:
* <pre> try ( LocalRepoTransaction transaction = localRepoManager.beginWriteTransaction(); ) {
* // Write sth. into the database...
*
* // And don't forget to commit!
* transaction.commit();
* }</pre>
* <p>
* @see #rollbackIfActive()
*/
@Override
public void close();
long getLocalRevision();
LocalRepoManager getLocalRepoManager();
void flush();
void addPreCloseListener(LocalRepoTransactionPreCloseListener listener);
void addPostCloseListener(LocalRepoTransactionPostCloseListener listener);
}