Skip to content

Commit de384b2

Browse files
committed
two fixes to Session API
1. add Session.getFactory() and StatelessSession.getFactory() 2. fix the signature of mergeAll()
1 parent 924c829 commit de384b2

File tree

8 files changed

+66
-6
lines changed

8 files changed

+66
-6
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/Mutiny.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -684,7 +684,7 @@ default <T> Uni<T> find(Class<T> entityClass, Object id, LockModeType lockModeTy
684684
*
685685
* @see #merge(Object)
686686
*/
687-
<T> Uni<Void> mergeAll(T... entities);
687+
Uni<Void> mergeAll(Object... entities);
688688

689689
/**
690690
* Re-read the state of the given instance from the underlying database.
@@ -1352,6 +1352,11 @@ default Session setCacheRetrieveMode(CacheRetrieveMode cacheRetrieveMode) {
13521352
* @return false if {@link #close()} has been called
13531353
*/
13541354
boolean isOpen();
1355+
1356+
/**
1357+
* The {@link SessionFactory} which created this session.
1358+
*/
1359+
SessionFactory getFactory();
13551360
}
13561361

13571362
/**
@@ -1755,6 +1760,11 @@ default Uni<Void> refresh(Object entity, LockModeType lockModeType) {
17551760
* connection.
17561761
*/
17571762
Uni<Void> close();
1763+
1764+
/**
1765+
* The {@link SessionFactory} which created this session.
1766+
*/
1767+
SessionFactory getFactory();
17581768
}
17591769

17601770
/**

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinySessionImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,7 @@ public <T> Uni<T> merge(T entity) {
258258
}
259259

260260
@Override
261-
@SafeVarargs
262-
public final <T> Uni<Void> mergeAll(T... entity) {
261+
public final Uni<Void> mergeAll(Object... entity) {
263262
return uni( () -> applyToAll( delegate::reactiveMerge, entity ) );
264263
}
265264

@@ -523,6 +522,11 @@ public boolean isOpen() {
523522
return delegate.isOpen();
524523
}
525524

525+
@Override
526+
public Mutiny.SessionFactory getFactory() {
527+
return factory;
528+
}
529+
526530
@Override
527531
public <T> ResultSetMapping<T> getResultSetMapping(Class<T> resultType, String mappingName) {
528532
return delegate.getResultSetMapping( resultType, mappingName );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/mutiny/impl/MutinyStatelessSessionImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,11 @@ public boolean isOpen() {
268268
return delegate.isOpen();
269269
}
270270

271+
@Override
272+
public MutinySessionFactoryImpl getFactory() {
273+
return factory;
274+
}
275+
271276
@Override
272277
public <T> ResultSetMapping<T> getResultSetMapping(Class<T> resultType, String mappingName) {
273278
return delegate.getResultSetMapping( resultType, mappingName );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/Stage.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ default <T> CompletionStage<T> find(Class<T> entityClass, Object id, LockModeTyp
701701
*
702702
* @see #merge(Object)
703703
*/
704-
<T> CompletionStage<Void> merge(T... entities);
704+
CompletionStage<Void> merge(Object... entities);
705705

706706
/**
707707
* Re-read the state of the given instance from the underlying database.
@@ -1390,6 +1390,11 @@ default Session setCacheRetrieveMode(CacheRetrieveMode cacheRetrieveMode) {
13901390
* @return false if {@link #close()} has been called
13911391
*/
13921392
boolean isOpen();
1393+
1394+
/**
1395+
* The {@link SessionFactory} which created this session.
1396+
*/
1397+
SessionFactory getFactory();
13931398
}
13941399

13951400
/**
@@ -1802,6 +1807,11 @@ default CompletionStage<Void> refresh(Object entity, LockModeType lockModeType)
18021807
* connection.
18031808
*/
18041809
CompletionStage<Void> close();
1810+
1811+
/**
1812+
* The {@link SessionFactory} which created this session.
1813+
*/
1814+
SessionFactory getFactory();
18051815
}
18061816

18071817
/**

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/impl/StageSessionImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,8 +179,8 @@ public <T> CompletionStage<T> merge(T entity) {
179179
return delegate.reactiveMerge( entity );
180180
}
181181

182-
@Override @SafeVarargs
183-
public final <T> CompletionStage<Void> merge(T... entity) {
182+
@Override
183+
public final CompletionStage<Void> merge(Object... entity) {
184184
return applyToAll( delegate::reactiveMerge, entity );
185185
}
186186

@@ -460,6 +460,11 @@ public boolean isOpen() {
460460
return delegate.isOpen();
461461
}
462462

463+
@Override
464+
public Stage.SessionFactory getFactory() {
465+
return delegate.getFactory().unwrap( Stage.SessionFactory.class );
466+
}
467+
463468
@Override
464469
public <T> ResultSetMapping<T> getResultSetMapping(Class<T> resultType, String mappingName) {
465470
return delegate.getResultSetMapping( resultType, mappingName );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/stage/impl/StageStatelessSessionImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,11 @@ public boolean isOpen() {
141141
return delegate.isOpen();
142142
}
143143

144+
@Override
145+
public Stage.SessionFactory getFactory() {
146+
return delegate.getFactory().unwrap( Stage.SessionFactory.class );
147+
}
148+
144149
private Transaction<?> currentTransaction;
145150

146151
@Override

hibernate-reactive-core/src/test/java/org/hibernate/reactive/MutinySessionTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,16 @@ public void reactiveClose(VertxTestContext context) {
520520
);
521521
}
522522

523+
@Test void testFactory(VertxTestContext context) {
524+
test( context, getMutinySessionFactory().withSession( session -> {
525+
session.getFactory().getCache().evictAll();
526+
session.getFactory().getMetamodel().entity(GuineaPig.class);
527+
session.getFactory().getCriteriaBuilder().createQuery(GuineaPig.class);
528+
session.getFactory().getStatistics().isStatisticsEnabled();
529+
return Uni.createFrom().voidItem();
530+
} ) );
531+
}
532+
523533
@Test
524534
public void testMetamodel() {
525535
EntityType<GuineaPig> pig = getSessionFactory().getMetamodel().entity(GuineaPig.class);

hibernate-reactive-core/src/test/java/org/hibernate/reactive/ReactiveSessionTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.hibernate.reactive.common.AffectedEntities;
1515
import org.hibernate.reactive.stage.Stage;
1616

17+
import org.hibernate.reactive.util.impl.CompletionStages;
1718
import org.junit.jupiter.api.Assertions;
1819
import org.junit.jupiter.api.Test;
1920

@@ -770,6 +771,16 @@ public void testMetamodel() {
770771
assertEquals( "GuineaPig", pig.getName() );
771772
}
772773

774+
@Test void testFactory(VertxTestContext context) {
775+
test( context, getSessionFactory().withSession( session -> {
776+
session.getFactory().getCache().evictAll();
777+
session.getFactory().getMetamodel().entity(GuineaPig.class);
778+
session.getFactory().getCriteriaBuilder().createQuery(GuineaPig.class);
779+
session.getFactory().getStatistics().isStatisticsEnabled();
780+
return CompletionStages.voidFuture();
781+
} ) );
782+
}
783+
773784
@Test
774785
public void testTransactionPropagation(VertxTestContext context) {
775786
test( context, getSessionFactory().withTransaction(

0 commit comments

Comments
 (0)