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,36 +80,35 @@ 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 <?> ) {
106
104
Collection <?> collection = (Collection <?>) target ;
107
105
collection .clear ();
108
- return completedFuture ( collection ) ;
106
+ return collection ;
109
107
}
110
108
else if ( target instanceof Map <?, ?> ) {
111
109
Map <?, ?> map = (Map <?, ?>) target ;
112
110
map .clear ();
113
- return completedFuture ( map ) ;
111
+ return map ;
114
112
}
115
113
else {
116
114
final PersistenceContext persistenceContext = session .getPersistenceContext ();
@@ -127,18 +125,15 @@ else if ( target instanceof Map<?, ?> ) {
127
125
arrayHolder .endRead ();
128
126
arrayHolder .dirty ();
129
127
persistenceContext .addCollectionHolder ( collectionHolder );
130
- return completedFuture ( arrayHolder .getArray () );
128
+ return arrayHolder .getArray ();
131
129
}
132
130
}
133
131
}
134
- return nullFuture () ;
132
+ return null ;
135
133
}
136
134
137
135
// todo: make org.hibernate.type.CollectionType#replaceUninitializedOriginal public
138
- /**
139
- * @see CollectionType#replaceNullOriginal(Object, SharedSessionContractImplementor)
140
- */
141
- private static CompletionStage <Object > replaceUninitializedOriginal (
136
+ private static Object replaceUninitializedOriginal (
142
137
CollectionType type ,
143
138
Object original ,
144
139
Object target ,
@@ -164,7 +159,7 @@ private static CompletionStage<Object> replaceUninitializedOriginal(
164
159
collectionInfoString ( type .getRole (), persistentCollection .getKey () ) );
165
160
}
166
161
}
167
- return completedFuture ( target ) ;
162
+ return target ;
168
163
}
169
164
170
165
/**
@@ -196,11 +191,11 @@ private static CompletionStage<Object> replaceOriginal(
196
191
//TODO: this is a little inefficient, don't need to do a whole
197
192
// deep replaceElements() call
198
193
return replaceElements ( type , result , target , owner , copyCache , session )
199
- .thenCompose ( unused -> {
194
+ .thenApply ( unused -> {
200
195
if ( wasClean ) {
201
196
( (PersistentCollection <?>) target ).clearDirty ();
202
197
}
203
- return completedFuture ( target ) ;
198
+ return target ;
204
199
} );
205
200
}
206
201
else {
@@ -296,26 +291,22 @@ private static CompletionStage<Object> replaceMapTypeElements(
296
291
Object owner ,
297
292
Map <Object , Object > copyCache ,
298
293
SessionImplementor session ) {
299
- final CollectionPersister persister =
300
- session .getFactory ().getRuntimeMetamodels ().getMappingMetamodel ()
301
- .getCollectionDescriptor ( type .getRole () );
302
-
294
+ final CollectionPersister persister = session .getFactory ().getRuntimeMetamodels ()
295
+ .getMappingMetamodel ().getCollectionDescriptor ( type .getRole () );
303
296
final Map <Object , Object > result = target ;
304
297
result .clear ();
305
298
306
299
return loop (
307
300
original .entrySet (), entry -> {
308
301
final Map .Entry <Object , Object > me = entry ;
309
302
return getReplace ( persister .getIndexType (), me .getKey (), owner , session , copyCache )
310
- .thenCompose ( key ->
311
- getReplace (
312
- persister .getElementType (),
313
- me .getValue (),
314
- owner ,
315
- session ,
316
- copyCache
317
- ).thenAccept ( value ->
318
- result .put ( key , value ) )
303
+ .thenCompose ( key -> getReplace (
304
+ persister .getElementType (),
305
+ me .getValue (),
306
+ owner ,
307
+ session ,
308
+ copyCache
309
+ ).thenAccept ( value -> result .put ( key , value ) )
319
310
);
320
311
}
321
312
).thenApply ( unused -> result );
@@ -340,14 +331,11 @@ private static CompletionStage<Object> replaceArrayTypeElements(
340
331
341
332
final Type elemType = type .getElementType ( session .getFactory () );
342
333
return loop (
343
- 0 , length , i -> {
344
- return getReplace ( elemType , Array .get ( original , i ), owner , session , copyCache )
345
- .thenApply ( o -> {
346
- Array .set ( result , i , o );
347
- return result ;
348
- }
349
- );
350
- }
334
+ 0 , length , i -> getReplace ( elemType , Array .get ( original , i ), owner , session , copyCache )
335
+ .thenApply ( o -> {
336
+ Array .set ( result , i , o );
337
+ return result ;
338
+ } )
351
339
).thenApply ( unused -> result );
352
340
}
353
341
@@ -389,8 +377,7 @@ private static CompletionStage<Void> preserveSnapshot(
389
377
final CollectionEntry ce = session .getPersistenceContextInternal ().getCollectionEntry ( result );
390
378
if ( ce != null ) {
391
379
return createSnapshot ( original , result , elemType , owner , copyCache , session )
392
- .thenAccept ( serializable ->
393
- ce .resetStoredSnapshot ( result , serializable ) );
380
+ .thenAccept ( serializable -> ce .resetStoredSnapshot ( result , serializable ) );
394
381
}
395
382
return voidFuture ();
396
383
}
@@ -434,14 +421,8 @@ private static CompletionStage<Serializable> createArraySnapshot(
434
421
Map <Object , Object > copyCache ,
435
422
SessionImplementor session ) {
436
423
return loop (
437
- 0 , array .length ,
438
- i ->
439
- getReplace ( elemType , array [i ], owner , session , copyCache )
440
- .thenCompose ( o -> {
441
- array [i ] = o ;
442
- return voidFuture ();
443
- }
444
- )
424
+ 0 , array .length , i -> getReplace ( elemType , array [i ], owner , session , copyCache )
425
+ .thenAccept ( o -> array [i ] = o )
445
426
).thenApply ( unused -> array );
446
427
}
447
428
@@ -468,10 +449,9 @@ private static CompletionStage<Serializable> createMapSnapshot(
468
449
return loop (
469
450
map .entrySet (), entry ->
470
451
getReplace ( elemType , entry .getValue (), resultSnapshot , owner , session , copyCache )
471
- .thenCompose ( newValue -> {
452
+ .thenAccept ( newValue -> {
472
453
final Object key = entry .getKey ();
473
454
targetMap .put ( key == entry .getValue () ? newValue : key , newValue );
474
- return voidFuture ();
475
455
} )
476
456
).thenApply ( v -> (Serializable ) targetMap );
477
457
}
@@ -487,12 +467,8 @@ private static CompletionStage<Serializable> createListSnapshot(
487
467
SessionImplementor session ) {
488
468
final ArrayList <Object > targetList = new ArrayList <>( list .size () );
489
469
return loop (
490
- list , obj ->
491
- getReplace ( elemType , obj , owner , session , copyCache )
492
- .thenCompose ( o -> {
493
- targetList .add ( o );
494
- return voidFuture ();
495
- } )
470
+ list , obj -> getReplace ( elemType , obj , owner , session , copyCache )
471
+ .thenAccept ( targetList ::add )
496
472
).thenApply ( unused -> targetList );
497
473
}
498
474
@@ -507,10 +483,8 @@ private static Object instantiateResultIfNecessary(CollectionType type, Object o
507
483
return target == null
508
484
|| target == original
509
485
|| target == UNFETCHED_PROPERTY
510
- || target instanceof PersistentCollection <?> && ( (PersistentCollection <?>) target ).isWrapper ( original ) ?
511
- type .instantiate ( -1 ) :
512
- target ;
486
+ || target instanceof PersistentCollection <?> && ( (PersistentCollection <?>) target ).isWrapper ( original )
487
+ ? type .instantiate ( -1 )
488
+ : target ;
513
489
}
514
-
515
-
516
490
}
0 commit comments