Skip to content

Commit 04b5fcc

Browse files
committed
[#2006] Small refactoring and clean ups
1 parent 5ca4652 commit 04b5fcc

File tree

2 files changed

+41
-71
lines changed

2 files changed

+41
-71
lines changed

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/impl/CollectionTypes.java

+35-61
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import static org.hibernate.pretty.MessageHelper.collectionInfoString;
4343
import static org.hibernate.reactive.util.impl.CompletionStages.completedFuture;
4444
import static org.hibernate.reactive.util.impl.CompletionStages.loop;
45-
import static org.hibernate.reactive.util.impl.CompletionStages.nullFuture;
4645
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
4746

4847
/**
@@ -81,34 +80,33 @@ public static CompletionStage<Object> replace(
8180
Object owner,
8281
Map<Object, Object> copyCache) throws HibernateException {
8382
if ( original == null ) {
84-
return replaceNullOriginal( target, session );
83+
return completedFuture( replaceNullOriginal( target, session ) );
8584
}
8685
else if ( !Hibernate.isInitialized( original ) ) {
87-
return replaceUninitializedOriginal( type, original, target, session, copyCache );
86+
return completedFuture( replaceUninitializedOriginal( type, original, target, session, copyCache ) );
8887
}
8988
else {
9089
return replaceOriginal( type, original, target, session, owner, copyCache );
9190
}
9291
}
9392

9493
// todo: make org.hibernate.type.CollectionType#replaceNullOriginal public ?
95-
9694
/**
9795
* @see CollectionType#replaceNullOriginal(Object, SharedSessionContractImplementor)
9896
*/
99-
private static CompletionStage<Object> replaceNullOriginal(
97+
private static Object replaceNullOriginal(
10098
Object target,
10199
SessionImplementor session) {
102100
if ( target == null ) {
103-
return nullFuture();
101+
return null;
104102
}
105103
else if ( target instanceof Collection<?> collection ) {
106104
collection.clear();
107-
return completedFuture( collection );
105+
return collection;
108106
}
109107
else if ( target instanceof Map<?, ?> map ) {
110108
map.clear();
111-
return completedFuture( map );
109+
return map;
112110
}
113111
else {
114112
final PersistenceContext persistenceContext = session.getPersistenceContext();
@@ -124,18 +122,15 @@ else if ( target instanceof Map<?, ?> map ) {
124122
arrayHolder.endRead();
125123
arrayHolder.dirty();
126124
persistenceContext.addCollectionHolder( collectionHolder );
127-
return completedFuture( arrayHolder.getArray() );
125+
return arrayHolder.getArray();
128126
}
129127
}
130128
}
131-
return nullFuture();
129+
return null;
132130
}
133131

134132
// todo: make org.hibernate.type.CollectionType#replaceUninitializedOriginal public
135-
/**
136-
* @see CollectionType#replaceNullOriginal(Object, SharedSessionContractImplementor)
137-
*/
138-
private static CompletionStage<Object> replaceUninitializedOriginal(
133+
private static Object replaceUninitializedOriginal(
139134
CollectionType type,
140135
Object original,
141136
Object target,
@@ -161,7 +156,7 @@ private static CompletionStage<Object> replaceUninitializedOriginal(
161156
collectionInfoString( type.getRole(), persistentCollection.getKey() ) );
162157
}
163158
}
164-
return completedFuture( target );
159+
return target;
165160
}
166161

