oracle.toplink.essentials.sessions.ExternalTransactionController Maven / Gradle / Ivy
The newest version!
/*
* The contents of this file are subject to the terms
* of the Common Development and Distribution License
* (the "License"). You may not use this file except
* in compliance with the License.
*
* You can obtain a copy of the license at
* glassfish/bootstrap/legal/CDDLv1.0.txt or
* https://glassfish.dev.java.net/public/CDDLv1.0.html.
* See the License for the specific language governing
* permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL
* HEADER in each file and include the License file at
* glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable,
* add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your
* own identifying information: Portions Copyright [yyyy]
* [name of copyright owner]
*/
// Copyright (c) 1998, 2005, Oracle. All rights reserved.
package oracle.toplink.essentials.sessions;
import oracle.toplink.essentials.internal.sessions.AbstractSession;
import oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl;
import oracle.toplink.essentials.exceptions.*;
/**
*
* Purpose: Interface for external transaction management.
*
* Description: This interface represents a delegate to be used for external
* transaction management. The implementing class may interface to an OMG OTS service,
* a Java JTA service or a manufacturer's specific implementation of these services.
*
* Responsibilities:
*
* - Define the API for UnitOfWork to add a listener to the externally controlled transaction.
*
*/
public interface ExternalTransactionController {
/**
* INTERNAL:
* Begin a transaction externally.
* This allows for TopLink to force a JTS transaction.
*/
void beginTransaction(AbstractSession session);
/**
* INTERNAL:
* Commit a transaction externally.
* This allows for TopLink to force a JTS transaction.
*/
void commitTransaction(AbstractSession session);
/**
* INTERNAL:
* Return the active unit of work for the current active external transaction.
*/
UnitOfWorkImpl getActiveUnitOfWork();
/**
* INTERNAL:
* Return the manager's session.
*/
AbstractSession getSession();
/**
* INTERNAL:
* Register a listener on the unit of work.
* The listener will callback to the unit of work to tell it to commit and merge.
*/
void registerSynchronizationListener(UnitOfWorkImpl uow, AbstractSession session) throws DatabaseException;
/**
* INTERNAL:
* Rollback a transaction externally.
* This allows for TopLink to force a JTS transaction.
*/
void rollbackTransaction(AbstractSession session);
/**
* INTERNAL:
* Marks the external transaction for rollback only.
*/
void markTransactionForRollback();
/**
* INTERNAL:
* Set the manager's session.
*/
void setSession(AbstractSession session);
}