Do tej pory zakładaliśmy, że do modyfikowania zasobów znajdujących się w systemie plików użytkownika używany jest interfejs API zasobu. To jest co prawda podstawowa struktura obszaru roboczego, jednak wtyczka może dodawać funkcjonalność pozwalającą na zmienianie zasobów zarządzanych w innym miejscu. Na przykład wtyczki platformy Wsparcie dla zespołów dodają możliwość pracy z zasobami, które są zarządzane przez repozytorium kontroli wersji.
Interfejs API zasobu zawiera możliwości, które zostały dodane celowo, aby aktywować wtyczki wsparcia dla zespołów oraz wtyczki implementujące dostawców repozytoriów przy użyciu wsparcia dla zespołów. Dalsza część omówienia obejmuje ogólny mechanizm rejestrowania haków zasobów. Omówienie korzystania z tych haków przez zespół zawiera sekcja Implementowanie dostawcy repozytorium.
Ten hak pozwala wtyczce zespołu oraz jej dostawcom na kontrolowanie sposobów implementacji operacji przenoszenia i usuwania zasobów. Hak zawiera możliwość zablokowania tych operacji. Obiekty implementujące mogą udostępniać alternatywne implementacje przenoszenia lub usuwania plików, folderów oraz projektów.
Wtyczka zespołu używa punktu rozszerzenia org.eclipse.core.resources.moveDeleteHook do rejestrowania jego haka:
<extension point="org.eclipse.core.resources.moveDeleteHook" id="MoveDeleteHook"> <moveDeleteHook class="org.eclipse.team.internal.core.MoveDeleteManager"/> </extension>
Dostarczona klasa musi implementować interfejs IMoveDeleteHook, który jest wywoływany przez platformę przy każdym przenoszeniu lub usuwaniu zasobu. Wtyczka zespołu instaluje menedżera haków przenoszenia i usuwania, który określa dostawcę zarządzającego danym zasobem i wywołującego odpowiedni hak.
Czasami dostawcy repozytoriów zespołowych muszą zapobiegać lub interweniować w trakcie edytowania lub zapisywania pliku. Wtyczka zespołu realizuje to zadanie przy użyciu punktu rozszerzenia org.eclipse.core.resources.fileModificationValidator, który rejestruje analizator wywoływany przy każdej zmianie zasobu.
<extension point="org.eclipse.core.resources.fileModificationValidator" id="FileValidator"> <fileModificationValidator class="org.eclipse.team.internal.core.FileModificationValidatorManager"/> </extension>
Dostarczona klasa musi implementować interfejs IFileModificationValidator, który jest wywoływany przez platformę przy każdym zapisywaniu i otwieraniu zasobu. Wtyczka zespołu instaluje menedżera modyfikacji plików, który określa dostawcę zarządzającego danym zasobem i wywołuje odpowiedni analizator.
Dostawcy repozytoriów potrzebują niekiedy haka ułatwiającego dostęp do dodatkowych operacji w obszarze roboczym. Za jego pomocą mogą określać dodatkowe ograniczenia lub dostosowywać zachowanie środowiska roboczego. Punkt rozszerzenia org.eclipse.core.resources.teamHook udostępnia dostawcom dodatkowe funkcje specjalne. W szczególności hak ten pozwala dostawcy zespołowemu na określenie, czy dowiązane foldery i pliki powinny być dostępne dla danego projektu. W niektórych systemach obsługi repozytoriów istnieją ścisłe reguły dotyczące fizycznego układu projektów na dysku, a zasoby dowiązane w innych położeniach nie są w nich obsługiwane.
Hak zespołu umożliwia również dostawcy repozytorium udostępnienie fabryki reguł planowania, która będzie używana przez wszystkie operacje obszaru roboczego. Każde wywołanie metody interfejsu API, która modyfikuje obszar roboczy, powoduje uzyskanie przez obszar roboczy reguły planowania. Uniemożliwia ona innym wątkom modyfikowanie tych zasobów w trakcie działania metody interfejsu API. Jeśli dostawca repozytorium wykonuje dodatkowe operacje wewnątrz analizatora poprawności modyfikacji plików lub haka przenoszenia/usuwania, musi poinformować obszar roboczy, jakich dodatkowych reguł planowania będzie potrzebować. Szczegółowe informacje na temat korzystania z reguł planowania przez obszar roboczy można znaleźć w sekcji Zmienianie zasobów metodą wsadową.
Dostarczana klasa haka zespołowego musi implementować interfejs TeamHook. Wtyczka zespołu instaluje pojedynczy hak zespołu, który określa dostawcę zespołowego zarządzającego zasobem i wywołującego odpowiedni dla niego hak.
Uwaga: Wszystkie trzy haki zespołu zostały zaprojektowane specjalnie pod kątem używania ich przez główną wtyczkę zespołu. Nie są one przeznaczone do użytku ogólnego. Dostawcy zespołowi nie powinni instalować haków przy użyciu tych punktów rozszerzeń, ale implementować haki w swojej klasie Repository Provider. Więcej informacji na temat używania tych haków zawiera sekcja Haki modyfikacji zasobów zespołowych.