37 lines
1.6 KiB
Java
37 lines
1.6 KiB
Java
package tc.oc.pgm.filters;
|
|
|
|
import java.util.function.Consumer;
|
|
|
|
public interface FilterDispatcher {
|
|
|
|
/**
|
|
* Register the given {@link FilterListener} to receive notifications of changes to the response
|
|
* of the given {@link Filter} to any {@link Filterable} assignable to the given scope.
|
|
*
|
|
* The listener is immediately notified of the current filter response for all existing filterables.
|
|
*/
|
|
<F extends Filterable<?>> void onChange(Class<F> scope, Filter filter, FilterListener<? super F> listener);
|
|
|
|
void onChange(Filter filter, FilterListener<? super Filterable<?>> listener);
|
|
|
|
/**
|
|
* Register the given listener to be notified whenever the response of the given {@link Filter}
|
|
* changes from DENY to ALLOW for any {@link Filterable} assignable to the given scope.
|
|
*
|
|
* The listener is immediately notified of any existing filterables that are currently ALLOWed by the filter.
|
|
*/
|
|
<F extends Filterable<?>> void onRise(Class<F> scope, Filter filter, Consumer<? super F> listener);
|
|
|
|
void onRise(Filter filter, Consumer<? super Filterable<?>> listener);
|
|
|
|
/**
|
|
* Register the given listener to be notified whenever the response of the given {@link Filter}
|
|
* changes from ALLOW to DENY for any {@link Filterable} assignable to the given scope.
|
|
*
|
|
* The listener is immediately notified of any existing filterables that are currently DENYed by the filter.
|
|
*/
|
|
<F extends Filterable<?>> void onFall(Class<F> scope, Filter filter, Consumer<? super F> listener);
|
|
|
|
void onFall(Filter filter, Consumer<? super Filterable<?>> listener);
|
|
}
|