42
42
import static org .hibernate .pretty .MessageHelper .collectionInfoString ;
43
43
import static org .hibernate .reactive .util .impl .CompletionStages .completedFuture ;
44
44
import static org .hibernate .reactive .util .impl .CompletionStages .loop ;
45
- import static org .hibernate .reactive .util .impl .CompletionStages .nullFuture ;
46
45
import static org .hibernate .reactive .util .impl .CompletionStages .voidFuture ;
47
46
48
47
/**
@@ -81,34 +80,33 @@ public static CompletionStage<Object> replace(
81
80
Object owner ,
82
81
Map <Object , Object > copyCache ) throws HibernateException {
83
82
if ( original == null ) {
84
- return replaceNullOriginal ( target , session );
83
+ return completedFuture ( replaceNullOriginal ( target , session ) );
85
84
}
86
85
else if ( !Hibernate .isInitialized ( original ) ) {
87
- return replaceUninitializedOriginal ( type , original , target , session , copyCache );
86
+ return completedFuture ( replaceUninitializedOriginal ( type , original , target , session , copyCache ) );
88
87
}
89
88
else {
90
89
return replaceOriginal ( type , original , target , session , owner , copyCache );
91
90
}
92
91
}
93
92
94
93
// todo: make org.hibernate.type.CollectionType#replaceNullOriginal public ?
95
-
96
94
/**
97
95
* @see CollectionType#replaceNullOriginal(Object, SharedSessionContractImplementor)
98
96
*/
99
- private static CompletionStage < Object > replaceNullOriginal (
97
+ private static Object replaceNullOriginal (
100
98
Object target ,
101
99
SessionImplementor session ) {
102
100
if ( target == null ) {
103
- return nullFuture () ;
101
+ return null ;
104
102
}
105
103
else if ( target instanceof Collection <?> collection ) {
106
104
collection .clear ();
107
- return completedFuture ( collection ) ;
105
+ return collection ;
108
106
}
109
107
else if ( target instanceof Map <?, ?> map ) {
110
108
map .clear ();
111
- return completedFuture ( map ) ;
109
+ return map ;
112
110
}
113
111
else {
114
112
final PersistenceContext persistenceContext = session .getPersistenceContext ();
@@ -124,18 +122,15 @@ else if ( target instanceof Map<?, ?> map ) {
124
122
arrayHolder .endRead ();
125
123
arrayHolder .dirty ();
126
124
persistenceContext .addCollectionHolder ( collectionHolder );
127
- return completedFuture ( arrayHolder .getArray () );
125
+ return arrayHolder .getArray ();
128
126
}
129
127
}
130
128
}
131
- return nullFuture () ;
129
+ return null ;
132
130
}
133
131
134
132
// 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 (
139
134
CollectionType type ,
140
135
Object original ,
141
136
Object target ,
@@ -161,7 +156,7 @@ private static CompletionStage<Object> replaceUninitializedOriginal(
161
156
collectionInfoString ( type .getRole (), persistentCollection .getKey () ) );
162
157
}
163
158
}
164
- return completedFuture ( target ) ;
159
+ return target ;
165
160
}
166
161
167
162
/**
@@ -193,11 +188,11 @@ private static CompletionStage<Object> replaceOriginal(
193
188
//TODO: this is a little inefficient, don't need to do a whole
194
189
// deep replaceElements() call
195
190
return replaceElements ( type , result , target , owner , copyCache , session )
196
- .thenCompose ( unused -> {
191
+ .thenApply ( unused -> {
197
192
if ( wasClean ) {
198
193
( (PersistentCollection <?>) target ).clearDirty ();
199
194
}
200
- return completedFuture ( target ) ;
195
+ return target ;
201
196
} );
202
197
}
203
198
else {
@@ -291,26 +286,22 @@ private static CompletionStage<Object> replaceMapTypeElements(
291
286
Object owner ,
292
287
Map <Object , Object > copyCache ,
293
288
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 () );
298
291
final Map <Object , Object > result = target ;
299
292
result .clear ();
300
293
301
294
return loop (
302
295
original .entrySet (), entry -> {
303
296
final Map .Entry <Object , Object > me = entry ;
304
297
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 ) )
314
305
);
315
306
}
316
307
).thenApply ( unused -> result );
@@ -335,14 +326,11 @@ private static CompletionStage<Object> replaceArrayTypeElements(
335
326
336
327
final Type elemType = type .getElementType ( session .getFactory () );
337
328
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
+ } )
346
334
).thenApply ( unused -> result );
347
335
}
348
336
@@ -384,8 +372,7 @@ private static CompletionStage<Void> preserveSnapshot(
384
372
final CollectionEntry ce = session .getPersistenceContextInternal ().getCollectionEntry ( result );
385
373
if ( ce != null ) {
386
374
return createSnapshot ( original , result , elemType , owner , copyCache , session )
387
- .thenAccept ( serializable ->
388
- ce .resetStoredSnapshot ( result , serializable ) );
375
+ .thenAccept ( serializable -> ce .resetStoredSnapshot ( result , serializable ) );
389
376
}
390
377
return voidFuture ();
391
378
}
@@ -426,14 +413,8 @@ private static CompletionStage<Serializable> createArraySnapshot(
426
413
Map <Object , Object > copyCache ,
427
414
SessionImplementor session ) {
428
415
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 )
437
418
).thenApply ( unused -> array );
438
419
}
439
420
@@ -459,10 +440,9 @@ private static CompletionStage<Serializable> createMapSnapshot(
459
440
return loop (
460
441
map .entrySet (), entry ->
461
442
getReplace ( elemType , entry .getValue (), resultSnapshot , owner , session , copyCache )
462
- .thenCompose ( newValue -> {
443
+ .thenAccept ( newValue -> {
463
444
final Object key = entry .getKey ();
464
445
targetMap .put ( key == entry .getValue () ? newValue : key , newValue );
465
- return voidFuture ();
466
446
} )
467
447
).thenApply ( v -> (Serializable ) targetMap );
468
448
}
@@ -478,12 +458,8 @@ private static CompletionStage<Serializable> createListSnapshot(
478
458
SessionImplementor session ) {
479
459
final ArrayList <Object > targetList = new ArrayList <>( list .size () );
480
460
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 )
487
463
).thenApply ( unused -> targetList );
488
464
}
489
465
@@ -498,10 +474,8 @@ private static Object instantiateResultIfNecessary(CollectionType type, Object o
498
474
return target == null
499
475
|| target == original
500
476
|| 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 ;
504
480
}
505
-
506
-
507
481
}
0 commit comments