Die in der Erweiterung angegebene Klasse muss eine Unterklasse von RepositoryProvider sein. Sie dient hauptsächlich zum Konfigurieren und Dekonfigurieren eines Projekts für die Repository-Unterstützung sowie zur Bereitstellung aller erforderlichen Hooks für die Ressourcenänderung. Der CVS-Client stellt hierfür ein gutes Beispiel dar. Sein Repository-Provider ist CVSTeamProvider.
public class CVSTeamProvider extends RepositoryProvider { ...
RepositoryProvider definiert die beiden abstrakten Methoden configureProject und deconfigure. Alle Provider müssen diese Methoden implementieren.
Ein Projekt wird konfiguriert, wenn es zum ersten Mal einem bestimmten Repository-Provider zugeordnet wird. Dieser Arbeitsschritt wird normalerweise dann ausgeführt, wenn der Benutzer ein Projekt auswählt und es mit Hilfe des Teamassistenten Ihrem Repository zuordnet. Unabhängig davon, wie die Operation ausgelöst wird, sollten zu diesem Zeitpunkt alle Daten zu dem Projekt ermittelt oder zwischengespeichert werden, die zum Bereitstellen der Repository-Funktion benötigt werden. (Hierbei wird davon ausgegangen, dass die Zuordnung des Projekts zu Ihrem Provider bereits durchgeführt wurde. Diese Aufgabe wird im Konfigurationsassistenten ausgeführt.)
Der CVS-Provider überträgt die Meldung zur Projektkonfiguration im Broadcastbetrieb:
public void configureProject() throws CoreException { CVSProviderPlugin.broadcastProjectConfigured(getProject()); }
Die Implementierung des Broadcastmechanismus des Plug-ins wird an dieser Stelle nicht weiter erläutert. Alle Teilnehmer, die projektspezifische Daten berechnen oder initialisieren müssen, können diesen Arbeitsschritt an dieser Stelle ausführen.
Ein Projekt wird dekonfiguriert, wenn der Benutzer die Zuordnung zwischen einem Team-Provider und einem Projekt aufheben will. Die Implementierung der hierzu erforderlichen Benutzeraktion richtet sich nach dem verwendeten Plug-in (die Aufhebung der Zuordnung des Projekts zum Team-Provider wird an dieser Stelle ausgeführt). Die Methode für die Dekonfiguration gibt die korrekte Zeit zum Löschen aller projektspezifischen Caches bzw. zum Entfernen aller Verweise auf das Projekt in der Benutzerschnittstelle an. Der CVS-Provider löscht den Inhalt der projektspezifischen Caches, die in den Sichten geführt werden, und sendet eine Broadcastmeldung über die Dekonfiguration des Projekts.
public void deconfigure() throws CoreException { ... try { EclipseSynchronizer.getInstance().flush(getProject(), true, true /*flush deep*/, null); } catch(CVSException e) { throw new CoreException(e.getStatus()); } finally { CVSProviderPlugin.broadcastProjectDeconfigured(getProject()); } }