/* * Copyright (C) 2010, Google Inc. * Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com> and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.events; import org.eclipse.jgit.lib.Repository; /** * Describes a modification made to a repository. * * @param <T> * type of listener this event dispatches to. */ public abstract class RepositoryEvent<T extends RepositoryListener> { private Repository repository; /** * Set the repository this event occurred on. * <p> * This method should only be invoked once on each event object, and is * automatically set by * {@link org.eclipse.jgit.lib.Repository#fireEvent(RepositoryEvent)}. * * @param r * the repository. */ public void setRepository(Repository r) { if (repository == null) repository = r; } /** * Get the repository that was changed * * @return the repository that was changed */ public Repository getRepository() { return repository; } /** * Get type of listener this event dispatches to * * @return type of listener this event dispatches to */ public abstract Class<T> getListenerType(); /** * Dispatch this event to the given listener. * * @param listener * listener that wants this event. */ public abstract void dispatch(T listener); @SuppressWarnings("nls") @Override public String toString() { String type = getClass().getSimpleName(); if (repository == null) return type; return type + "[" + repository + "]"; } }