4242import static org .hibernate .pretty .MessageHelper .collectionInfoString ;
4343import static org .hibernate .reactive .util .impl .CompletionStages .completedFuture ;
4444import static org .hibernate .reactive .util .impl .CompletionStages .loop ;
45- import static org .hibernate .reactive .util .impl .CompletionStages .nullFuture ;
4645import 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}
0 commit comments