From 81a3541d2624d546efac71c75d8e0335bc1b7ee3 Mon Sep 17 00:00:00 2001 From: Gavin Date: Thu, 29 Dec 2022 00:09:14 +0100 Subject: [PATCH] clean up the package org.hibernate.engine.transaction - it had classes/interfaces which are already unused in H5! - move TransactionObserver and IsolationDelegate to a much more sensible location next to TransactionCoordinator This will break custom implementations of TransactionCoordinator but I highly doubt there are very many of those! --- .../NullSynchronizationException.java | 24 ------ .../internal/SynchronizationRegistryImpl.java | 84 ------------------- .../engine/transaction/spi/JoinStatus.java | 22 ----- .../spi/SynchronizationRegistry.java | 43 ---------- .../transaction/spi/TransactionObserver.java | 31 +------ .../ExecuteWithTemporaryTableHelper.java | 2 +- .../jdbc/internal/JdbcIsolationDelegate.java | 2 +- ...sourceLocalTransactionCoordinatorImpl.java | 5 +- .../jta/internal/JtaIsolationDelegate.java | 2 +- .../JtaTransactionCoordinatorImpl.java | 4 +- .../transaction/spi/IsolationDelegate.java | 2 +- .../spi/TransactionCoordinator.java | 4 - .../transaction/spi/TransactionObserver.java | 37 ++++++++ 13 files changed, 50 insertions(+), 212 deletions(-) delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/NullSynchronizationException.java delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/SynchronizationRegistryImpl.java delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/JoinStatus.java delete mode 100644 hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/SynchronizationRegistry.java rename hibernate-core/src/main/java/org/hibernate/{engine => resource}/transaction/spi/IsolationDelegate.java (96%) create mode 100644 hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionObserver.java diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/NullSynchronizationException.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/NullSynchronizationException.java deleted file mode 100644 index b94606628d..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/NullSynchronizationException.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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.engine.transaction.internal; - -import org.hibernate.HibernateException; - -/** - * Indicates an attempt to register a null synchronization. Basically a glorified {@link NullPointerException} - * - * @author Steve Ebersole - */ -public class NullSynchronizationException extends HibernateException { - public NullSynchronizationException() { - this( "Synchronization to register cannot be null" ); - } - - public NullSynchronizationException(String s) { - super( s ); - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/SynchronizationRegistryImpl.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/SynchronizationRegistryImpl.java deleted file mode 100644 index 1d793b4479..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/internal/SynchronizationRegistryImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * 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.engine.transaction.internal; - -import java.util.LinkedHashSet; -import jakarta.transaction.Synchronization; - -import org.hibernate.engine.transaction.spi.SynchronizationRegistry; -import org.hibernate.internal.CoreMessageLogger; - -import org.jboss.logging.Logger; - -/** - * Manages a registry of {@link Synchronization}s. - * - * @author Steve Ebersole - * - * @deprecated This appears to no longer be used - */ -@Deprecated(since = "6") -public class SynchronizationRegistryImpl implements SynchronizationRegistry { - - private static final CoreMessageLogger LOG = Logger.getMessageLogger( CoreMessageLogger.class, SynchronizationRegistryImpl.class.getName() ); - - private LinkedHashSet synchronizations; - - @Override - public void registerSynchronization(Synchronization synchronization) { - if ( synchronization == null ) { - throw new NullSynchronizationException(); - } - - if ( synchronizations == null ) { - synchronizations = new LinkedHashSet<>(); - } - - boolean added = synchronizations.add( synchronization ); - if ( !added ) { - LOG.synchronizationAlreadyRegistered( synchronization ); - } - } - - @Override - public void notifySynchronizationsBeforeTransactionCompletion() { - if ( synchronizations != null ) { - for ( Synchronization synchronization : synchronizations ) { - try { - synchronization.beforeCompletion(); - } - catch ( Throwable t ) { - LOG.synchronizationFailed( synchronization, t ); - } - } - } - } - - @Override - public void notifySynchronizationsAfterTransactionCompletion(int status) { - if ( synchronizations != null ) { - for ( Synchronization synchronization : synchronizations ) { - try { - synchronization.afterCompletion( status ); - } - catch ( Throwable t ) { - LOG.synchronizationFailed( synchronization, t ); - } - } - } - } - - /** - * Package-protected access to clear registered synchronizations. - */ - void clearSynchronizations() { - if ( synchronizations != null ) { - synchronizations.clear(); - synchronizations = null; - } - } -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/JoinStatus.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/JoinStatus.java deleted file mode 100644 index f24deb728a..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/JoinStatus.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * 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.engine.transaction.spi; - -/** - * See the JPA notion of joining a transaction for details. - * - * @author Emmanuel Bernard - * @author Steve Ebersole - * - * @deprecated This is no longer used - */ -@Deprecated(since = "6", forRemoval = true) -public enum JoinStatus { - NOT_JOINED, - MARKED_FOR_JOINED, - JOINED -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/SynchronizationRegistry.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/SynchronizationRegistry.java deleted file mode 100644 index 6e2e20cdce..0000000000 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/SynchronizationRegistry.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.engine.transaction.spi; - -import java.io.Serializable; -import jakarta.transaction.Synchronization; - -/** - * Manages a registry of {@link Synchronization}s. - * - * @author Steve Ebersole - * - * @deprecated This appears to no longer be used - */ -@Deprecated(since = "6") -public interface SynchronizationRegistry extends Serializable { - /** - * Register a user {@link Synchronization} callback for this transaction. - * - * @param synchronization The synchronization callback to register. - * - * @throws org.hibernate.HibernateException - */ - void registerSynchronization(Synchronization synchronization); - - /** - * Delegate {@link Synchronization#beforeCompletion} calls to the {@linkplain #registerSynchronization registered} - * {@link Synchronization}s - */ - void notifySynchronizationsBeforeTransactionCompletion(); - - /** - * Delegate {@link Synchronization#afterCompletion} calls to {@linkplain #registerSynchronization registered} - * {@link Synchronization}s - * - * @param status The transaction status (if known) per {@link jakarta.transaction.Status} - */ - void notifySynchronizationsAfterTransactionCompletion(int status); -} diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/TransactionObserver.java b/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/TransactionObserver.java index 3d034cebba..5d33d4a321 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/TransactionObserver.java +++ b/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/TransactionObserver.java @@ -7,33 +7,10 @@ package org.hibernate.engine.transaction.spi; /** - * Observer of internal transaction events. - *

- * A {@link TransactionObserver} must be registered with the {@link org.hibernate.resource.transaction.spi.TransactionCoordinator} - * by calling {@link org.hibernate.resource.transaction.spi.TransactionCoordinator#addObserver(TransactionObserver) addObserver()}. - * - * @apiNote It seems like this interface rightly belongs in {@link org.hibernate.resource.transaction.spi}. - * * @author Steve Ebersole + * + * @deprecated use {@link org.hibernate.resource.transaction.spi.TransactionObserver} */ -public interface TransactionObserver { - /** - * Callback for processing the beginning of a transaction. - *

- * Do not rely on this being called as the transaction may be started in a manner other than through the - * {@link org.hibernate.Transaction} API. - */ - void afterBegin(); - - /** - * Callback for processing the initial phase of transaction completion. - */ - void beforeCompletion(); - - /** - * Callback for processing the last phase of transaction completion. - * - * @param successful Was the transaction successful? - */ - void afterCompletion(boolean successful, boolean delayed); +@Deprecated(since = "6") +public interface TransactionObserver extends org.hibernate.resource.transaction.spi.TransactionObserver { } diff --git a/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/ExecuteWithTemporaryTableHelper.java b/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/ExecuteWithTemporaryTableHelper.java index 887bac0cae..6e816ef659 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/ExecuteWithTemporaryTableHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/query/sqm/mutation/internal/temptable/ExecuteWithTemporaryTableHelper.java @@ -20,7 +20,7 @@ import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; import org.hibernate.engine.jdbc.spi.JdbcServices; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.engine.transaction.spi.IsolationDelegate; +import org.hibernate.resource.transaction.spi.IsolationDelegate; import org.hibernate.metamodel.mapping.BasicValuedMapping; import org.hibernate.metamodel.mapping.EntityMappingType; import org.hibernate.metamodel.mapping.ModelPart; diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java index dd5eb83614..532986b0eb 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcIsolationDelegate.java @@ -13,7 +13,7 @@ import java.util.concurrent.Callable; import org.hibernate.HibernateException; import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; import org.hibernate.engine.jdbc.spi.SqlExceptionHelper; -import org.hibernate.engine.transaction.spi.IsolationDelegate; +import org.hibernate.resource.transaction.spi.IsolationDelegate; import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.jdbc.WorkExecutor; diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcResourceLocalTransactionCoordinatorImpl.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcResourceLocalTransactionCoordinatorImpl.java index 23395ed6c0..60e8b24323 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcResourceLocalTransactionCoordinatorImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jdbc/internal/JdbcResourceLocalTransactionCoordinatorImpl.java @@ -9,11 +9,11 @@ package org.hibernate.resource.transaction.backend.jdbc.internal; import java.util.ArrayList; import java.util.Collections; import java.util.List; + import jakarta.persistence.RollbackException; import jakarta.transaction.Status; -import org.hibernate.engine.transaction.spi.IsolationDelegate; -import org.hibernate.engine.transaction.spi.TransactionObserver; +import org.hibernate.resource.transaction.spi.IsolationDelegate; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.jpa.spi.JpaCompliance; import org.hibernate.resource.jdbc.spi.JdbcSessionOwner; @@ -24,6 +24,7 @@ import org.hibernate.resource.transaction.spi.SynchronizationRegistry; import org.hibernate.resource.transaction.spi.TransactionCoordinator; import org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder; import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner; +import org.hibernate.resource.transaction.spi.TransactionObserver; import org.hibernate.resource.transaction.spi.TransactionStatus; import static org.hibernate.internal.CoreLogging.messageLogger; diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java index 73bba9b9ec..a2001ed069 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaIsolationDelegate.java @@ -17,7 +17,7 @@ import java.util.concurrent.Callable; import org.hibernate.HibernateException; import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess; import org.hibernate.engine.jdbc.spi.SqlExceptionHelper; -import org.hibernate.engine.transaction.spi.IsolationDelegate; +import org.hibernate.resource.transaction.spi.IsolationDelegate; import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.internal.util.ExceptionHelper; diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaTransactionCoordinatorImpl.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaTransactionCoordinatorImpl.java index 419a8e3168..1cfb2afe45 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaTransactionCoordinatorImpl.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/backend/jta/internal/JtaTransactionCoordinatorImpl.java @@ -16,8 +16,7 @@ import jakarta.transaction.UserTransaction; import org.hibernate.HibernateException; import org.hibernate.boot.spi.SessionFactoryOptions; import org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform; -import org.hibernate.engine.transaction.spi.IsolationDelegate; -import org.hibernate.engine.transaction.spi.TransactionObserver; +import org.hibernate.resource.transaction.spi.IsolationDelegate; import org.hibernate.jpa.spi.JpaCompliance; import org.hibernate.resource.jdbc.spi.JdbcSessionContext; import org.hibernate.resource.jdbc.spi.JdbcSessionOwner; @@ -32,6 +31,7 @@ import org.hibernate.resource.transaction.spi.SynchronizationRegistry; import org.hibernate.resource.transaction.spi.TransactionCoordinator; import org.hibernate.resource.transaction.spi.TransactionCoordinatorBuilder; import org.hibernate.resource.transaction.spi.TransactionCoordinatorOwner; +import org.hibernate.resource.transaction.spi.TransactionObserver; import org.hibernate.resource.transaction.spi.TransactionStatus; import org.jboss.logging.Logger; diff --git a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/IsolationDelegate.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/IsolationDelegate.java similarity index 96% rename from hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/IsolationDelegate.java rename to hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/IsolationDelegate.java index 7b880f842f..06d3db04f8 100644 --- a/hibernate-core/src/main/java/org/hibernate/engine/transaction/spi/IsolationDelegate.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/IsolationDelegate.java @@ -4,7 +4,7 @@ * 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.engine.transaction.spi; +package org.hibernate.resource.transaction.spi; import org.hibernate.HibernateException; import org.hibernate.jdbc.WorkExecutorVisitable; diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionCoordinator.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionCoordinator.java index d9243da28f..12108843e8 100644 --- a/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionCoordinator.java +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionCoordinator.java @@ -6,8 +6,6 @@ */ package org.hibernate.resource.transaction.spi; -import org.hibernate.engine.transaction.spi.IsolationDelegate; -import org.hibernate.engine.transaction.spi.TransactionObserver; import org.hibernate.jpa.spi.JpaCompliance; /** @@ -145,7 +143,5 @@ public interface TransactionCoordinator { // org.hibernate.Transaction that might be best done by: // 1) exposing registerSynchronization here (if the Transaction is just passed this) // 2) using the exposed TransactionCoordinator#getLocalSynchronizations (if the Transaction is passed the TransactionCoordinator) - // - // if } } diff --git a/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionObserver.java b/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionObserver.java new file mode 100644 index 0000000000..9942760bfb --- /dev/null +++ b/hibernate-core/src/main/java/org/hibernate/resource/transaction/spi/TransactionObserver.java @@ -0,0 +1,37 @@ +/* + * 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.spi; + +/** + * Observer of internal transaction events. + *

+ * A {@link TransactionObserver} must be registered with the {@link TransactionCoordinator} + * by calling {@link TransactionCoordinator#addObserver(TransactionObserver) addObserver()}. + * + * @author Steve Ebersole + */ +public interface TransactionObserver { + /** + * Callback for processing the beginning of a transaction. + *

+ * Do not rely on this being called as the transaction may be started + * in some way other than via the {@link org.hibernate.Transaction} API. + */ + void afterBegin(); + + /** + * Callback for processing the initial phase of transaction completion. + */ + void beforeCompletion(); + + /** + * Callback for processing the last phase of transaction completion. + * + * @param successful Was the transaction successful? + */ + void afterCompletion(boolean successful, boolean delayed); +}