Bislang wurde davon ausgegangen, dass Ressourcen-APIs zur Änderung von Ressourcen verwendet werden, die sich im Dateisystem des Benutzers befinden. Dies ist zwar die grundlegende Struktur des Arbeitsbereichs, aber es ist ebenfalls möglich, dass ein Plug-in Funktionen für die Bearbeitung von Ressourcen hinzufügt, die an einer anderen Stelle verwaltet werden. Das Plattform-Plug-in für die Teamunterstützung fügt beispielsweise die Möglichkeit der Bearbeitung von Ressourcen hinzu, die von einem Versionierungsrepository verwaltet werden.
Die Ressourcen-API umfasst Funktionen, die speziell für die Aktivierung von Plug-ins für die Teamunterstützung sowie von Plug-ins hinzugefügt wurden, die Repository-Provider mit Verwendung der Teamunterstützung implementieren. Die folgende Erläuterung behandelt die generische Methode für die Registrierung von Anbindungspunkten (Hooks) für Ressourcen. Unter Repository-Provider implementieren erfahren Sie, wie diese Anbindungspunkte von Teams verwendet werden.
Über diese Hooks können das Team-Plug-in und seine Provider steuern, wie das Versetzen und Löschen von Ressourcen implementiert wird. Über den Hook kann auch verhindert werden, dass diese Operationen stattfinden. Implementierungselemente können alternative Implementierungen für das Versetzen oder Löschen von Dateien, Ordnern und Projekten bereitstellen. Der Hook enthält u.a. die Fähigkeit, diese Art von Operationen zu vermeiden. Implementierungselemente können alternative Implementierungen für das Verschieben oder Löschen von Dateien, Ordnern und Projekten bereitstellen.
Das Team-Plug-in verwendet den Erweiterungspunkt org.eclipse.core.resources.moveDeleteHook, um seinen Hook zu registrieren:
<extension point="org.eclipse.core.resources.moveDeleteHook" id="MoveDeleteHook"> <moveDeleteHook class="org.eclipse.team.internal.core.MoveDeleteManager"/> </extension>
Die bereitgestellte Klasse muss IMoveDeleteHook implementieren. Dieses Objekt wird immer dann durch die Plattform aufgerufen, wenn eine Ressource versetzt oder gelöscht wird. Das Team-Plug-in installiert einen Hook-Manager für das Versetzen und Löschen. Dieser Manager kann festlegen, welcher Team-Provider eine Ressource verwaltet, und deren spezifischen Hook aufrufen.
Es kann ebenfalls vorkommen, dass Provider für Team-Repositories das Speichern oder Bearbeiten einer Datei verhindern bzw. bei einer solchen Operation eingreifen müssen. Im Team-Plug-in wird dies durch Verwendung des Erweiterungspunkts org.eclipse.core.resources.fileModificationValidator realisiert, mit dem ein Prüfprogramm registriert wird, das bei jeder beabsichtigten Änderung einer Ressource aufgerufen wird.
<extension point="org.eclipse.core.resources.fileModificationValidator" id="FileValidator"> <fileModificationValidator class="org.eclipse.team.internal.core.FileModificationValidatorManager"/> </extension>
Die bereitgestellte Klasse muss IFileModificationValidator implementieren. IFileModificationValidator wird durch die Plattform immer dann aufgerufen, wenn eine Ressource gespeichert oder geöffnet wird. Das Team-Plug-in installiert einen Dateiänderungsmanager, der festlegen kann, welcher Team-Provider eine Ressource verwaltet und deren spezifisches Prüfprogramm aufrufen kann.
Repository-Provider müssen manchmal an zusätzliche Arbeitsbereichsoperationen angebunden werden, um zusätzliche Einschränkungen aufzuerlegen oder das Verhalten des Arbeitsbereichs anzupassen. Der Erweiterungspunkt org.eclipse.core.resources.teamHook stellt einige andere spezielle Funktionalitäten für Team-Provider zur Verfügung. Insbesondere ermöglicht es dieser Anbindungspunkt einem Team-Provider zu entscheiden, ob verknüpfte Ordner und Dateien für ein gegebenes Projekt zugelassen werden sollen. Einige Repositorysysteme haben strikte Regeln in Bezug auf das physische Layout von Projekten auf dem Datenträger und sind nicht in der Lage, Ressourcen, die mit beliebigen Positionen verknüpft sind, zu handhaben.
Der Team-Anbindungspunkt ermöglicht es einem Repository-Provider auch, eine Zeitplanungsregel-Factory zur Verfügung zu stellen, die bei allen Arbeitsbereichsoperationen verwendet wird. Jedesmal, wenn eine API-Methode aufgerufen wird, die den Arbeitsbereich auf irgendeine Weise verändert, erhält der Arbeitsbereich eine Zeitplanungsregel. Diese Zeitplanungsregel hindert andere Threads daran, diese Ressourcen während des Aufrufs der API-Methode zu verändern. Wenn ein Repository-Provider zusätzliche Aufgaben innerhalb eines Prüfprogramms für Dateiänderungendurchführt oder Anbindungspunkte versetzt oder löscht, muss der Provider den Arbeitsbereich auch darüber informieren, welche zusätzlichen Zeitplanungsregeln er benötigt. Weitere Informationen über die Zeitplanungsregeln, die der Arbeitsbereich verwendet, finden Sie unter Ressourcenstapel.
Die für den Team-Anbindungspunkt gelieferte Klasse muss TeamHook implementieren. Das Team-Plug-in installiert den einzelnen Team-Anbindungspunkt, der bestimmen kann, welcher Team-Provider eine Ressource verwaltet und seinen spezifischen Anbindungspunkt aufruft.
Anmerkung: Alle drei dieser Team-Anbindungspunkte wurden speziell zur Verwendung durch das Team-Kern-Plug-in konzipiert. Sie sind nicht zur allgemeinen Verwendung gedacht. Team-Provider sollten die Anbindungspunkte nicht unter Verwendung dieser Erweiterungspunkte installieren, sondern stattdessen ihre Anbindungspunkte in ihrer Repository-Provider-Klasse implementieren. Weitere Informationen zur Verwendung dieser Hooks finden Sie unter Hooks zur Änderung von Teamressourcen.