From 53bca2467dd092f5cc48a4b395a3199071ac39df Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Wed, 31 Jul 2024 11:40:36 +0200 Subject: [PATCH] HHH-18449 Remove deprecated Integrator#integrate form --- .../internal/CollectionCacheInvalidator.java | 18 +- .../hibernate/integrator/spi/Integrator.java | 20 --- .../HibernateSearchSimulatedIntegrator.java | 6 +- .../AggregatedCollectionEventListener.java | 12 +- .../events/AutoFlushEventListenerTest.java | 167 ++++++++++-------- .../orm/test/events/CallbackTest.java | 11 +- .../test/events/ClearEventListenerTest.java | 105 +++++------ .../events/LegacyPostCommitListenerTest.java | 29 ++- .../test/events/PostCommitListenerTest.java | 29 ++- .../TestAutoFlushBeforeQueryExecution.java | 20 +-- ...TestCollectionInitializingDuringFlush.java | 148 +++++++++------- .../DtoIntegratorProvider.java | 12 +- .../orm/test/jpa/model/AbstractJPATest.java | 45 +---- .../component/EagerKeyManyToOneTest.java | 18 +- .../orm/test/service/TestIntegrator.java | 31 ---- ...verManagerTypeCacheClearingIntegrator.java | 10 +- migration-guide.adoc | 1 + 17 files changed, 306 insertions(+), 376 deletions(-) delete mode 100644 hibernate-core/src/test/java/org/hibernate/orm/test/service/TestIntegrator.java diff --git a/hibernate-core/src/main/java/org/hibernate/cache/internal/CollectionCacheInvalidator.java b/hibernate-core/src/main/java/org/hibernate/cache/internal/CollectionCacheInvalidator.java index a349e54511..8188d3194c 100644 --- a/hibernate-core/src/main/java/org/hibernate/cache/internal/CollectionCacheInvalidator.java +++ b/hibernate-core/src/main/java/org/hibernate/cache/internal/CollectionCacheInvalidator.java @@ -11,6 +11,7 @@ import java.util.Set; import org.hibernate.HibernateException; import org.hibernate.action.internal.CollectionAction; import org.hibernate.boot.Metadata; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.boot.spi.SessionFactoryOptions; import org.hibernate.cache.spi.access.CollectionDataAccess; import org.hibernate.cache.spi.access.SoftLock; @@ -29,7 +30,6 @@ import org.hibernate.integrator.spi.Integrator; import org.hibernate.metamodel.spi.MappingMetamodelImplementor; import org.hibernate.persister.collection.CollectionPersister; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; import org.hibernate.tuple.entity.EntityMetamodel; import org.jboss.logging.Logger; @@ -53,13 +53,11 @@ public class CollectionCacheInvalidator public static boolean PROPAGATE_EXCEPTION = false; @Override - public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry, sessionFactory ); - } - - @Override - public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { + public void integrate( + Metadata metadata, + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } @Override @@ -82,7 +80,7 @@ public class CollectionCacheInvalidator evictCache( event.getEntity(), event.getPersister(), event.getSession(), event.getOldState() ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry, SessionFactoryImplementor sessionFactory) { + private void integrate(SessionFactoryImplementor sessionFactory) { final SessionFactoryOptions sessionFactoryOptions = sessionFactory.getSessionFactoryOptions(); if ( !sessionFactoryOptions.isAutoEvictCollectionCache() ) { // feature is disabled @@ -92,7 +90,7 @@ public class CollectionCacheInvalidator // Nothing to do, if caching is disabled return; } - EventListenerRegistry eventListenerRegistry = serviceRegistry.requireService( EventListenerRegistry.class ); + final EventListenerRegistry eventListenerRegistry = sessionFactory.getServiceRegistry().requireService( EventListenerRegistry.class ); eventListenerRegistry.appendListeners( EventType.POST_INSERT, this ); eventListenerRegistry.appendListeners( EventType.POST_DELETE, this ); eventListenerRegistry.appendListeners( EventType.POST_UPDATE, this ); diff --git a/hibernate-core/src/main/java/org/hibernate/integrator/spi/Integrator.java b/hibernate-core/src/main/java/org/hibernate/integrator/spi/Integrator.java index c5490c9224..8b5da2c0eb 100644 --- a/hibernate-core/src/main/java/org/hibernate/integrator/spi/Integrator.java +++ b/hibernate-core/src/main/java/org/hibernate/integrator/spi/Integrator.java @@ -6,7 +6,6 @@ */ package org.hibernate.integrator.spi; -import org.hibernate.Incubating; import org.hibernate.boot.Metadata; import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; @@ -33,22 +32,6 @@ import org.hibernate.service.spi.SessionFactoryServiceRegistry; @JavaServiceLoadable public interface Integrator { - /** - * Perform integration. - * - * @param metadata The "compiled" representation of the mapping information - * @param sessionFactory The session factory being created - * @param serviceRegistry The session factory's service registry - * @deprecated - use - */ - @Deprecated(since = "6.0") - default void integrate( - Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - throw new UnsupportedOperationException( "Call to un-implemented deprecated legacy `Integrator#integrate` overload form" ); - } - /** * Perform integration. * @@ -56,13 +39,10 @@ public interface Integrator { * @param bootstrapContext The context for bootstrapping of the SessionFactory * @param sessionFactory The SessionFactory being created */ - @Incubating default void integrate( Metadata metadata, BootstrapContext bootstrapContext, SessionFactoryImplementor sessionFactory) { - // simply call the legacy one, keeping implementors bytecode compatible. - integrate( metadata, sessionFactory, (SessionFactoryServiceRegistry) sessionFactory.getServiceRegistry() ); } /** diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/cdi/general/hibernatesearch/HibernateSearchSimulatedIntegrator.java b/hibernate-core/src/test/java/org/hibernate/orm/test/cdi/general/hibernatesearch/HibernateSearchSimulatedIntegrator.java index 593a2eace2..0efc80615c 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/cdi/general/hibernatesearch/HibernateSearchSimulatedIntegrator.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/cdi/general/hibernatesearch/HibernateSearchSimulatedIntegrator.java @@ -7,6 +7,7 @@ package org.hibernate.orm.test.cdi.general.hibernatesearch; import org.hibernate.boot.Metadata; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.integrator.spi.Integrator; import org.hibernate.resource.beans.container.spi.BeanContainer; @@ -60,7 +61,10 @@ public class HibernateSearchSimulatedIntegrator implements Integrator, BeanConta @Override @SuppressWarnings("unchecked") - public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { + public void integrate( + Metadata metadata, + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { ManagedBeanRegistry registry = sessionFactory.getServiceRegistry().getService( ManagedBeanRegistry.class ); BeanContainer beanContainer = registry.getBeanContainer(); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/event/collection/detached/AggregatedCollectionEventListener.java b/hibernate-core/src/test/java/org/hibernate/orm/test/event/collection/detached/AggregatedCollectionEventListener.java index 14bcd05b8c..1b3b4a8f40 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/event/collection/detached/AggregatedCollectionEventListener.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/event/collection/detached/AggregatedCollectionEventListener.java @@ -12,6 +12,7 @@ import java.util.List; import org.hibernate.HibernateException; import org.hibernate.boot.Metadata; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.AbstractCollectionEvent; @@ -144,18 +145,19 @@ public class AggregatedCollectionEventListener @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - protected void integrate(SessionFactoryServiceRegistry serviceRegistry) { + protected void integrate(SessionFactoryImplementor sessionFactory) { if ( listener != null ) { log.warn( "integrate called second time on testing collection listener Integrator (could be result of rebuilding SF on test failure)" ); } listener = new AggregatedCollectionEventListener(); - final EventListenerRegistry listenerRegistry = serviceRegistry.getService( EventListenerRegistry.class ); + final EventListenerRegistry listenerRegistry = sessionFactory.getServiceRegistry() + .getService( EventListenerRegistry.class ); listenerRegistry.appendListeners( EventType.INIT_COLLECTION, listener ); listenerRegistry.appendListeners( EventType.PRE_COLLECTION_RECREATE, listener ); listenerRegistry.appendListeners( EventType.POST_COLLECTION_RECREATE, listener ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/events/AutoFlushEventListenerTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/events/AutoFlushEventListenerTest.java index 2321cdf506..ea1440de41 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/events/AutoFlushEventListenerTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/events/AutoFlushEventListenerTest.java @@ -9,107 +9,118 @@ package org.hibernate.orm.test.events; import java.util.ArrayList; import java.util.List; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; - import org.hibernate.FlushMode; import org.hibernate.HibernateException; -import org.hibernate.Session; import org.hibernate.boot.Metadata; -import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.AutoFlushEvent; import org.hibernate.event.spi.AutoFlushEventListener; import org.hibernate.event.spi.EventType; import org.hibernate.integrator.spi.Integrator; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; -import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; -import org.junit.Test; +import org.hibernate.testing.orm.junit.BootstrapServiceRegistry; +import org.hibernate.testing.orm.junit.DomainModel; +import org.hibernate.testing.orm.junit.SessionFactory; +import org.hibernate.testing.orm.junit.SessionFactoryScope; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.Id; -public class AutoFlushEventListenerTest extends BaseCoreFunctionalTestCase { +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; - private TheListener listener = new TheListener(); + +@DomainModel( + annotatedClasses = { + AutoFlushEventListenerTest.Entity1.class, + AutoFlushEventListenerTest.Entity2.class + } +) +@SessionFactory +@BootstrapServiceRegistry( + integrators = AutoFlushEventListenerTest.CustomLoadIntegrator.class +) +public class AutoFlushEventListenerTest { + + private static final TheListener LISTENER = new TheListener(); @Test - public void testAutoFlushRequired() { - listener.events.clear(); + public void testAutoFlushRequired(SessionFactoryScope scope) { + LISTENER.events.clear(); - Session s = openSession(); - s.beginTransaction(); + scope.inSession( + session -> { + session.beginTransaction(); + try { + session.persist( new Entity1() ); + assertThat( LISTENER.events.size() ).isEqualTo( 0 ); - s.persist( new Entity1() ); - assertEquals( 0, listener.events.size() ); + // An entity of this type was persisted; a flush is required + session.createQuery( "select i from Entity1 i", Entity1.class ) + .setHibernateFlushMode( FlushMode.AUTO ) + .getResultList(); + assertThat( LISTENER.events.size() ).isEqualTo( 1 ); + assertTrue( LISTENER.events.get( 0 ).isFlushRequired() ); - // An entity of this type was persisted; a flush is required - session.createQuery( "select i from Entity1 i" ) - .setHibernateFlushMode( FlushMode.AUTO ) - .getResultList(); - assertEquals( 1, listener.events.size() ); - assertTrue( listener.events.get( 0 ).isFlushRequired() ); - - s.getTransaction().commit(); - assertEquals( 1, listener.events.size() ); - s.close(); - assertEquals( 1, listener.events.size() ); - } - - @Test - public void testAutoFlushNotRequired() { - listener.events.clear(); - - Session s = openSession(); - s.beginTransaction(); - - s.persist( new Entity2() ); - assertEquals( 0, listener.events.size() ); - - // No entity of this type was persisted; no flush is required - session.createQuery( "select i from Entity1 i" ) - .setHibernateFlushMode( FlushMode.AUTO ) - .getResultList(); - assertEquals( 1, listener.events.size() ); - assertFalse( listener.events.get( 0 ).isFlushRequired() ); - - s.getTransaction().commit(); - assertEquals( 1, listener.events.size() ); - s.close(); - assertEquals( 1, listener.events.size() ); - } - - @Override - protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) { - super.prepareBootstrapRegistryBuilder( builder ); - builder.applyIntegrator( - new Integrator() { - @Override - public void integrate( - Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - serviceRegistry.getService( EventListenerRegistry.class ).appendListeners( - EventType.AUTO_FLUSH, - listener - ); + session.getTransaction().commit(); } - - @Override - public void disintegrate(SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { + catch (Exception e) { + session.getTransaction().rollback(); + throw e; } + assertThat( LISTENER.events.size() ).isEqualTo( 1 ); } ); + assertThat( LISTENER.events.size() ).isEqualTo( 1 ); } - @Override - protected Class[] getAnnotatedClasses() { - return new Class[] { Entity1.class, Entity2.class }; + @Test + public void testAutoFlushNotRequired(SessionFactoryScope scope) { + LISTENER.events.clear(); + + scope.inSession( + session -> { + session.beginTransaction(); + try { + session.persist( new Entity2() ); + assertThat( LISTENER.events.size() ).isEqualTo( 0 ); + + // No entity of this type was persisted; no flush is required + session.createQuery( "select i from Entity1 i", Entity1.class ) + .setHibernateFlushMode( FlushMode.AUTO ) + .getResultList(); + assertThat( LISTENER.events.size() ).isEqualTo( 1 ); + assertFalse( LISTENER.events.get( 0 ).isFlushRequired() ); + + session.getTransaction().commit(); + } + catch (Exception e) { + session.getTransaction().rollback(); + throw e; + } + assertThat( LISTENER.events.size() ).isEqualTo( 1 ); + } + ); + + assertThat( LISTENER.events.size() ).isEqualTo( 1 ); + } + + public static class CustomLoadIntegrator implements Integrator { + @Override + public void integrate( + Metadata metadata, + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ).appendListeners( + EventType.AUTO_FLUSH, + LISTENER + ); + } } @Entity(name = "Entity1") @@ -133,7 +144,7 @@ public class AutoFlushEventListenerTest extends BaseCoreFunctionalTestCase { } private static class TheListener implements AutoFlushEventListener { - private List events = new ArrayList<>(); + final private List events = new ArrayList<>(); @Override public void onAutoFlush(AutoFlushEvent event) throws HibernateException { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/events/CallbackTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/events/CallbackTest.java index 908bfda5b3..41c79d40b6 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/events/CallbackTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/events/CallbackTest.java @@ -11,6 +11,7 @@ import org.hibernate.SessionFactory; import org.hibernate.SessionFactoryObserver; import org.hibernate.boot.Metadata; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.cfg.Configuration; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; @@ -57,13 +58,13 @@ public class CallbackTest extends BaseCoreFunctionalTestCase { @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { - serviceRegistry.getService( EventListenerRegistry.class ).setListeners( + private void integrate(SessionFactoryImplementor sessionFactory) { + sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ).setListeners( EventType.DELETE, listener ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/events/ClearEventListenerTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/events/ClearEventListenerTest.java index 5d9f180964..79cb650b74 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/events/ClearEventListenerTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/events/ClearEventListenerTest.java @@ -6,53 +6,67 @@ */ package org.hibernate.orm.test.events; -import org.hibernate.Session; import org.hibernate.boot.Metadata; -import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; -import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.ClearEvent; import org.hibernate.event.spi.ClearEventListener; import org.hibernate.event.spi.EventType; import org.hibernate.integrator.spi.Integrator; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; -import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; -import org.junit.Test; +import org.hibernate.testing.orm.junit.BootstrapServiceRegistry; +import org.hibernate.testing.orm.junit.DomainModel; +import org.hibernate.testing.orm.junit.SessionFactory; +import org.hibernate.testing.orm.junit.SessionFactoryScope; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertEquals; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; /** * @author Steve Ebersole */ -public class ClearEventListenerTest extends BaseCoreFunctionalTestCase { +@DomainModel +@SessionFactory +@BootstrapServiceRegistry(integrators = ClearEventListenerTest.CustomLoadIntegrator.class) +public class ClearEventListenerTest { @Test - public void testExplicitClear() { - listener.callCount = 0; + public void testExplicitClear(SessionFactoryScope scope) { + LISTENER.callCount = 0; - Session s = openSession(); - s.clear(); - assertEquals( 1, listener.callCount ); - s.close(); - assertEquals( 1, listener.callCount ); + scope.inSession( + session -> { + session.clear(); + assertThat( LISTENER.callCount ).isEqualTo( 1 ); + } + ); + assertThat( LISTENER.callCount ).isEqualTo( 1 ); } @Test - public void testAutoClear() { - listener.callCount = 0; + public void testAutoClear(SessionFactoryScope scope) { + LISTENER.callCount = 0; - Session s = openSession(); - ( (SessionImplementor) s ).setAutoClear( true ); - s.beginTransaction(); - assertEquals( 0, listener.callCount ); - s.getTransaction().commit(); - assertEquals( 1, listener.callCount ); - s.close(); - assertEquals( 1, listener.callCount ); + scope.inSession( + session -> { + session.setAutoClear( true ); + session.getTransaction().begin(); + try { + assertThat( LISTENER.callCount ).isEqualTo( 0 ); + session.getTransaction().commit(); + } + catch (Exception e) { + session.getTransaction().rollback(); + throw e; + } + assertThat( LISTENER.callCount ).isEqualTo( 1 ); + } + ); + + assertThat( LISTENER.callCount ).isEqualTo( 1 ); } - private TheListener listener = new TheListener(); + private static final TheListener LISTENER = new TheListener(); private static class TheListener implements ClearEventListener { private int callCount; @@ -63,31 +77,20 @@ public class ClearEventListenerTest extends BaseCoreFunctionalTestCase { } } - @Override - protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) { - super.prepareBootstrapRegistryBuilder( builder ); - builder.applyIntegrator( - new Integrator() { - @Override - public void integrate( - Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); - } + public static class CustomLoadIntegrator implements Integrator { + @Override + public void integrate( + Metadata metadata, + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); + } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { - serviceRegistry.getService( EventListenerRegistry.class ).setListeners( - EventType.CLEAR, - listener - ); - } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } - } - ); + private void integrate(SessionFactoryImplementor sessionFactory) { + sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ).setListeners( + EventType.CLEAR, + LISTENER + ); + } } } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/events/LegacyPostCommitListenerTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/events/LegacyPostCommitListenerTest.java index fa0578f4fa..5feb8fa2fd 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/events/LegacyPostCommitListenerTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/events/LegacyPostCommitListenerTest.java @@ -11,6 +11,7 @@ import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.boot.Metadata; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.EventType; @@ -22,7 +23,7 @@ import org.hibernate.event.spi.PostUpdateEvent; import org.hibernate.event.spi.PostUpdateEventListener; import org.hibernate.integrator.spi.Integrator; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; +import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; @@ -36,9 +37,9 @@ import org.junit.Test; * @author ShawnClowater */ public class LegacyPostCommitListenerTest extends BaseCoreFunctionalTestCase { - private PostInsertEventListener postCommitInsertEventListener = new LegacyPostCommitInsertEventListener(); - private PostDeleteEventListener postCommitDeleteEventListener = new LegacyPostCommitDeleteEventListener(); - private PostUpdateEventListener postCommitUpdateEventListener = new LegacyPostCommitUpdateEventListener(); + private final PostInsertEventListener postCommitInsertEventListener = new LegacyPostCommitInsertEventListener(); + private final PostDeleteEventListener postCommitDeleteEventListener = new LegacyPostCommitDeleteEventListener(); + private final PostUpdateEventListener postCommitUpdateEventListener = new LegacyPostCommitUpdateEventListener(); @Override protected void prepareTest() throws Exception { @@ -55,12 +56,13 @@ public class LegacyPostCommitListenerTest extends BaseCoreFunctionalTestCase { @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { + private void integrate(SessionFactoryImplementor sessionFactory) { + final ServiceRegistryImplementor serviceRegistry = sessionFactory.getServiceRegistry(); serviceRegistry.getService( EventListenerRegistry.class ).getEventListenerGroup( EventType.POST_COMMIT_DELETE ).appendListener( postCommitDeleteEventListener ); @@ -71,11 +73,6 @@ public class LegacyPostCommitListenerTest extends BaseCoreFunctionalTestCase { EventType.POST_COMMIT_INSERT ).appendListener( postCommitInsertEventListener ); } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } } ); } @@ -218,7 +215,7 @@ public class LegacyPostCommitListenerTest extends BaseCoreFunctionalTestCase { Assert.assertEquals( 1, ( (LegacyPostCommitDeleteEventListener) postCommitDeleteEventListener ).fired ); } - private class LegacyPostCommitDeleteEventListener implements PostDeleteEventListener { + private static class LegacyPostCommitDeleteEventListener implements PostDeleteEventListener { int fired; @Override @@ -232,7 +229,7 @@ public class LegacyPostCommitListenerTest extends BaseCoreFunctionalTestCase { } } - private class LegacyPostCommitUpdateEventListener implements PostUpdateEventListener { + private static class LegacyPostCommitUpdateEventListener implements PostUpdateEventListener { int fired; @Override @@ -246,7 +243,7 @@ public class LegacyPostCommitListenerTest extends BaseCoreFunctionalTestCase { } } - private class LegacyPostCommitInsertEventListener implements PostInsertEventListener { + private static class LegacyPostCommitInsertEventListener implements PostInsertEventListener { int fired; @Override diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/events/PostCommitListenerTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/events/PostCommitListenerTest.java index 53f0358e79..1791eecc2a 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/events/PostCommitListenerTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/events/PostCommitListenerTest.java @@ -11,6 +11,7 @@ import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.boot.Metadata; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.EventType; @@ -25,7 +26,7 @@ import org.hibernate.event.spi.PostUpdateEvent; import org.hibernate.event.spi.PostUpdateEventListener; import org.hibernate.integrator.spi.Integrator; import org.hibernate.persister.entity.EntityPersister; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; +import org.hibernate.service.spi.ServiceRegistryImplementor; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; @@ -39,9 +40,9 @@ import org.junit.Test; * @author ShawnClowater */ public class PostCommitListenerTest extends BaseCoreFunctionalTestCase { - private PostInsertEventListener postCommitInsertEventListener = new TestPostCommitInsertEventListener(); - private PostDeleteEventListener postCommitDeleteEventListener = new TestPostCommitDeleteEventListener(); - private PostUpdateEventListener postCommitUpdateEventListener = new TestPostCommitUpdateEventListener(); + private final PostInsertEventListener postCommitInsertEventListener = new TestPostCommitInsertEventListener(); + private final PostDeleteEventListener postCommitDeleteEventListener = new TestPostCommitDeleteEventListener(); + private final PostUpdateEventListener postCommitUpdateEventListener = new TestPostCommitUpdateEventListener(); @Override protected void prepareTest() throws Exception { @@ -61,12 +62,13 @@ public class PostCommitListenerTest extends BaseCoreFunctionalTestCase { @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { + private void integrate(SessionFactoryImplementor sessionFactory) { + final ServiceRegistryImplementor serviceRegistry = sessionFactory.getServiceRegistry(); serviceRegistry.getService( EventListenerRegistry.class ).getEventListenerGroup( EventType.POST_COMMIT_DELETE ).appendListener( postCommitDeleteEventListener ); @@ -77,11 +79,6 @@ public class PostCommitListenerTest extends BaseCoreFunctionalTestCase { EventType.POST_COMMIT_INSERT ).appendListener( postCommitInsertEventListener ); } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } } ); } @@ -227,7 +224,7 @@ public class PostCommitListenerTest extends BaseCoreFunctionalTestCase { Assert.assertEquals( 1, ((TestPostCommitDeleteEventListener) postCommitDeleteEventListener).failed ); } - private class TestPostCommitDeleteEventListener implements PostCommitDeleteEventListener { + private static class TestPostCommitDeleteEventListener implements PostCommitDeleteEventListener { int success; int failed; @@ -247,7 +244,7 @@ public class PostCommitListenerTest extends BaseCoreFunctionalTestCase { } } - private class TestPostCommitUpdateEventListener implements PostCommitUpdateEventListener { + private static class TestPostCommitUpdateEventListener implements PostCommitUpdateEventListener { int sucess; int failed; @@ -267,7 +264,7 @@ public class PostCommitListenerTest extends BaseCoreFunctionalTestCase { } } - private class TestPostCommitInsertEventListener implements PostCommitInsertEventListener { + private static class TestPostCommitInsertEventListener implements PostCommitInsertEventListener { int success; int failed; diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestAutoFlushBeforeQueryExecution.java b/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestAutoFlushBeforeQueryExecution.java index 02d017ee8b..448a7bd4ff 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestAutoFlushBeforeQueryExecution.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestAutoFlushBeforeQueryExecution.java @@ -15,6 +15,7 @@ import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.boot.Metadata; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.ActionQueue; import org.hibernate.engine.spi.PersistenceContext; import org.hibernate.engine.spi.SessionFactoryImplementor; @@ -47,9 +48,9 @@ public class TestAutoFlushBeforeQueryExecution extends BaseCoreFunctionalTestCas Publisher publisher = new Publisher(); publisher.setName( "name" ); s.persist( publisher ); - assertTrue( "autoflush entity create", s.createQuery( "from Publisher p" ).list().size() == 1 ); + assertTrue( "autoflush entity create", s.createQuery( "from Publisher p", Publisher.class ).list().size() == 1 ); publisher.setName( "name" ); - assertTrue( "autoflush entity update", s.createQuery( "from Publisher p where p.name='name'" ).list().size() == 1 ); + assertTrue( "autoflush entity update", s.createQuery( "from Publisher p where p.name='name'", Publisher.class ).list().size() == 1 ); txn.commit(); s.close(); @@ -214,21 +215,16 @@ public class TestAutoFlushBeforeQueryExecution extends BaseCoreFunctionalTestCas @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { - serviceRegistry.getService( EventListenerRegistry.class ) + private void integrate(SessionFactoryImplementor sessionFactory) { + sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ) .getEventListenerGroup( EventType.PRE_UPDATE ) .appendListener( InitializingPreUpdateEventListener.INSTANCE ); } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } } ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestCollectionInitializingDuringFlush.java b/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestCollectionInitializingDuringFlush.java index 497e9771eb..01c9a96192 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestCollectionInitializingDuringFlush.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/flush/TestCollectionInitializingDuringFlush.java @@ -7,93 +7,107 @@ package org.hibernate.orm.test.flush; import org.hibernate.Hibernate; -import org.hibernate.Session; import org.hibernate.boot.Metadata; -import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.EventType; import org.hibernate.event.spi.PreUpdateEvent; import org.hibernate.event.spi.PreUpdateEventListener; import org.hibernate.integrator.spi.Integrator; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; import org.hibernate.testing.TestForIssue; -import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; -import org.junit.Test; +import org.hibernate.testing.orm.junit.BootstrapServiceRegistry; +import org.hibernate.testing.orm.junit.DomainModel; +import org.hibernate.testing.orm.junit.SessionFactory; +import org.hibernate.testing.orm.junit.SessionFactoryScope; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Steve Ebersole */ -@TestForIssue( jiraKey = "HHH-2763" ) -public class TestCollectionInitializingDuringFlush extends BaseCoreFunctionalTestCase { +@TestForIssue(jiraKey = "HHH-2763") +@DomainModel( + annotatedClasses = { + Author.class, + Book.class, + Publisher.class + } +) +@SessionFactory +@BootstrapServiceRegistry(integrators = TestCollectionInitializingDuringFlush.CustomLoadIntegrator.class) +public class TestCollectionInitializingDuringFlush { + @Test - public void testInitializationDuringFlush() { + public void testInitializationDuringFlush(SessionFactoryScope scope) { assertFalse( InitializingPreUpdateEventListener.INSTANCE.executed ); assertFalse( InitializingPreUpdateEventListener.INSTANCE.foundAny ); - Session s = openSession(); - s.beginTransaction(); - Publisher publisher = new Publisher( "acme" ); + final Publisher publisher = new Publisher( "acme" ); Author author = new Author( "john" ); - author.setPublisher( publisher ); - publisher.getAuthors().add( author ); - author.getBooks().add( new Book( "Reflections on a Wimpy Kid", author ) ); - s.persist( author ); - s.getTransaction().commit(); - s.clear(); - - s = openSession(); - s.beginTransaction(); - publisher = (Publisher) s.get( Publisher.class, publisher.getId() ); - publisher.setName( "random nally" ); - s.flush(); - s.getTransaction().commit(); - s.clear(); - - s = openSession(); - s.beginTransaction(); - s.remove( author ); - s.getTransaction().commit(); - s.clear(); - - assertTrue( InitializingPreUpdateEventListener.INSTANCE.executed ); - assertTrue( InitializingPreUpdateEventListener.INSTANCE.foundAny ); - } - - @Override - protected Class[] getAnnotatedClasses() { - return new Class[] { Author.class, Book.class, Publisher.class }; - } - - @Override - protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) { - super.prepareBootstrapRegistryBuilder( builder ); - builder.applyIntegrator( - new Integrator() { - @Override - public void integrate( - Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); - } - - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { - serviceRegistry.getService( EventListenerRegistry.class ) - .getEventListenerGroup( EventType.PRE_UPDATE ) - .appendListener( InitializingPreUpdateEventListener.INSTANCE ); - } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } + scope.inTransaction( + session -> { + author.setPublisher( publisher ); + publisher.getAuthors().add( author ); + author.getBooks().add( new Book( "Reflections on a Wimpy Kid", author ) ); + session.persist( author ); } ); + + scope.inSession( + session -> { + session.beginTransaction(); + try { + Publisher p = session.get( Publisher.class, publisher.getId() ); + p.setName( "random nally" ); + session.flush(); + session.getTransaction().commit(); + } + catch (Exception e) { + session.getTransaction().rollback(); + throw e; + } + session.clear(); + + scope.inSession( + s -> { + s.beginTransaction(); + try { + s.remove( author ); + s.getTransaction().commit(); + } + catch (Exception e) { + session.getTransaction().rollback(); + throw e; + } + s.clear(); + + assertTrue( InitializingPreUpdateEventListener.INSTANCE.executed ); + assertTrue( InitializingPreUpdateEventListener.INSTANCE.foundAny ); + } + ); + + } + ); + } + + public static class CustomLoadIntegrator implements Integrator { + @Override + public void integrate( + Metadata metadata, + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); + } + + private void integrate(SessionFactoryImplementor sessionFactory) { + sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ) + .getEventListenerGroup( EventType.PRE_UPDATE ) + .appendListener( InitializingPreUpdateEventListener.INSTANCE ); + } } public static class InitializingPreUpdateEventListener implements PreUpdateEventListener { @@ -112,7 +126,7 @@ public class TestCollectionInitializingDuringFlush extends BaseCoreFunctionalTes // Iterate through all fields of the updated object for ( int i = 0; i < properties.length; i++ ) { if ( oldValues != null && oldValues[i] != null ) { - if ( ! Hibernate.isInitialized( oldValues[i] ) ) { + if ( !Hibernate.isInitialized( oldValues[i] ) ) { // force any proxies and/or collections to initialize to illustrate HHH-2763 foundAny = true; Hibernate.initialize( oldValues ); diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/integrationprovider/DtoIntegratorProvider.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/integrationprovider/DtoIntegratorProvider.java index f9a3f8c0a3..dc97f395c8 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/integrationprovider/DtoIntegratorProvider.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/integrationprovider/DtoIntegratorProvider.java @@ -10,10 +10,10 @@ import java.util.Collections; import java.util.List; import org.hibernate.boot.Metadata; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.integrator.spi.Integrator; import org.hibernate.jpa.boot.spi.IntegratorProvider; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; /** * @author Andrea Boriero @@ -26,16 +26,10 @@ public class DtoIntegratorProvider implements IntegratorProvider { @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { metadata.getImports().put( "PersonDto", PersonDto.class.getName() ); } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - } } ); } diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/model/AbstractJPATest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/model/AbstractJPATest.java index fae9eed2a5..5b4d111191 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/model/AbstractJPATest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/jpa/model/AbstractJPATest.java @@ -13,6 +13,7 @@ import org.hibernate.boot.Metadata; import org.hibernate.boot.SessionFactoryBuilder; import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.cfg.Environment; import org.hibernate.engine.spi.CascadingAction; import org.hibernate.engine.spi.CascadingActions; @@ -23,7 +24,6 @@ import org.hibernate.event.internal.DefaultFlushEventListener; import org.hibernate.event.internal.DefaultPersistEventListener; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.AutoFlushEventListener; -import org.hibernate.event.spi.EventSource; import org.hibernate.event.spi.EventType; import org.hibernate.event.spi.FlushEntityEventListener; import org.hibernate.event.spi.FlushEventListener; @@ -31,7 +31,6 @@ import org.hibernate.event.spi.PersistContext; import org.hibernate.event.spi.PersistEventListener; import org.hibernate.integrator.spi.Integrator; import org.hibernate.proxy.EntityNotFoundDelegate; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; import org.hibernate.testing.SkipLog; import org.hibernate.testing.orm.junit.BaseSessionFactoryFunctionalTest; @@ -55,7 +54,7 @@ public abstract class AbstractJPATest extends BaseSessionFactoryFunctionalTest { @Override protected void applySettings(StandardServiceRegistryBuilder builder) { - builder.applySetting( Environment.JPAQL_STRICT_COMPLIANCE, "true" ); + builder.applySetting( Environment.JPA_QUERY_COMPLIANCE, "true" ); builder.applySetting( Environment.USE_SECOND_LEVEL_CACHE, "false" ); } @@ -69,17 +68,17 @@ public abstract class AbstractJPATest extends BaseSessionFactoryFunctionalTest { public void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) { builder.applyIntegrator( new Integrator() { - @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { - EventListenerRegistry eventListenerRegistry = serviceRegistry.getService( EventListenerRegistry.class ); + private void integrate(SessionFactoryImplementor sessionFactory) { + EventListenerRegistry eventListenerRegistry = sessionFactory.getServiceRegistry().getService( + EventListenerRegistry.class ); eventListenerRegistry.setListeners( EventType.PERSIST, buildPersistEventListeners() ); eventListenerRegistry.setListeners( EventType.PERSIST_ONFLUSH, buildPersisOnFlushEventListeners() @@ -88,11 +87,6 @@ public abstract class AbstractJPATest extends BaseSessionFactoryFunctionalTest { eventListenerRegistry.setListeners( EventType.FLUSH, buildFlushEventListeners() ); eventListenerRegistry.setListeners( EventType.FLUSH_ENTITY, buildFlushEntityEventListeners() ); } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } } ); } @@ -141,31 +135,11 @@ public abstract class AbstractJPATest extends BaseSessionFactoryFunctionalTest { public static class JPAAutoFlushEventListener extends DefaultAutoFlushEventListener { // not sure why EM code has this ... public static final AutoFlushEventListener INSTANCE = new JPAAutoFlushEventListener(); - - @Override - protected CascadingAction getCascadingAction(EventSource session) { - return CascadingActions.PERSIST_ON_FLUSH; - } - - @Override - protected PersistContext getContext(EventSource session) { - return PersistContext.create(); - } } public static class JPAFlushEventListener extends DefaultFlushEventListener { // not sure why EM code has this ... public static final FlushEventListener INSTANCE = new JPAFlushEventListener(); - - @Override - protected CascadingAction getCascadingAction(EventSource session) { - return CascadingActions.PERSIST_ON_FLUSH; - } - - @Override - protected PersistContext getContext(EventSource session) { - return PersistContext.create(); - } } public static class JPAFlushEntityEventListener extends DefaultFlushEntityEventListener { @@ -176,8 +150,7 @@ public abstract class AbstractJPATest extends BaseSessionFactoryFunctionalTest { final int isolation; try (Session testSession = sessionFactory().openSession()) { isolation = testSession.doReturningWork( - connection -> - connection.getTransactionIsolation() + Connection::getTransactionIsolation ); } if ( isolation < Connection.TRANSACTION_READ_COMMITTED ) { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/keymanytoone/bidir/component/EagerKeyManyToOneTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/keymanytoone/bidir/component/EagerKeyManyToOneTest.java index f2370f2b66..b56c9f24d9 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/keymanytoone/bidir/component/EagerKeyManyToOneTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/keymanytoone/bidir/component/EagerKeyManyToOneTest.java @@ -12,6 +12,7 @@ import jakarta.persistence.criteria.CriteriaQuery; import org.hibernate.HibernateException; import org.hibernate.boot.Metadata; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.event.internal.DefaultLoadEventListener; import org.hibernate.event.service.spi.EventListenerRegistry; @@ -19,13 +20,11 @@ import org.hibernate.event.spi.EventType; import org.hibernate.event.spi.LoadEvent; import org.hibernate.event.spi.LoadEventListener; import org.hibernate.integrator.spi.Integrator; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; import org.hibernate.stat.spi.StatisticsImplementor; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.orm.junit.BootstrapServiceRegistry; import org.hibernate.testing.orm.junit.DomainModel; -import org.hibernate.testing.orm.junit.ServiceRegistry; import org.hibernate.testing.orm.junit.SessionFactory; import org.hibernate.testing.orm.junit.SessionFactoryScope; import org.junit.jupiter.api.AfterEach; @@ -49,22 +48,17 @@ public class EagerKeyManyToOneTest { @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - integrate( serviceRegistry ); + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { + integrate( sessionFactory ); } - private void integrate(SessionFactoryServiceRegistry serviceRegistry) { - serviceRegistry.getService( EventListenerRegistry.class ).prependListeners( + private void integrate(SessionFactoryImplementor sessionFactory) { + sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ).prependListeners( EventType.LOAD, new CustomLoadListener() ); } - - @Override - public void disintegrate( - SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } } @AfterEach diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/service/TestIntegrator.java b/hibernate-core/src/test/java/org/hibernate/orm/test/service/TestIntegrator.java deleted file mode 100644 index b9b802823c..0000000000 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/service/TestIntegrator.java +++ /dev/null @@ -1,31 +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.orm.test.service; - -import org.hibernate.boot.Metadata; -import org.hibernate.engine.spi.SessionFactoryImplementor; -import org.hibernate.integrator.spi.Integrator; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; - -/** - * @author Brett Meyer - */ -public class TestIntegrator implements Integrator { - @Override - public void integrate( - Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { - - } - - @Override - public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - - } - -} diff --git a/hibernate-testing/src/main/java/org/hibernate/testing/jdbc/SharedDriverManagerTypeCacheClearingIntegrator.java b/hibernate-testing/src/main/java/org/hibernate/testing/jdbc/SharedDriverManagerTypeCacheClearingIntegrator.java index 37dfa4d1c7..c68d74eafe 100644 --- a/hibernate-testing/src/main/java/org/hibernate/testing/jdbc/SharedDriverManagerTypeCacheClearingIntegrator.java +++ b/hibernate-testing/src/main/java/org/hibernate/testing/jdbc/SharedDriverManagerTypeCacheClearingIntegrator.java @@ -7,20 +7,16 @@ package org.hibernate.testing.jdbc; import org.hibernate.boot.Metadata; +import org.hibernate.boot.spi.BootstrapContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.integrator.spi.Integrator; -import org.hibernate.service.spi.SessionFactoryServiceRegistry; public class SharedDriverManagerTypeCacheClearingIntegrator implements Integrator { @Override public void integrate( Metadata metadata, - SessionFactoryImplementor sessionFactory, - SessionFactoryServiceRegistry serviceRegistry) { + BootstrapContext bootstrapContext, + SessionFactoryImplementor sessionFactory) { SharedDriverManagerConnectionProviderImpl.getInstance().clearTypeCache(); } - - @Override - public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { - } } diff --git a/migration-guide.adoc b/migration-guide.adoc index 934c47ba23..12839e0428 100644 --- a/migration-guide.adoc +++ b/migration-guide.adoc @@ -246,6 +246,7 @@ XML processing. * Removed `org.hibernate.Session#delete` in favor of `org.hibernate.Session#remove` * Removed `org.hibernate.annotations.CascadeType.DELETE` in favor of `org.hibernate.annotations.CascadeType#REMOVE` * Removed the attribute value from `@DynamicInsert` and `@DynamicUpdate` +* Removed `org.hibernate.integrator.spi.Integrator#integrate(Metadata,SessionFactoryImplementor,SessionFactoryServiceRegistry)` in favor of `org.hibernate.integrator.spi.Integrator#integrate(Metadata,BootstrapContext,SessionFactoryImplementor)` [[todo]]