org.hibernate.resource.transaction.backend.jta.internal.synchronization.SynchronizationCallbackCoordinatorNonTrackingImpl Maven / Gradle / Ivy
/*
* 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;
import org.hibernate.engine.transaction.internal.jta.JtaStatusHelper;
import org.hibernate.internal.CoreLogging;
import org.hibernate.internal.CoreMessageLogger;
/**
* 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() {
}
}