Ressourceændrings-hooks

Indtil videre har vi antaget, at ressource-API benyttes til at ændre ressourcer, der er placeret i brugerens filsystem. Det er i hvert fald arbejdsområdets fundamentale struktur, men det er også muligt, at en plugin tilføjer funktioner til brug for manipulation af ressourcer, der styres et andet sted. Platform-plugin'en Teamunderstøttelse f.eks. tilføjer muligheden for at arbejde med ressourcer, der styres af et versionsopbevaringssted.

Resource-API'et inkluderer muligheder, der er tilføjet specielt for at muliggøre teamunderstøttelses-plugins og plugins, der implementerer udbydere af opbevaringssteder vha. teamunderstøttelse. Følgende dækker den generiske mekanisme til brug for registrering af ressource-hooks. I Implementér opbevaringsstedudbyder kan du se, hvordan team anvender disse hooks.  

Ressource - flyt/slet-hook

Dette hook gør det muligt for team-plugin'en og dens udbydere at styre, hvordan ressourceflytninger og -sletninger implementeres. Hook'et inkluderer muligheden for at forhindre disse funktioner i at finde sted. Implementorer kan levere alternative implementeringer til flytning og sletning af filer, foldere og projekter. 

Team-plugin'en bruger udvidelsespunktet org.eclipse.core.resources.moveDeleteHook til at registrere sit hook:

<extension point="org.eclipse.core.resources.moveDeleteHook" id="MoveDeleteHook">
	<moveDeleteHook class="org.eclipse.team.internal.core.MoveDeleteManager"/>
</extension>   

Den leverede klasse skal implementere IMoveDeleteHook, som kaldes af platformen, hver gang en ressource flyttes eller slettes. Team-plugin'en installerer en flyt/slet-hook-manager, der kan bestemme, hvilken teamudbyder der styrer en ressource, og kan starte dens specifikke hook.

Filændringsvalidatorer

Det er også muligt, at teamudbydere af opbevaringssteder har brug for at forhindre eller bryde ind i redigeringen eller lagringen af en fil. Team-plugin'en opnår dette ved at bruge udvidelsespunktet org.eclipse.core.resources.fileModificationValidator til at registrere en validator, der kaldes, hver gang en ressource skal ændres.

<extension point="org.eclipse.core.resources.fileModificationValidator" id="FileValidator">
	<fileModificationValidator class="org.eclipse.team.internal.core.FileModificationValidatorManager"/>
 </extension>

Den leverede klasse skal implementere IFileModificationValidator, som kaldes af platformen, hver gang en ressource gemmes eller åbnes. Team-plugin'en installerer en filændrings-manager, der kan afgøre, hvilken teamudbyder der styrer en ressource, og som kan starte dens specifikke validator.

Generel team-hook

Udbydere af opbevaringssteder kan få brug for at hægte sig på yderligere arbejdsområdefunktioner for at angive yderligere begrænsninger eller for at tilpasse arbejdsområdefunktionalitet. Udvidelsespunktet org.eclipse.core.resources.teamHook stiller nogle ganske særlige funktioner til rådighed for teamudbyderer. Dette hook giver en teamudbyder mulighed for at afgøre, om sammenkædede foldere og filer skal tillades for et givet projekt. Nogle opbevaringsstedsystemer har strenge regler vedr. projekters fysiske layout på disken og kan ikke håndtere ressourcer, der har link til vilkårlige placeringer.

Team-hook giver også en udbyder af opbevaringssteder mulighed for at angive en planlægningsregelfabrik, som skal bruges af alle arbejdsområdets funktioner. Hver gang en API-metode kaldes, der ændrer arbejdsområdet på nogen måde, hentes en planlægningsregel fra arbejdsområdet. Denne planlægningsregel forhindrer andre programdele i at ændre disse ressourcer under start af API-metoden. Hvis en udbyder af opbevaringssteder er ved at udføre yderligere arbejde i en filændringsvalidator eller i en flyt/slet-hook, skal udbyderen også oplyse arbejdsområdet om, hvilke yderligere planlægningsregler den får brug for. I afsnittet om ressourcer i batch finder du flere oplysninger om, hvordan arbejdsområdet bruger planlægningsregler.

Den leverede klasse for team-hook skal implementere TeamHook. Team-plugin'en installerer den simple team-hook, som kan bestemme, hvilken teamudbyder der styrer en ressource, og som kan starte dens specifikke hook.

Bemærk: Disse tre team-hooks er udviklet specifikt til brug for teamkerne-plugin'en. De er tiltænkt generel brug. Teamudbydere skal ikke installere hooks vha. disse udvidelsespunkter, men skal i stedet for implementere egne hooks i deres klasse for udbydere af opbevaringssteder. I Ændrings-hooks for teamressoureceændringer finder du flere oplysninger om brugen af disse hooks.