Bindinger for ressursendringer

Hittil har vi gått ut fra at programmeringsgrensesnittet for ressurser brukes til å endre ressurser som er plassert i brukerens filsystem. Dette er den grunnleggende strukturen i arbeidsområdet, men en plugin-modul kan også legge til funksjonalitet for manipulering av ressurser som styres et annet sted. For eksempel gjør plugin-moduler for plattformen for gruppestøtte det mulig å arbeide med ressurser som er styres av et datalager med versjonsbehandling.

Programmeringsgrensesnittet for ressurser har funksjonalitet som er lagt til spesifikt for å aktivere plugin-moduler for gruppestøtte og plugin-moduler som implementerer datalagerleverandører ved hjelp av gruppestøtte. Følgende beskrivelse viser til den generelle mekanismen for registrering av ressursbindinger. Du finner en beskrivelse av hvordan gruppene bruker disse bindingene, under Implementere en datalagerleverandør.  

Bindinger for flytting/sletting av ressurser

Denne bindingen gjør det mulig for plugin-modulen for gruppe samt plugin-leverandørene å styre hvordan flytting og sletting av ressurser implementeres. Ved hjelp av bindingen er det mulig å hindre at slike operasjoner utføres.  Implementerere kan oppgi alternative implementeringer for flytting eller sletting av filer, mapper og prosjekter. 

Plugin-modulen for gruppe bruker utvidelsespunktet org.eclipse.core.resources.moveDeleteHook til å registrere bindingen:

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

Den oppgitte klassen må implementere IMoveDeleteHook, som kalles av plattformen når en ressurs flyttes eller slettes.  Plugin-modulen for gruppe installerer en bindingsstyrer for flytting og sletting som fastsetter hvilken gruppeleverandør som styrer en ressurs og aktiverer den bestemte bindingen.

Validatorer for filendring

Det kan også hende at leverandører av gruppedatalager må hindre eller gripe inn i redigeringen eller lagringen av en fil. Plugin-modulen for gruppe gjør dette ved hjelp av utvidelsespunktet org.eclipse.core.resources.fileModificationValidator og registrerer en validator som kalles når en ressurs skal endres.

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

Den oppgitte klassen må implementere IFileModificationValidator, som kalles av plattformen når en ressurs lagres eller åpnes.   Plugin-modulen for gruppe installerer en filendringsstyrer som fastsetter hvilken gruppeleverandør som styrer en ressurs, og aktiverer den bestemte validatoren.

Generell gruppebinding

Datalagerleverandører må av og til bindes til andre arbeidsområdeoperasjoner for å angi tilleggsbegrensninger eller tilpasse arbeidsområdefunksjonalitet. Utvidelsespunktet org.eclipse.core.resources.teamHook inneholder en del andre spesialfunksjoner for gruppeleverandører. I denne bindingen kan en gruppeleverandør angi om det skal være tillatt med linkede mapper og filer for et gitt prosjekt. Noen datalagersystemer har strenge regler om den fysiske layouten for prosjekter på disken og kan ikke håndtere ressurser som er linket til vilkårlige plasseringer.

Gruppebindingen gjør det også mulig for en datalagerleverandør å oppgi en planleggingsregel-factory som brukes av alle arbeidsområdeoperasjoner. Hver gang det kalles en programmeringsgrensesnittmetode som endrer arbeidsområdet, henter arbeidsområdet en planleggingsregel. Planleggingsregelen hindrer andre tråder i å endre disse ressursene mens programmeringsgrensesnittmetoden aktiveres. Hvis en datalagerleverandør utfører ytterligere arbeid i en valideringsfunksjon for filendring eller binding for flytting eller sletting, må leverandøren også angi for arbeidsområdet hvilke andre planleggingsregler som kreves. Du finner mer informasjon om hvordan arbeidsområdet bruker planleggingsregler i avsnittet om satsvis kjøring av ressurser.

Den oppgitte klassen for gruppebindingen må implementere TeamHook. Plugin-modulen for gruppe installerer en binding for gruppe som fastsetter hvilken gruppeleverandør som styrer en ressurs og aktiverer den bestemte bindingen.

Merk:  Alle tre gruppebindingene er utformet spesifikt for gruppens kjerne-plugin.  De er ikke beregnet på generell bruk.  Gruppeleverandører må ikke installere bindinger via disse utvidelsespunktene, men i stedet implementere bindingene i klassen Repository Provider.  Du finner mer informasjon om hvordan du bruker disse bindingene, under emnet om bindinger for grupperessursendring.