Skip to content

Commit dd7c9c7

Browse files
committed
[#2026] Small refactoring and clean ups
1 parent c885a3a commit dd7c9c7

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

Lines changed: 35 additions & 61 deletions
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,36 +80,35 @@ 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<?> ) {
106104
Collection<?> collection = (Collection<?>) target;
107105
collection.clear();
108-
return completedFuture( collection );
106+
return collection;
109107
}
110108
else if ( target instanceof Map<?, ?> ) {
111109
Map<?, ?> map = (Map<?, ?>) target;
112110
map.clear();
113-
return completedFuture( map );
111+
return map;
114112
}
115113
else {
116114
final PersistenceContext persistenceContext = session.getPersistenceContext();
@@ -127,18 +125,15 @@ else if ( target instanceof Map<?, ?> ) {
127125
arrayHolder.endRead();
128126
arrayHolder.dirty();
129127
persistenceContext.addCollectionHolder( collectionHolder );
130-
return completedFuture( arrayHolder.getArray() );
128+
return arrayHolder.getArray();
131129
}
132130
}
133131
}
134-
return nullFuture();
132+
return null;
135133
}
136134

137135
// 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(
142137
CollectionType type,
143138
Object original,
144139
Object target,
@@ -164,7 +159,7 @@ private static CompletionStage<Object> replaceUninitializedOriginal(
164159
collectionInfoString( type.getRole(), persistentCollection.getKey() ) );
165160
}
166161
}
167-
return completedFuture( target );
162+
return target;
168163
}
169164

170165
/**
@@ -196,11 +191,11 @@ private static CompletionStage<Object> replaceOriginal(
196191
//TODO: this is a little inefficient, don't need to do a whole
197192
// deep replaceElements() call
198193
return replaceElements( type, result, target, owner, copyCache, session )
199-
.thenCompose( unused -> {
194+
.thenApply( unused -> {
200195
if ( wasClean ) {
201196
( (PersistentCollection<?>) target ).clearDirty();
202197
}
203-
return completedFuture( target );
198+
return target;
204199
} );
205200
}
206201
else {
@@ -296,26 +291,22 @@ private static CompletionStage<Object> replaceMapTypeElements(
296291
Object owner,
297292
Map<Object, Object> copyCache,
298293
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() );
303296
final Map<Object, Object> result = target;
304297
result.clear();
305298

306299
return loop(
307300
original.entrySet(), entry -> {
308301
final Map.Entry<Object, Object> me = entry;
309302
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 ) )
319310
);
320311
}
321312
).thenApply( unused -> result );
@@ -340,14 +331,11 @@ private static CompletionStage<Object> replaceArrayTypeElements(
340331

341332
final Type elemType = type.getElementType( session.getFactory() );
342333
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+
} )
351339
).thenApply( unused -> result );
352340
}
353341

@@ -389,8 +377,7 @@ private static CompletionStage<Void> preserveSnapshot(
389377
final CollectionEntry ce = session.getPersistenceContextInternal().getCollectionEntry( result );
390378
if ( ce != null ) {
391379
return createSnapshot( original, result, elemType, owner, copyCache, session )
392-
.thenAccept( serializable ->
393-
ce.resetStoredSnapshot( result, serializable ) );
380+
.thenAccept( serializable -> ce.resetStoredSnapshot( result, serializable ) );
394381
}
395382
return voidFuture();
396383
}
@@ -434,14 +421,8 @@ private static CompletionStage<Serializable> createArraySnapshot(
434421
Map<Object, Object> copyCache,
435422
SessionImplementor session) {
436423
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 )
445426
).thenApply( unused -> array );
446427
}
447428

@@ -468,10 +449,9 @@ private static CompletionStage<Serializable> createMapSnapshot(
468449
return loop(
469450
map.entrySet(), entry ->
470451
getReplace( elemType, entry.getValue(), resultSnapshot, owner, session, copyCache )
471-
.thenCompose( newValue -> {
452+
.thenAccept( newValue -> {
472453
final Object key = entry.getKey();
473454
targetMap.put( key == entry.getValue() ? newValue : key, newValue );
474-
return voidFuture();
475455
} )
476456
).thenApply( v -> (Serializable) targetMap );
477457
}
@@ -487,12 +467,8 @@ private static CompletionStage<Serializable> createListSnapshot(
487467
SessionImplementor session) {
488468
final ArrayList<Object> targetList = new ArrayList<>( list.size() );
489469
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 )
496472
).thenApply( unused -> targetList );
497473
}
498474

@@ -507,10 +483,8 @@ private static Object instantiateResultIfNecessary(CollectionType type, Object o
507483
return target == null
508484
|| target == original
509485
|| 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;
513489
}
514-
515-
516490
}

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

Lines changed: 6 additions & 10 deletions
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)