Skip to content

Commit 60942b4

Browse files
committed
[#487] Add SessionFactoryManager class
We will use it to handle a unique session factory for tests in the same class.
1 parent a2d5d30 commit 60942b4

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/* Hibernate, Relational Persistence for Idiomatic Java
2+
*
3+
* SPDX-License-Identifier: LGPL-2.1-or-later
4+
* Copyright: Red Hat Inc. and Hibernate Authors
5+
*/
6+
package org.hibernate.reactive.testing;
7+
8+
import java.util.function.Supplier;
9+
10+
import org.hibernate.SessionFactory;
11+
import org.hibernate.engine.spi.SessionFactoryImplementor;
12+
import org.hibernate.reactive.pool.ReactiveConnectionPool;
13+
14+
/**
15+
* Managed the creation of a {@link SessionFactory} that can shared among tests.
16+
*/
17+
public class SessionFactoryManager {
18+
19+
private SessionFactory sessionFactory;
20+
private ReactiveConnectionPool poolProvider;
21+
22+
public SessionFactoryManager() {
23+
}
24+
25+
private boolean needsStart() {
26+
return sessionFactory == null || sessionFactory.isClosed();
27+
}
28+
29+
public void start(Supplier<SessionFactory> supplier) {
30+
if ( needsStart() ) {
31+
sessionFactory = supplier.get();
32+
poolProvider = sessionFactory
33+
.unwrap( SessionFactoryImplementor.class )
34+
.getServiceRegistry().getService( ReactiveConnectionPool.class );
35+
}
36+
}
37+
38+
public SessionFactory getHibernateSessionFactory() {
39+
return sessionFactory;
40+
}
41+
42+
public ReactiveConnectionPool getReactiveConnectionPool() {
43+
return poolProvider;
44+
}
45+
46+
public void stop() {
47+
if ( sessionFactory != null && sessionFactory.isOpen() ) {
48+
sessionFactory.close();
49+
}
50+
poolProvider = null;
51+
sessionFactory = null;
52+
}
53+
}

0 commit comments

Comments
 (0)