* @param <T> Type of listeners this registry handles
*/
public final class ListenerRegistry<T extends EventListener> implements Mutable {
-
- private final Set<ListenerRegistration<? extends T>> listeners = ConcurrentHashMap.newKeySet();
+ private final Set<RegistrationImpl<? extends T>> listeners = ConcurrentHashMap.newKeySet();
// This conversion is known to be safe.
@SuppressWarnings({ "rawtypes", "unchecked" })
private final Set<ListenerRegistration<T>> unmodifiableView = (Set) Collections.unmodifiableSet(listeners);
}
public void clear() {
- listeners.stream().forEach(ListenerRegistration::close);
+ listeners.stream().forEach(RegistrationImpl::close);
}
public boolean isEmpty() {
}
public Stream<? extends T> streamListeners() {
- return listeners.stream().map(ListenerRegistration::getInstance);
+ return listeners.stream().filter(RegistrationImpl::notClosed).map(RegistrationImpl::getInstance);
}
public <L extends T> @NonNull ListenerRegistration<L> register(final L listener) {
- final ListenerRegistration<L> ret = new ListenerRegistrationImpl<>(listener, listeners);
+ final RegistrationImpl<L> ret = new RegistrationImpl<>(listener, listeners);
listeners.add(ret);
return ret;
}
.toString();
}
- private static final class ListenerRegistrationImpl<T extends EventListener>
- extends AbstractListenerRegistration<T> {
+ private static final class RegistrationImpl<T extends EventListener> extends AbstractListenerRegistration<T> {
private Collection<?> removeFrom;
- ListenerRegistrationImpl(final T instance, final Collection<?> removeFrom) {
+ RegistrationImpl(final T instance, final Collection<?> removeFrom) {
super(instance);
this.removeFrom = requireNonNull(removeFrom);
}