package org.sef4j.core.helpers.senders.multiplexer; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.sef4j.core.api.EventSender; public class DefaultMultiplexerPerKeyEventSender<K,T> implements EventSender<T> { protected K key; protected EventSender<MultiplexedEvent<K, T>> delegate; public DefaultMultiplexerPerKeyEventSender(K key, EventSender<MultiplexedEvent<K, T>> delegate) { this.key = key; this.delegate = delegate; } @Override public void sendEvent(T event) { MultiplexedEvent<K, T> wrappedEvent = new MultiplexedEvent<K, T>(key, event); delegate.sendEvent(wrappedEvent); } @Override public void sendEvents(Collection<T> events) { List<MultiplexedEvent<K,T>> wrappedEvents = new ArrayList<MultiplexedEvent<K,T>>(events.size()); for(T event : events) { wrappedEvents.add(new MultiplexedEvent<K, T>(key, event)); } delegate.sendEvents(wrappedEvents); } // ------------------------------------------------------------------------ @Override public String toString() { return "DefaultMultiplexerPerKeyEventSender[" + key + ", delegate=" + delegate + "]"; } }