Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -122,11 +122,11 @@ public void subscribeToEvent(Class<? extends SystemEvent> systemEventClass, Clas
Assert.notNull(systemEventClass, "systemEventClass");
Assert.notNull(listener, "listener");

// MYFACES-4757 use computeIfAbsent to prevent multiple threads from creating different lists
List<EventInfo> eventInfos = globalListeners.get(systemEventClass);
if (eventInfos == null)
{
eventInfos = new CopyOnWriteArrayList<>();
globalListeners.put(systemEventClass, eventInfos);
eventInfos = globalListeners.computeIfAbsent(systemEventClass, k -> new CopyOnWriteArrayList<>());
}

EventInfo eventInfo = new EventInfo();
Expand Down Expand Up @@ -239,9 +239,9 @@ protected SystemEvent processComponentAttachedListeners(FacesContext facesContex
return event;
}

for (int i = 0, size = listeners.size(); i < size; i++)
// MYFACES-4757: Use for each to prevent race condition
for (SystemEventListener listener : listeners)
{
SystemEventListener listener = listeners.get(i);
if (listener.isListenerForSource(source))
{
// Lazy construct the event; zhis same event instance must be passed to all listener instances.
Expand Down Expand Up @@ -353,9 +353,9 @@ protected SystemEvent processGlobalListeners(FacesContext facesContext, List<Eve
return event;
}

for (int i = 0, size = eventInfos.size(); i < size; i++)
// MYFACES-4757: Use for each to prevent race condition
for (EventInfo eventInfo : eventInfos)
{
EventInfo eventInfo = eventInfos.get(i);
if (eventInfo.sourceClass != null && !eventInfo.sourceClass.isAssignableFrom(sourceBaseType))
{
continue;
Expand Down
Loading