Skip to content

Commit 53bca24

Browse files
dreab8sebersole
authored andcommitted
HHH-18449 Remove deprecated Integrator#integrate form
1 parent fe3d8ac commit 53bca24

File tree

17 files changed

+302
-372
lines changed

17 files changed

+302
-372
lines changed

hibernate-core/src/main/java/org/hibernate/cache/internal/CollectionCacheInvalidator.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.hibernate.HibernateException;
1212
import org.hibernate.action.internal.CollectionAction;
1313
import org.hibernate.boot.Metadata;
14+
import org.hibernate.boot.spi.BootstrapContext;
1415
import org.hibernate.boot.spi.SessionFactoryOptions;
1516
import org.hibernate.cache.spi.access.CollectionDataAccess;
1617
import org.hibernate.cache.spi.access.SoftLock;
@@ -29,7 +30,6 @@
2930
import org.hibernate.metamodel.spi.MappingMetamodelImplementor;
3031
import org.hibernate.persister.collection.CollectionPersister;
3132
import org.hibernate.persister.entity.EntityPersister;
32-
import org.hibernate.service.spi.SessionFactoryServiceRegistry;
3333
import org.hibernate.tuple.entity.EntityMetamodel;
3434

3535
import org.jboss.logging.Logger;
@@ -53,13 +53,11 @@ public class CollectionCacheInvalidator
5353
public static boolean PROPAGATE_EXCEPTION = false;
5454

