/* * Copyright 2015 Open Networking Laboratory * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.onosproject.store.service; /** * Provides a context for transactional operations. *
* A transaction context is a vehicle for grouping operations into a unit with the * properties of atomicity, isolation, and durability. Transactions also provide the * ability to maintain an application's invariants or integrity constraints, * supporting the property of consistency. Together these properties are known as ACID. *
* A transaction context provides a boundary within which transactions
* are run. It also is a place where all modifications made within a transaction
* are cached until the point when the transaction commits or aborts. It thus ensures
* isolation of work happening with in the transaction boundary. Within a transaction
* context isolation level is REPEATABLE_READS i.e. only data that is committed can be read.
* The only uncommitted data that can be read is the data modified by the current transaction.
*/
public interface TransactionContext {
/**
* Returns the unique transactionId.
*
* @return transaction id
*/
long transactionId();
/**
* Returns if this transaction context is open.
*
* @return true if open, false otherwise
*/
boolean isOpen();
/**
* Starts a new transaction.
*/
void begin();
/**
* Commits a transaction that was previously started thereby making its changes permanent
* and externally visible.
*
* @return true if this transaction succeeded, otherwise false.
*/
boolean commit();
/**
* Aborts any changes made in this transaction context and discarding all locally cached updates.
*/
void abort();
/**
* Returns a transactional map data structure with the specified name.
*
* @param