6
6
7
7
import java .lang .reflect .Array ;
8
8
import java .util .ArrayList ;
9
- import java .util .Comparator ;
10
9
import java .util .HashMap ;
11
10
import java .util .Map ;
12
11
import java .util .TreeMap ;
41
40
import org .hibernate .internal .build .AllowReflection ;
42
41
import org .hibernate .jpa .event .spi .CallbackRegistry ;
43
42
43
+ import static java .util .Comparator .comparing ;
44
44
import static org .hibernate .event .spi .EventType .AUTO_FLUSH ;
45
45
import static org .hibernate .event .spi .EventType .CLEAR ;
46
46
import static org .hibernate .event .spi .EventType .DELETE ;
@@ -108,8 +108,7 @@ public <T> EventListenerGroup<T> getEventListenerGroup(EventType<T> eventType) {
108
108
109
109
@ Override
110
110
public void addDuplicationStrategy (DuplicationStrategy strategy ) {
111
- //noinspection rawtypes
112
- for ( EventListenerGroup group : eventListeners ) {
111
+ for ( var group : eventListeners ) {
113
112
if ( group != null ) {
114
113
group .addDuplicationStrategy ( strategy );
115
114
}
@@ -126,7 +125,7 @@ public final <T> void setListeners(EventType<T> type, Class<? extends T>... list
126
125
@ AllowReflection // Possible array types are registered in org.hibernate.graalvm.internal.StaticClassLists.typesNeedingArrayCopy
127
126
private <T > T [] resolveListenerInstances (EventType <T > type , Class <? extends T >... listenerClasses ) {
128
127
@ SuppressWarnings ("unchecked" )
129
- T [] listeners = (T []) Array .newInstance ( type .baseListenerInterface (), listenerClasses .length );
128
+ final T [] listeners = (T []) Array .newInstance ( type .baseListenerInterface (), listenerClasses .length );
130
129
for ( int i = 0 ; i < listenerClasses .length ; i ++ ) {
131
130
listeners [i ] = resolveListenerInstance ( listenerClasses [i ] );
132
131
}
@@ -135,12 +134,15 @@ private <T> T[] resolveListenerInstances(EventType<T> type, Class<? extends T>..
135
134
136
135
private <T > T resolveListenerInstance (Class <T > listenerClass ) {
137
136
@ SuppressWarnings ("unchecked" )
138
- T listenerInstance = (T ) listenerClassToInstanceMap .get ( listenerClass );
137
+ final T listenerInstance = (T ) listenerClassToInstanceMap .get ( listenerClass );
139
138
if ( listenerInstance == null ) {
140
- listenerInstance = instantiateListener ( listenerClass );
141
- listenerClassToInstanceMap .put ( listenerClass , listenerInstance );
139
+ T newListenerInstance = instantiateListener ( listenerClass );
140
+ listenerClassToInstanceMap .put ( listenerClass , newListenerInstance );
141
+ return newListenerInstance ;
142
+ }
143
+ else {
144
+ return listenerInstance ;
142
145
}
143
- return listenerInstance ;
144
146
}
145
147
146
148
private <T > T instantiateListener (Class <T > listenerClass ) {
@@ -159,7 +161,7 @@ private <T> T instantiateListener(Class<T> listenerClass) {
159
161
@ Override
160
162
@ SafeVarargs
161
163
public final <T > void setListeners (EventType <T > type , T ... listeners ) {
162
- final EventListenerGroup < T > registeredListeners = getEventListenerGroup ( type );
164
+ final var registeredListeners = getEventListenerGroup ( type );
163
165
registeredListeners .clear ();
164
166
if ( listeners != null ) {
165
167
for ( T listener : listeners ) {
@@ -200,9 +202,8 @@ public static class Builder {
200
202
private final CallbackRegistry callbackRegistry ;
201
203
private final boolean jpaBootstrap ;
202
204
203
- private final Map <EventType <?>,EventListenerGroup <?>> listenerGroupMap = new TreeMap <>(
204
- Comparator .comparing ( EventType ::ordinal )
205
- );
205
+ private final Map <EventType <?>,EventListenerGroup <?>> listenerGroupMap =
206
+ new TreeMap <>( comparing ( EventType ::ordinal ) );
206
207
207
208
public Builder (CallbackRegistry callbackRegistry , boolean jpaBootstrap ) {
208
209
this .callbackRegistry = callbackRegistry ;
@@ -322,29 +323,22 @@ public <T> void prepareListeners(EventType<T> type, T defaultListener) {
322
323
prepareListeners (
323
324
type ,
324
325
defaultListener ,
325
- t -> {
326
- if ( type == EventType .POST_COMMIT_DELETE
327
- || type == EventType .POST_COMMIT_INSERT
328
- || type == EventType .POST_COMMIT_UPDATE ) {
329
- return new PostCommitEventListenerGroupImpl <>( type , callbackRegistry , jpaBootstrap );
330
- }
331
- else {
332
- return new EventListenerGroupImpl <>( type , callbackRegistry , jpaBootstrap );
333
- }
334
- }
326
+ t -> type == EventType .POST_COMMIT_DELETE
327
+ || type == EventType .POST_COMMIT_INSERT
328
+ || type == EventType .POST_COMMIT_UPDATE
329
+ ? new PostCommitEventListenerGroupImpl <>( type , callbackRegistry , jpaBootstrap )
330
+ : new EventListenerGroupImpl <>( type , callbackRegistry , jpaBootstrap )
335
331
);
336
332
}
337
333
338
- public <T > void prepareListeners (
334
+ <T > void prepareListeners (
339
335
EventType <T > type ,
340
336
T defaultListener ,
341
337
Function <EventType <T >,EventListenerGroupImpl <T >> groupCreator ) {
342
- final EventListenerGroupImpl <T > listenerGroup = groupCreator .apply ( type );
343
-
338
+ final var listenerGroup = groupCreator .apply ( type );
344
339
if ( defaultListener != null ) {
345
340
listenerGroup .appendListener ( defaultListener );
346
341
}
347
-
348
342
listenerGroupMap .put ( type , listenerGroup );
349
343
}
350
344
@@ -355,24 +349,19 @@ public <T> EventListenerGroup<T> getListenerGroup(EventType<T> eventType) {
355
349
356
350
public EventListenerRegistry buildRegistry (Map <String , EventType <?>> registeredEventTypes ) {
357
351
// validate contiguity of the event-type ordinals and build the EventListenerGroups array
358
-
359
- final ArrayList <EventType <?>> eventTypeList = new ArrayList <>( registeredEventTypes .values () );
360
- eventTypeList .sort ( Comparator .comparing ( EventType ::ordinal ) );
361
-
362
- final EventListenerGroup <?>[] eventListeners = new EventListenerGroup [ eventTypeList .size () ];
363
-
352
+ final ArrayList <EventType <?>> eventTypeList =
353
+ new ArrayList <>( registeredEventTypes .values () );
354
+ eventTypeList .sort ( comparing ( EventType ::ordinal ) );
355
+ final EventListenerGroup <?>[] eventListeners =
356
+ new EventListenerGroup [ eventTypeList .size () ];
364
357
int previous = -1 ;
365
358
for ( int i = 0 ; i < eventTypeList .size (); i ++ ) {
366
- final EventType <?> eventType = eventTypeList .get ( i );
367
-
359
+ final var eventType = eventTypeList .get ( i );
368
360
assert i == eventType .ordinal ();
369
361
assert i - 1 == previous ;
370
-
371
362
eventListeners [i ] = listenerGroupMap .get ( eventType );
372
-
373
363
previous = i ;
374
364
}
375
-
376
365
return new EventListenerRegistryImpl ( eventListeners );
377
366
}
378
367
}
0 commit comments