org.hibernate.resource.transaction.backend.jta.internal.synchronization.SynchronizationCallbackTarget Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
JPMS Module-Info's for a few of the Jakarta Libraries just until they add them in themselves
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.resource.transaction.backend.jta.internal.synchronization;
/**
* Defines "inflow" for JTA transactions from the perspective of Hibernate's registered JTA Synchronization
* back into the TransactionCoordinator by means of the SynchronizationCallbackCoordinator.
*
* That's a mouthful :) The way it works is like this...
* -
* Hibernate will register a JTA {@link javax.transaction.Synchronization} implementation
* ({@link RegisteredSynchronization}) which allows
* it to listen for completion of the JTA transaction.
*
* -
* That RegisteredSynchronization is given a SynchronizationCallbackCoordinator which it uses
* to route the transaction completion calls back into Hibernate. The SynchronizationCallbackCoordinator
* contract applies various behaviors around this process. See the impls for details.
*
* -
* The SynchronizationCallbackCoordinator is handed a SynchronizationCallbackTarget which is the specific
* means for it to "route the transaction completion calls back into Hibernate". The SynchronizationCallbackTarget
* is most often the TransactionCoordinator impl or a direct delegate of the TransactionCoordinator impl. In
* that sense, SynchronizationCallbackTarget is the contract between the SynchronizationCallbackCoordinator
* and the TransactionCoordinator.
*
*
*
* @author Steve Ebersole
*/
public interface SynchronizationCallbackTarget {
/**
* Is the callback target still active? Generally this is checked by the caller prior to calling
* {@link #beforeCompletion} or {@link #afterCompletion}
*
* @return {@code true} indicates the target is active; {@code false} indicates it is not.
*/
boolean isActive();
/**
* Callback of before-completion.
*
* @see javax.transaction.Synchronization#beforeCompletion
*/
void beforeCompletion();
/**
* Callback of after-completion.
*
* @param successful Was the transaction successful?
*
* @see javax.transaction.Synchronization#afterCompletion
*/
void afterCompletion(boolean successful, boolean delayed);
}