/*
 * 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 <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.resource.transaction.backend.jta.internal.synchronization;

import org.hibernate.engine.transaction.internal.jta.JtaStatusHelper;
import org.hibernate.internal.CoreLogging;
import org.hibernate.internal.CoreMessageLogger;

Manages callbacks from the Synchronization registered by Hibernate.
Author:Steve Ebersole
/** * Manages callbacks from the {@link javax.transaction.Synchronization} registered by Hibernate. * * @author Steve Ebersole */
public class SynchronizationCallbackCoordinatorNonTrackingImpl implements SynchronizationCallbackCoordinator { private static final CoreMessageLogger log = CoreLogging.messageLogger( SynchronizationCallbackCoordinatorNonTrackingImpl.class ); private final SynchronizationCallbackTarget target; public SynchronizationCallbackCoordinatorNonTrackingImpl(SynchronizationCallbackTarget target) { this.target = target; reset(); } public void reset() { } @Override public void synchronizationRegistered() { // Nothing to do here } // sync callbacks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @Override public void beforeCompletion() { log.trace( "Synchronization coordinator: beforeCompletion()" ); if ( !target.isActive() ) { return; } target.beforeCompletion(); } @Override public void afterCompletion(int status) { log.tracef( "Synchronization coordinator: afterCompletion(status=%s)", status ); doAfterCompletion( JtaStatusHelper.isCommitted( status ), false ); } protected void doAfterCompletion(boolean successful, boolean delayed) { log.tracef( "Synchronization coordinator: doAfterCompletion(successful=%s, delayed=%s)", successful, delayed ); try { target.afterCompletion( successful, delayed ); } finally { reset(); } } @Override public void processAnyDelayedAfterCompletion() { } }