package com.netifera.platform.api.events; import java.util.ArrayList; import java.util.List; public class EventListenerManager { private final List<IEventHandler> handlers = new ArrayList<IEventHandler>(); public void addListener(final IEventHandler listener) { synchronized(this) { handlers.add(listener); } } public void removeListener(final IEventHandler listener) { synchronized(this) { handlers.remove(listener); } } public void fireEvent(final IEvent event) { IEventHandler[] handlersCopy; synchronized(this) { handlersCopy = new IEventHandler[handlers.size()]; handlers.toArray(handlersCopy); } for(IEventHandler handler : handlersCopy) { handler.handleEvent(event); } } }