package ru.rsdn.patterns.behavioral.observer.problems.init.implicit;

import java.util.Collection;
import java.util.LinkedHashSet;

import ru.rsdn.patterns.behavioral.observer.ISubscriber;
import ru.rsdn.patterns.behavioral.observer.AbstractPublisher;

/**
 * Проявление наследованного риска безопасности инициализации из-за неявной
 * потери this при опубликовании подписчика, являющегося экземпляром
 * анонимного класса
 */
public class InheritedUnsafeImplicitInitSubscriber extends
		UnsafeImplicitInitSubscriber {
	private final Collection<Long> eventHistory;

	/**
	 * Конструктор
	 * @param publisher издатель
	 */
	public InheritedUnsafeImplicitInitSubscriber(
			AbstractPublisher<Collection<ISubscriber>> publisher) {
		super(publisher);
		eventHistory = new LinkedHashSet<Long>();
	}

	@Override
	protected Collection<Long> getEventHistory() {
		return eventHistory;
	}
}
