/** * Adds a filter to be applied to all queries. The filter will be used in * addition to any filter that has been set or added previously. * * @see #addFilter(ValueProvider, SerializablePredicate) * @see #addFilterByValue(ValueProvider, Object) * @see #setFilter(SerializablePredicate) * * @param filter * the filter to add, not <code>null</code> */ public default void addFilter(SerializablePredicate<T> filter) { Objects.requireNonNull(filter, "Filter cannot be null"); if (getFilter() == null) { setFilter(filter); } else { SerializablePredicate<T> oldFilter = getFilter(); setFilter(item -> oldFilter.test(item) && filter.test(item)); } }