66
77import java .lang .reflect .Array ;
88import java .util .ArrayList ;
9- import java .util .Comparator ;
109import java .util .HashMap ;
1110import java .util .Map ;
1211import java .util .TreeMap ;
4140import org .hibernate .internal .build .AllowReflection ;
4241import org .hibernate .jpa .event .spi .CallbackRegistry ;
4342
43+ import static java .util .Comparator .comparing ;
4444import static org .hibernate .event .spi .EventType .AUTO_FLUSH ;
4545import static org .hibernate .event .spi .EventType .CLEAR ;
4646import static org .hibernate .event .spi .EventType .DELETE ;
@@ -108,8 +108,7 @@ public <T> EventListenerGroup<T> getEventListenerGroup(EventType<T> eventType) {
108108
109109 @ Override
110110 public void addDuplicationStrategy (DuplicationStrategy strategy ) {
111- //noinspection rawtypes
112- for ( EventListenerGroup group : eventListeners ) {
111+ for ( var group : eventListeners ) {
113112 if ( group != null ) {
114113 group .addDuplicationStrategy ( strategy );
115114 }
@@ -126,7 +125,7 @@ public final <T> void setListeners(EventType<T> type, Class<? extends T>... list
126125 @ AllowReflection // Possible array types are registered in org.hibernate.graalvm.internal.StaticClassLists.typesNeedingArrayCopy
127126 private <T > T [] resolveListenerInstances (EventType <T > type , Class <? extends T >... listenerClasses ) {
128127 @ SuppressWarnings ("unchecked" )
129- T [] listeners = (T []) Array .newInstance ( type .baseListenerInterface (), listenerClasses .length );
128+ final T [] listeners = (T []) Array .newInstance ( type .baseListenerInterface (), listenerClasses .length );
130129 for ( int i = 0 ; i < listenerClasses .length ; i ++ ) {
131130 listeners [i ] = resolveListenerInstance ( listenerClasses [i ] );
132131 }
@@ -135,12 +134,15 @@ private <T> T[] resolveListenerInstances(EventType<T> type, Class<? extends T>..
135134
136135 private <T > T resolveListenerInstance (Class <T > listenerClass ) {
137136 @ SuppressWarnings ("unchecked" )
138- T listenerInstance = (T ) listenerClassToInstanceMap .get ( listenerClass );
137+ final T listenerInstance = (T ) listenerClassToInstanceMap .get ( listenerClass );
139138 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 ;
142145 }
143- return listenerInstance ;
144146 }
145147
146148 private <T > T instantiateListener (Class <T > listenerClass ) {
@@ -159,7 +161,7 @@ private <T> T instantiateListener(Class<T> listenerClass) {
159161 @ Override
160162 @ SafeVarargs
161163 public final <T > void setListeners (EventType <T > type , T ... listeners ) {
162- final EventListenerGroup < T > registeredListeners = getEventListenerGroup ( type );
164+ final var registeredListeners = getEventListenerGroup ( type );
163165 registeredListeners .clear ();
164166 if ( listeners != null ) {
165167 for ( T listener : listeners ) {
@@ -200,9 +202,8 @@ public static class Builder {
200202 private final CallbackRegistry callbackRegistry ;
201203 private final boolean jpaBootstrap ;
202204
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 ) );
206207
207208 public Builder (CallbackRegistry callbackRegistry , boolean jpaBootstrap ) {
208209 this .callbackRegistry = callbackRegistry ;
@@ -322,29 +323,22 @@ public <T> void prepareListeners(EventType<T> type, T defaultListener) {
322323 prepareListeners (
323324 type ,
324325 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 )
335331 );
336332 }
337333
338- public <T > void prepareListeners (
334+ <T > void prepareListeners (
339335 EventType <T > type ,
340336 T defaultListener ,
341337 Function <EventType <T >,EventListenerGroupImpl <T >> groupCreator ) {
342- final EventListenerGroupImpl <T > listenerGroup = groupCreator .apply ( type );
343-
338+ final var listenerGroup = groupCreator .apply ( type );
344339 if ( defaultListener != null ) {
345340 listenerGroup .appendListener ( defaultListener );
346341 }
347-
348342 listenerGroupMap .put ( type , listenerGroup );
349343 }
350344
@@ -355,24 +349,19 @@ public <T> EventListenerGroup<T> getListenerGroup(EventType<T> eventType) {
355349
356350 public EventListenerRegistry buildRegistry (Map <String , EventType <?>> registeredEventTypes ) {
357351 // 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 () ];
364357 int previous = -1 ;
365358 for ( int i = 0 ; i < eventTypeList .size (); i ++ ) {
366- final EventType <?> eventType = eventTypeList .get ( i );
367-
359+ final var eventType = eventTypeList .get ( i );
368360 assert i == eventType .ordinal ();
369361 assert i - 1 == previous ;
370-
371362 eventListeners [i ] = listenerGroupMap .get ( eventType );
372-
373363 previous = i ;
374364 }
375-
376365 return new EventListenerRegistryImpl ( eventListeners );
377366 }
378367 }
0 commit comments