Hittills har vi antagit att resurs-API används till att modifiera resurser i användarens filsystem. Detta är ju den fundamentala strukturen för arbetsytan, men det är även möjligt att ett insticksprogram lägger till funktioner för manipulering av resurser som hanteras någon annan stans. Ett exempel: plattformen Team supports insticksprogram lägger möjligheten att arbeta med resurser som hanteras av ett datalager med versionshantering.
Resurs-APIt innehåller funktioner som har lagts till specifikt för att ge gruppen stöd för insticksprogram och insticksprogram som implementerar datalagerproviders med gruppstödet. Följande diskussion täcker den generiska mekanismen för registrering av resurshookar. En diskussion om hur gruppen använder dessa hookar finns iImplementera en lagerprovider.
Denna hook gör det möjligt för gruppens insticksprogram och dess providers att styra hur resursflytter och -borttagningar implementeras. Hooken innehåller funktioner att förhindra att dessa åtgärder äger rum. Implementerare kan ge alternativa implementationer för att flytta eller ta bort filer, mappar och projekt.
Gruppens insticksprogram använder utökningspunktenorg.eclipse.core.resources.moveDeleteHook till att registrera sin hook:
<extension point="org.eclipse.core.resources.moveDeleteHook" id="MoveDeleteHook"> <moveDeleteHook class="org.eclipse.team.internal.core.MoveDeleteManager"/> </extension>
Den tillhandahållna klassen måste implementeraIMoveDeleteHook, som anropas av plattformen när en resurs flyttas eller tas bort. Gruppens insticksprogram installerar en flytt-/borttagningshookhanterare som kan avgöra vilken grupprovider som hanterar en resurs och anropar dess specifika hook.
Det kan också hända att providers av gruppdatalager måste förhindra eller ingripa när en fil redigeras eller sparas. Gruppens insticksprogram utför detta genom att använda utökningspunkten org.eclipse.core.resources.fileModificationValidator och låta den registrera en valideringsfunktion som anropas när en resurs ska modifieras.
<extension point="org.eclipse.core.resources.fileModificationValidator" id="FileValidator"> <fileModificationValidator class="org.eclipse.team.internal.core.FileModificationValidatorManager"/> </extension>
Den tillhandahållna klassen måste implementera IFileModificationValidator, som anropas av plattformen när en resurs sparas eller öppnas. Gruppens insticksprogram installerar en filmodifieringshanterare som kan avgöra vilken grupprovider som hanterar en resurs och anropar dess specifika valideringsfunktion.
Datalagerproviders behöver ibland ansluta till ytterligare arbetsyteåtgärder för att kunna införa extra begränsningar eller anpassa arbetsytans beteende. Utökningspunkten org.eclipse.core.resources.teamHook tillhandahåller några ytterligare specialfunktioner för grupprovidern. I synnerhet gör denna hook det möjligt för en grupprovider att avgöra huruvida länkade mappar och filer ska tillåtas för ett givet projekt. En del datalagersystem har strikta regler för den fysiska layouten av projekt på disken och kan inte hantera resurser som är länkade till slumpmässiga platser.
Grupphooken gör det även möjligt att låta en datalagerprovider tillhandahålla en schemaläggningsregelfabrik som används av alla arbetsyteåtgärder. Varje gång en API-metod anropas som modifierar arbetsytan på något sätt, erhålls en schemaläggningsregel av arbetsytan. Denna schemaläggningsregel förhindrar att andra trådar modifierar dessa resurser under anropet av API-metoden. Om en datalagerprovider utför ytterligare arbete i en valideringsfunktion för filmodifieringar eller flyttar/tar bort hookar, måste providern även tala om för arbetsytan vilka ytterligare schemaläggningsregler som behövs. Se avsnittet om batchbearbetning av resurser för mer information om hur arbetsytan använder schemaläggningsregler.
Den tillhandahållna klassen för grupphooken måste implementera TeamHook. Gruppens insticksprogram installerar den enstaka grupphook som kan avgöra vilken grupprovider som hanterar en resurs och anropas dess specifika hook.
Obs! Alla dessa tre grupphookar är utformade specifikt för användning av gruppens kärninsticksprogram. De är inte avsedda för allmän användning. Grupproviders ska inte installera hookar med dessa tre utökningspunkter, utan ska istället implementera sina hookar i klassen Repository Provider. Mer information om hur du använder hookar finns i Resursmodifieringshookar.