167162
/**
@@ -193,11 +188,11 @@ private static CompletionStage<Object> replaceOriginal(
193188
//TODO: this is a little inefficient, don't need to do a whole
194189
// deep replaceElements() call
195190
return replaceElements( type, result, target, owner, copyCache, session )
196-
.thenCompose( unused -> {
191+
.thenApply( unused -> {
197192
if ( wasClean ) {
198193
( (PersistentCollection<?>) target ).clearDirty();
199194
}
200-
return completedFuture( target );
195+
return target;
201196
} );
202197
}
203198
else {
@@ -291,26 +286,22 @@ private static CompletionStage<Object> replaceMapTypeElements(
291286
Object owner,
292287
Map<Object, Object> copyCache,
293288
SessionImplementor session) {
294-
final CollectionPersister persister =
295-
session.getFactory().getRuntimeMetamodels().getMappingMetamodel()
296-
.getCollectionDescriptor( type.getRole() );
297-
289+
final CollectionPersister persister = session.getFactory().getRuntimeMetamodels()
290+
.getMappingMetamodel().getCollectionDescriptor( type.getRole() );
298291
final Map<Object, Object> result = target;
299292
result.clear();
300293

301294
return loop(
302295
original.entrySet(), entry -> {
303296
final Map.Entry<Object, Object> me = entry;
304297
return getReplace( persister.getIndexType(), me.getKey(), owner, session, copyCache )
305-
.thenCompose( key ->
306-
getReplace(
307-
persister.getElementType(),
308-
me.getValue(),
309-
owner,
310-
session,
311-
copyCache
312-
).thenAccept( value ->
313-
result.put( key, value ) )
298+
.thenCompose( key -> getReplace(
299+
persister.getElementType(),
300+
me.getValue(),
301+
owner,
302+
session,
303+
copyCache
304+
).thenAccept( value -> result.put( key, value ) )
314305
);
315306
}
316307
).thenApply( unused -> result );
@@ -335,14 +326,11 @@ private static CompletionStage<Object> replaceArrayTypeElements(
335326

336327
final Type elemType = type.getElementType( session.getFactory() );
337328
return loop(
338-
0, length, i -> {
339-
return getReplace( elemType, Array.get( original, i ), owner, session, copyCache )
340-
.thenApply( o -> {
341-
Array.set( result, i, o );
342-
return result;
343-
}
344-
);
345-
}
329+
0, length, i -> getReplace( elemType, Array.get( original, i ), owner, session, copyCache )
330+
.thenApply( o -> {
331+
Array.set( result, i, o );
332+
return result;
333+
} )
346334
).thenApply( unused -> result );
347335
}
348336

@@ -384,8 +372,7 @@ private static CompletionStage<Void> preserveSnapshot(
384372
final CollectionEntry ce = session.getPersistenceContextInternal().getCollectionEntry( result );
385373
if ( ce != null ) {
386374
return createSnapshot( original, result, elemType, owner, copyCache, session )
387-
.thenAccept( serializable ->
388-
ce.resetStoredSnapshot( result, serializable ) );
375+
.thenAccept( serializable -> ce.resetStoredSnapshot( result, serializable ) );
389376
}
390377
return voidFuture();
391378
}
@@ -426,14 +413,8 @@ private static CompletionStage<Serializable> createArraySnapshot(
426413
Map<Object, Object> copyCache,
427414
SessionImplementor session) {
428415
return loop(
429-
0, array.length,
430-
i ->
431-
getReplace( elemType, array[i], owner, session, copyCache )
432-
.thenCompose( o -> {
433-
array[i] = o;
434-
return voidFuture();
435-
}
436-
)
416+
0, array.length, i -> getReplace( elemType, array[i], owner, session, copyCache )
417+
.thenAccept( o -> array[i] = o )
437418
).thenApply( unused -> array );
438419
}
439420

@@ -459,10 +440,9 @@ private static CompletionStage<Serializable> createMapSnapshot(
459440
return loop(
460441
map.entrySet(), entry ->
461442
getReplace( elemType, entry.getValue(), resultSnapshot, owner, session, copyCache )
462-
.thenCompose( newValue -> {
443+
.thenAccept( newValue -> {
463444
final Object key = entry.getKey();
464445
targetMap.put( key == entry.getValue() ? newValue : key, newValue );
465-
return voidFuture();
466446
} )
467447
).thenApply( v -> (Serializable) targetMap );
468448
}
@@ -478,12 +458,8 @@ private static CompletionStage<Serializable> createListSnapshot(
478458
SessionImplementor session) {
479459
final ArrayList<Object> targetList = new ArrayList<>( list.size() );
480460
return loop(
481-
list, obj ->
482-
getReplace( elemType, obj, owner, session, copyCache )
483-
.thenCompose( o -> {
484-
targetList.add( o );
485-
return voidFuture();
486-
} )
461+
list, obj -> getReplace( elemType, obj, owner, session, copyCache )
462+
.thenAccept( targetList::add )
487463
).thenApply( unused -> targetList );
488464
}
489465

@@ -498,10 +474,8 @@ private static Object instantiateResultIfNecessary(CollectionType type, Object o
498474
return target == null
499475
|| target == original
500476
|| target == UNFETCHED_PROPERTY
501-
|| target instanceof PersistentCollection<?> collection && collection.isWrapper( original ) ?
502-
type.instantiate( -1 ) :
503-
target;
477+
|| target instanceof PersistentCollection<?> collection && collection.isWrapper( original )
478+
? type.instantiate( -1 )
479+
: target;
504480
}
505-
506-
507481
}

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/impl/EntityTypes.java

+6-10
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,7 @@ public static CompletionStage<Object[]> replace(
160160
final Map<Object, Object> copyCache) {
161161
Object[] copied = new Object[original.length];
162162
return loop(
163-
0, types.length,
164-
i ->
165-
replace( original, target, types, session, owner, copyCache, i, copied )
166-
163+
0, types.length, i -> replace( original, target, types, session, owner, copyCache, i, copied )
167164
).thenApply( v -> copied );
168165
}
169166

@@ -181,9 +178,7 @@ public static CompletionStage<Object[]> replace(
181178
Object[] copied = new Object[original.length];
182179
return loop(
183180
0, types.length,
184-
i ->
185-
replace( original, target, types, session, owner, copyCache, foreignKeyDirection, i, copied )
186-
181+
i -> replace( original, target, types, session, owner, copyCache, foreignKeyDirection, i, copied )
187182
).thenApply( v -> copied );
188183
}
189184

@@ -274,15 +269,16 @@ private static CompletionStage<Object> resolveIdOrUniqueKey(
274269
// as a ComponentType. In the case that the entity is unfetched, we need to
275270
// explicitly fetch it here before calling replace(). (Note that in Hibernate
276271
// ORM this is unnecessary due to transparent lazy fetching.)
277-
return ( (ReactiveSessionImpl) session ).reactiveFetch( id, true )
272+
return ( (ReactiveSessionImpl) session )
273+
.reactiveFetch( id, true )
278274
.thenCompose( fetched -> {
279-
Object idOrUniqueKey = entityType.getIdentifierOrUniqueKeyType( session.getFactory() )
275+
Object idOrUniqueKey = entityType
276+
.getIdentifierOrUniqueKeyType( session.getFactory() )
280277
.replace( fetched, null, session, owner, copyCache );
281278
if ( idOrUniqueKey instanceof CompletionStage ) {
282279
return ( (CompletionStage<?>) idOrUniqueKey )
283280
.thenCompose( key -> resolve( entityType, key, owner, session ) );
284281
}
285-
286282
return resolve( entityType, idOrUniqueKey, owner, session );
287283
} );
288284
} );

0 commit comments

Comments
 (0)