package uk.co.acuminous.julez.event.filter; import java.util.ArrayList; import java.util.List; import uk.co.acuminous.julez.event.Event; import uk.co.acuminous.julez.event.handler.EventHandler; import uk.co.acuminous.julez.event.pipe.PassThroughPipe; public abstract class BaseEventFilter extends PassThroughPipe implements EventFilter { @Override public void onEvent(Event event) { if (accept(event)) super.onEvent(event); } @Override public BaseEventFilter register(EventHandler handler) { super.register(handler); return this; } @Override public List<Event> applyTo(Iterable<Event> events) { List<Event> filteredEvents = new ArrayList<Event>(); for (Event event: events) { if (accept(event)) { filteredEvents.add(event); } } return filteredEvents; } }