/** Begins a new read-only transaction. */ public void beginReadTxn() { assert (!isTxnInProgress()); if (manageReposSession) { repos.beginReposSession(); } repos.beginReposTxn(false); state = State.READ_TXN; }
/** Rolls back the active transaction, if any. */ public void rollback() { if (!isTxnInProgress()) { return; } // NOTE jvs 12-Jan-2007: see comment in commit() for ordering rationale state = State.NO_TXN; repos.endReposTxn(true); if (manageReposSession) { repos.endReposSession(); } }
/** Commits the active transaction, if any. */ public void commit() { if (!isTxnInProgress()) { return; } // NOTE jvs 12-Jan-2007: change state BEFORE attempting // to end transaction; if endReposTxn throws an excn, // we're in an unknown state, but further calls could just // mask the original excn, so pretend we're back to // State.NO_TXN regardless. state = State.NO_TXN; repos.endReposTxn(false); if (manageReposSession) { repos.endReposSession(); } }
/** Begins a new read/write transaction. */ public void beginWriteTxn() { assert (!isTxnInProgress()); if (readOnly) { throw FarragoResource.instance().CatalogReadOnly.ex(); } if (manageReposSession) { repos.beginReposSession(); } // NOTE jvs 12-Jan-2007: don't change state until AFTER successfully // beginning a transaction; if beginReposTxn throws an excn, // we want to stay in State.NO_TXN repos.beginReposTxn(true); state = State.WRITE_TXN; }