package uk.co.acuminous.julez.event.pipe; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; import uk.co.acuminous.julez.event.Event; import uk.co.acuminous.julez.event.handler.EventHandler; public class FanOutPipe implements EventPipe { protected final Collection<EventHandler> handlers; public FanOutPipe() { this(new HashSet<EventHandler>()); } public FanOutPipe(EventHandler... handlers) { this.handlers = Arrays.asList(handlers); } public FanOutPipe(Collection<EventHandler> handlers) { this.handlers = handlers; } @Override public void onEvent(Event event) { for (EventHandler handler : handlers) { handler.onEvent(event); } } @Override public FanOutPipe register(EventHandler handler) { handlers.add(handler); return this; } public FanOutPipe registerAll(EventHandler... handlers) { for (EventHandler handler : handlers) { register(handler); } return this; } }