Skip to content

Commit 0878fbb

Browse files
committed
fix generic typing of Consumers to make them contravariant
1 parent b15368b commit 0878fbb

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

hibernate-core/src/main/java/org/hibernate/SessionFactory.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ public interface SessionFactory extends EntityManagerFactory, Referenceable, Ser
220220
/**
221221
* Open a {@link Session} and use it to perform an action.
222222
*/
223-
default void inSession(Consumer<Session> action) {
223+
default void inSession(Consumer<? super Session> action) {
224224
try ( Session session = openSession() ) {
225225
action.accept( session );
226226
}
@@ -231,7 +231,7 @@ default void inSession(Consumer<Session> action) {
231231
*
232232
* @since 6.3
233233
*/
234-
default void inStatelessSession(Consumer<StatelessSession> action) {
234+
default void inStatelessSession(Consumer<? super StatelessSession> action) {
235235
try ( StatelessSession session = openStatelessSession() ) {
236236
action.accept( session );
237237
}
@@ -244,7 +244,7 @@ default void inStatelessSession(Consumer<StatelessSession> action) {
244244
* @apiNote This method competes with the JPA-defined method
245245
* {@link #runInTransaction}
246246
*/
247-
default void inTransaction(Consumer<Session> action) {
247+
default void inTransaction(Consumer<? super Session> action) {
248248
inSession( session -> manageTransaction( session, session.beginTransaction(), action ) );
249249
}
250250

@@ -254,14 +254,14 @@ default void inTransaction(Consumer<Session> action) {
254254
*
255255
* @since 6.3
256256
*/
257-
default void inStatelessTransaction(Consumer<StatelessSession> action) {
257+
default void inStatelessTransaction(Consumer<? super StatelessSession> action) {
258258
inStatelessSession( session -> manageTransaction( session, session.beginTransaction(), action ) );
259259
}
260260

261261
/**
262262
* Open a {@link Session} and use it to obtain a value.
263263
*/
264-
default <R> R fromSession(Function<Session,R> action) {
264+
default <R> R fromSession(Function<? super Session,R> action) {
265265
try ( Session session = openSession() ) {
266266
return action.apply( session );
267267
}
@@ -272,7 +272,7 @@ default <R> R fromSession(Function<Session,R> action) {
272272
*
273273
* @since 6.3
274274
*/
275-
default <R> R fromStatelessSession(Function<StatelessSession,R> action) {
275+
default <R> R fromStatelessSession(Function<? super StatelessSession,R> action) {
276276
try ( StatelessSession session = openStatelessSession() ) {
277277
return action.apply( session );
278278
}
@@ -285,7 +285,7 @@ default <R> R fromStatelessSession(Function<StatelessSession,R> action) {
285285
* @apiNote This method competes with the JPA-defined method
286286
* {@link #callInTransaction}
287287
*/
288-
default <R> R fromTransaction(Function<Session,R> action) {
288+
default <R> R fromTransaction(Function<? super Session,R> action) {
289289
return fromSession( session -> manageTransaction( session, session.beginTransaction(), action ) );
290290
}
291291

@@ -295,7 +295,7 @@ default <R> R fromTransaction(Function<Session,R> action) {
295295
*
296296
* @since 6.3
297297
*/
298-
default <R> R fromStatelessTransaction(Function<StatelessSession,R> action) {
298+
default <R> R fromStatelessTransaction(Function<? super StatelessSession,R> action) {
299299
return fromStatelessSession( session -> manageTransaction( session, session.beginTransaction(), action ) );
300300
}
301301

hibernate-core/src/main/java/org/hibernate/internal/SessionFactoryImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -904,15 +904,14 @@ public <E> Map<String, EntityGraph<? extends E>> getNamedEntityGraphs(Class<E> e
904904
return getJpaMetamodel().getNamedEntityGraphs( entityType );
905905
}
906906

907-
@Override @SuppressWarnings({"unchecked", "rawtypes"})
907+
@Override
908908
public void runInTransaction(Consumer<EntityManager> work) {
909-
inTransaction( (Consumer) work );
909+
inTransaction( work );
910910
}
911911

912912
@Override
913913
public <R> R callInTransaction(Function<EntityManager, R> work) {
914-
//noinspection unchecked,rawtypes
915-
return (R) fromTransaction( (Function) work );
914+
return fromTransaction( work );
916915
}
917916

918917
@Override

0 commit comments

Comments
 (0)