package sk.stuba.fiit.perconik.core.resources; import java.util.Map; import org.eclipse.jgit.events.ListenerHandle; import org.eclipse.jgit.events.RepositoryListener; import org.eclipse.jgit.lib.Repository; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.collect.Maps.newHashMap; final class GitHandlerSupport<L extends RepositoryListener> { private final Class<L> type; private final Map<L, ListenerHandle> map; GitHandlerSupport(final Class<L> type) { this.type = checkNotNull(type); this.map = newHashMap(); } public void register(final L listener) { if (!this.map.containsKey(listener)) { ListenerHandle handle = Repository.getGlobalListenerList().addListener(this.type, listener); this.map.put(listener, handle); } } public void unregister(final L listener) { ListenerHandle handle = this.map.remove(listener); if (handle != null) { handle.remove(); } } }