5555
@Override
56-
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory,
57-
SessionFactoryServiceRegistry serviceRegistry) {
58-
integrate( serviceRegistry, sessionFactory );
59-
}
60-
61-
@Override
62-
public void disintegrate(SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
56+
public void integrate(
57+
Metadata metadata,
58+
BootstrapContext bootstrapContext,
59+
SessionFactoryImplementor sessionFactory) {
60+
integrate( sessionFactory );
6361
}
6462

6563
@Override
@@ -82,7 +80,7 @@ public void onPostUpdate(PostUpdateEvent event) {
8280
evictCache( event.getEntity(), event.getPersister(), event.getSession(), event.getOldState() );
8381
}
8482

85-
private void integrate(SessionFactoryServiceRegistry serviceRegistry, SessionFactoryImplementor sessionFactory) {
83+
private void integrate(SessionFactoryImplementor sessionFactory) {
8684
final SessionFactoryOptions sessionFactoryOptions = sessionFactory.getSessionFactoryOptions();
8785
if ( !sessionFactoryOptions.isAutoEvictCollectionCache() ) {
8886
// feature is disabled
@@ -92,7 +90,7 @@ private void integrate(SessionFactoryServiceRegistry serviceRegistry, SessionFac
9290
// Nothing to do, if caching is disabled
9391
return;
9492
}
95-
EventListenerRegistry eventListenerRegistry = serviceRegistry.requireService( EventListenerRegistry.class );
93+
final EventListenerRegistry eventListenerRegistry = sessionFactory.getServiceRegistry().requireService( EventListenerRegistry.class );
9694
eventListenerRegistry.appendListeners( EventType.POST_INSERT, this );
9795
eventListenerRegistry.appendListeners( EventType.POST_DELETE, this );
9896
eventListenerRegistry.appendListeners( EventType.POST_UPDATE, this );

hibernate-core/src/main/java/org/hibernate/integrator/spi/Integrator.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
*/
77
package org.hibernate.integrator.spi;
88

9-
import org.hibernate.Incubating;
109
import org.hibernate.boot.Metadata;
1110
import org.hibernate.boot.spi.BootstrapContext;
1211
import org.hibernate.engine.spi.SessionFactoryImplementor;
@@ -33,36 +32,17 @@
3332
@JavaServiceLoadable
3433
public interface Integrator {
3534

36-
/**
37-
* Perform integration.
38-
*
39-
* @param metadata The "compiled" representation of the mapping information
40-
* @param sessionFactory The session factory being created
41-
* @param serviceRegistry The session factory's service registry
42-
* @deprecated - use
43-
*/
44-
@Deprecated(since = "6.0")
45-
default void integrate(
46-
Metadata metadata,
47-
SessionFactoryImplementor sessionFactory,
48-
SessionFactoryServiceRegistry serviceRegistry) {
49-
throw new UnsupportedOperationException( "Call to un-implemented deprecated legacy `Integrator#integrate` overload form" );
50-
}
51-
5235
/**
5336
* Perform integration.
5437
*
5538
* @param metadata The fully initialized boot-time mapping model
5639
* @param bootstrapContext The context for bootstrapping of the SessionFactory
5740
* @param sessionFactory The SessionFactory being created
5841
*/
59-
@Incubating
6042
default void integrate(
6143
Metadata metadata,
6244
BootstrapContext bootstrapContext,
6345
SessionFactoryImplementor sessionFactory) {
64-
// simply call the legacy one, keeping implementors bytecode compatible.
65-
integrate( metadata, sessionFactory, (SessionFactoryServiceRegistry) sessionFactory.getServiceRegistry() );
6646
}
6747

6848
/**

hibernate-core/src/test/java/org/hibernate/orm/test/cdi/general/hibernatesearch/HibernateSearchSimulatedIntegrator.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
package org.hibernate.orm.test.cdi.general.hibernatesearch;
88

99
import org.hibernate.boot.Metadata;
10+
import org.hibernate.boot.spi.BootstrapContext;
1011
import org.hibernate.engine.spi.SessionFactoryImplementor;
1112
import org.hibernate.integrator.spi.Integrator;
1213
import org.hibernate.resource.beans.container.spi.BeanContainer;
@@ -60,7 +61,10 @@ public boolean useJpaCompliantCreation() {
6061

6162
@Override
6263
@SuppressWarnings("unchecked")
63-
public void integrate(Metadata metadata, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
64+
public void integrate(
65+
Metadata metadata,
66+
BootstrapContext bootstrapContext,
67+
SessionFactoryImplementor sessionFactory) {
6468
ManagedBeanRegistry registry = sessionFactory.getServiceRegistry().getService( ManagedBeanRegistry.class );
6569

6670
BeanContainer beanContainer = registry.getBeanContainer();

hibernate-core/src/test/java/org/hibernate/orm/test/event/collection/detached/AggregatedCollectionEventListener.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import org.hibernate.HibernateException;
1414
import org.hibernate.boot.Metadata;
15+
import org.hibernate.boot.spi.BootstrapContext;
1516
import org.hibernate.engine.spi.SessionFactoryImplementor;
1617
import org.hibernate.event.service.spi.EventListenerRegistry;
1718
import org.hibernate.event.spi.AbstractCollectionEvent;
@@ -144,18 +145,19 @@ public AggregatedCollectionEventListener getListener() {
144145
@Override
145146
public void integrate(
146147
Metadata metadata,
147-
SessionFactoryImplementor sessionFactory,
148-
SessionFactoryServiceRegistry serviceRegistry) {
149-
integrate( serviceRegistry );
148+
BootstrapContext bootstrapContext,
149+
SessionFactoryImplementor sessionFactory) {
150+
integrate( sessionFactory );
150151
}
151152

152-
protected void integrate(SessionFactoryServiceRegistry serviceRegistry) {
153+
protected void integrate(SessionFactoryImplementor sessionFactory) {
153154
if ( listener != null ) {
154155
log.warn( "integrate called second time on testing collection listener Integrator (could be result of rebuilding SF on test failure)" );
155156
}
156157
listener = new AggregatedCollectionEventListener();
157158

158-
final EventListenerRegistry listenerRegistry = serviceRegistry.getService( EventListenerRegistry.class );
159+
final EventListenerRegistry listenerRegistry = sessionFactory.getServiceRegistry()
160+
.getService( EventListenerRegistry.class );
159161
listenerRegistry.appendListeners( EventType.INIT_COLLECTION, listener );
160162
listenerRegistry.appendListeners( EventType.PRE_COLLECTION_RECREATE, listener );
161163
listenerRegistry.appendListeners( EventType.POST_COLLECTION_RECREATE, listener );

hibernate-core/src/test/java/org/hibernate/orm/test/events/AutoFlushEventListenerTest.java

Lines changed: 89 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -9,107 +9,118 @@
99
import java.util.ArrayList;
1010
import java.util.List;
1111

12-
import jakarta.persistence.Entity;
13-
import jakarta.persistence.GeneratedValue;
14-
import jakarta.persistence.Id;
15-
1612
import org.hibernate.FlushMode;
1713
import org.hibernate.HibernateException;
18-
import org.hibernate.Session;
1914
import org.hibernate.boot.Metadata;
20-
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
15+
import org.hibernate.boot.spi.BootstrapContext;
2116
import org.hibernate.engine.spi.SessionFactoryImplementor;
2217
import org.hibernate.event.service.spi.EventListenerRegistry;
2318
import org.hibernate.event.spi.AutoFlushEvent;
2419
import org.hibernate.event.spi.AutoFlushEventListener;
2520
import org.hibernate.event.spi.EventType;
2621
import org.hibernate.integrator.spi.Integrator;
27-
import org.hibernate.service.spi.SessionFactoryServiceRegistry;
2822

29-
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
30-
import org.junit.Test;
23+
import org.hibernate.testing.orm.junit.BootstrapServiceRegistry;
24+
import org.hibernate.testing.orm.junit.DomainModel;
25+
import org.hibernate.testing.orm.junit.SessionFactory;
26+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
27+
import org.junit.jupiter.api.Test;
3128

32-
import static org.junit.Assert.assertEquals;
33-
import static org.junit.Assert.assertFalse;
34-
import static org.junit.Assert.assertTrue;
29+
import jakarta.persistence.Entity;
30+
import jakarta.persistence.GeneratedValue;
31+
import jakarta.persistence.Id;
3532

36-
public class AutoFlushEventListenerTest extends BaseCoreFunctionalTestCase {
33+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
34+
import static org.junit.jupiter.api.Assertions.assertFalse;
35+
import static org.junit.jupiter.api.Assertions.assertTrue;
3736

38-
private TheListener listener = new TheListener();
3937

40-
@Test
41-
public void testAutoFlushRequired() {
42-
listener.events.clear();
43-
44-
Session s = openSession();
45-
s.beginTransaction();
46-
47-
s.persist( new Entity1() );
48-
assertEquals( 0, listener.events.size() );
49-
50-
// An entity of this type was persisted; a flush is required
51-
session.createQuery( "select i from Entity1 i" )
52-
.setHibernateFlushMode( FlushMode.AUTO )
53-
.getResultList();
54-
assertEquals( 1, listener.events.size() );
55-
assertTrue( listener.events.get( 0 ).isFlushRequired() );
56-
57-
s.getTransaction().commit();
58-
assertEquals( 1, listener.events.size() );
59-
s.close();
60-
assertEquals( 1, listener.events.size() );
61-
}
38+
@DomainModel(
39+
annotatedClasses = {
40+
AutoFlushEventListenerTest.Entity1.class,
41+
AutoFlushEventListenerTest.Entity2.class
42+
}
43+
)
44+
@SessionFactory
45+
@BootstrapServiceRegistry(
46+
integrators = AutoFlushEventListenerTest.CustomLoadIntegrator.class
47+
)
48+
public class AutoFlushEventListenerTest {
49+
50+
private static final TheListener LISTENER = new TheListener();
6251

6352
@Test
64-
public void testAutoFlushNotRequired() {
65-
listener.events.clear();
66-
67-
Session s = openSession();
68-
s.beginTransaction();
69-
70-
s.persist( new Entity2() );
71-
assertEquals( 0, listener.events.size() );
72-
73-
// No entity of this type was persisted; no flush is required
74-
session.createQuery( "select i from Entity1 i" )
75-
.setHibernateFlushMode( FlushMode.AUTO )
76-
.getResultList();
77-
assertEquals( 1, listener.events.size() );
78-
assertFalse( listener.events.get( 0 ).isFlushRequired() );
79-
80-
s.getTransaction().commit();
81-
assertEquals( 1, listener.events.size() );
82-
s.close();
83-
assertEquals( 1, listener.events.size() );
53+
public void testAutoFlushRequired(SessionFactoryScope scope) {
54+
LISTENER.events.clear();
55+
56+
scope.inSession(
57+
session -> {
58+
session.beginTransaction();
59+
try {
60+
session.persist( new Entity1() );
61+
assertThat( LISTENER.events.size() ).isEqualTo( 0 );
62+
63+
// An entity of this type was persisted; a flush is required
64+
session.createQuery( "select i from Entity1 i", Entity1.class )
65+
.setHibernateFlushMode( FlushMode.AUTO )
66+
.getResultList();
67+
assertThat( LISTENER.events.size() ).isEqualTo( 1 );
68+
assertTrue( LISTENER.events.get( 0 ).isFlushRequired() );
69+
70+
session.getTransaction().commit();
71+
}
72+
catch (Exception e) {
73+
session.getTransaction().rollback();
74+
throw e;
75+
}
76+
assertThat( LISTENER.events.size() ).isEqualTo( 1 );
77+
}
78+
);
79+
assertThat( LISTENER.events.size() ).isEqualTo( 1 );
8480
}
8581

86-
@Override
87-
protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder builder) {
88-
super.prepareBootstrapRegistryBuilder( builder );
89-
builder.applyIntegrator(
90-
new Integrator() {
91-
@Override
92-
public void integrate(
93-
Metadata metadata,
94-
SessionFactoryImplementor sessionFactory,
95-
SessionFactoryServiceRegistry serviceRegistry) {
96-
serviceRegistry.getService( EventListenerRegistry.class ).appendListeners(
97-
EventType.AUTO_FLUSH,
98-
listener
99-
);
82+
@Test
83+
public void testAutoFlushNotRequired(SessionFactoryScope scope) {
84+
LISTENER.events.clear();
85+
86+
scope.inSession(
87+
session -> {
88+
session.beginTransaction();
89+
try {
90+
session.persist( new Entity2() );
91+
assertThat( LISTENER.events.size() ).isEqualTo( 0 );
92+
93+
// No entity of this type was persisted; no flush is required
94+
session.createQuery( "select i from Entity1 i", Entity1.class )
95+
.setHibernateFlushMode( FlushMode.AUTO )
96+
.getResultList();
97+
assertThat( LISTENER.events.size() ).isEqualTo( 1 );
98+
assertFalse( LISTENER.events.get( 0 ).isFlushRequired() );
99+
100+
session.getTransaction().commit();
100101
}
101-
102-
@Override
103-
public void disintegrate(SessionFactoryImplementor sessionFactory,
104-
SessionFactoryServiceRegistry serviceRegistry) {
102+
catch (Exception e) {
103+
session.getTransaction().rollback();
104+
throw e;
105105
}
106+
assertThat( LISTENER.events.size() ).isEqualTo( 1 );
106107
}
107108
);
109+
110+
assertThat( LISTENER.events.size() ).isEqualTo( 1 );
108111
}
109112

110-
@Override
111-
protected Class<?>[] getAnnotatedClasses() {
112-
return new Class[] { Entity1.class, Entity2.class };
113+
public static class CustomLoadIntegrator implements Integrator {
114+
@Override
115+
public void integrate(
116+
Metadata metadata,
117+
BootstrapContext bootstrapContext,
118+
SessionFactoryImplementor sessionFactory) {
119+
sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ).appendListeners(
120+
EventType.AUTO_FLUSH,
121+
LISTENER
122+
);
123+
}
113124
}
114125

115126
@Entity(name = "Entity1")
@@ -133,7 +144,7 @@ public Entity2() {
133144
}
134145

135146
private static class TheListener implements AutoFlushEventListener {
136-
private List<AutoFlushEvent> events = new ArrayList<>();
147+
final private List<AutoFlushEvent> events = new ArrayList<>();
137148

138149
@Override
139150
public void onAutoFlush(AutoFlushEvent event) throws HibernateException {

hibernate-core/src/test/java/org/hibernate/orm/test/events/CallbackTest.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.hibernate.SessionFactoryObserver;
1212
import org.hibernate.boot.Metadata;
1313
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
14+
import org.hibernate.boot.spi.BootstrapContext;
1415
import org.hibernate.cfg.Configuration;
1516
import org.hibernate.engine.spi.SessionFactoryImplementor;
1617
import org.hibernate.event.service.spi.EventListenerRegistry;
@@ -57,13 +58,13 @@ protected void prepareBootstrapRegistryBuilder(BootstrapServiceRegistryBuilder b
5758
@Override
5859
public void integrate(
5960
Metadata metadata,
60-
SessionFactoryImplementor sessionFactory,
61-
SessionFactoryServiceRegistry serviceRegistry) {
62-
integrate( serviceRegistry );
61+
BootstrapContext bootstrapContext,
62+
SessionFactoryImplementor sessionFactory) {
63+
integrate( sessionFactory );
6364
}
6465

65-
private void integrate(SessionFactoryServiceRegistry serviceRegistry) {
66-
serviceRegistry.getService( EventListenerRegistry.class ).setListeners(
66+
private void integrate(SessionFactoryImplementor sessionFactory) {
67+
sessionFactory.getServiceRegistry().getService( EventListenerRegistry.class ).setListeners(
6768
EventType.DELETE,
6869
listener
6970
);

0 commit comments

Comments
 (0)