package org.sef4j.core.helpers.senders; import java.util.Collection; import org.sef4j.core.api.EventSender; import org.sef4j.core.api.SingleListenerEventProvider; /** * delegate (proxy) of EventSender<T> * * <PRE> * setTarget() * --------> * +------------+ * sendEvent(..) | | target.sendEvent(..) * ----------> | target | ----------> * +------------+ * </PRE> * @param <T> */ public class DelegateEventSender<T> implements EventSender<T>, SingleListenerEventProvider<T> { private EventSender<T> eventListener; // ------------------------------------------------------------------------ public DelegateEventSender(EventSender<T> target) { this.eventListener = target; } // ------------------------------------------------------------------------ public void sendEvent(T event) { EventSender<T> t = eventListener; if (t != null) { t.sendEvent(event); } } public void sendEvents(Collection<T> events) { EventSender<T> t = eventListener; if (t != null) { t.sendEvents(events); } } public EventSender<T> getEventListener() { return eventListener; } public void setEventListener(EventSender<T> target) { this.eventListener = target; } public void clearEventListener() { this.eventListener = null; } // ------------------------------------------------------------------------ @Override public String toString() { return "DelegateEventSender [" + eventListener + "]"; } }