Hook di modifica delle risorse

Finora si č supposto che l'API delle risorse venga utilizzata per modificare le risorse ubicate nel file system dell'utente. In effetti questa rappresenta la struttura fondamentale dello spazio di lavoro, ma č anche possibile che un plugin aggiunga funzionalitą per l'utilizzo di risorse gestite altrove. Ad esempio, i plugin del Supporto per i team della piattaforma consentono di utilizzare le risorse gestite da un repository di controllo delle versioni.

L'API delle risorse comprende funzioni che sono state aggiunte specificamente per attivare i plugin del supporto per i team e i plugin che implementano i fornitori di repository mediante il supporto di team. Nella trattazione che segue viene descritto il meccanismo per la registrazione degli hook delle risorse. Per informazioni sul modo in cui i team utilizzano tali hook, fare riferimento alla sezione Implementazione di un fornitore di repository.  

Hook di spostamento/eliminazione delle risorse

Questo tipo di hook consente ai plugin di team e ai relativi fornitori di controllare la modalitą di implementazione delle operazioni di spostamento ed eliminazione delle risorse. Grazie ad esso č anche possibile impedire l'esecuzione di queste operazioni. Gli implementatori possono fornire implementazioni alternative per lo spostamento o l'eliminazione di file, cartelle e progetti. 

Il plugin di team utilizza il punto di estensione org.eclipse.core.resources.moveDeleteHook per registrare il proprio hook:

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

La classe fornita deve implementareIMoveDeleteHook, che viene richiamato dalla piattaforma ogni volta che una risorsa viene spostata o eliminata. Il plugin di team installa un gestore di hook di spostamento/eliminazione in grado di determinare quale fornitore di team stia gestendo una risorsa e richiamarne il relativo hook.

Validator di modifica file

Č anche possibile che i fornitori di repository di team debbano impedire le operazioni di modifica o salvataggio di un file o intervenire in tali operazioni. Il plugin di team utilizza a tale scopo il punto di estensione org.eclipse.core.resources.fileModificationValidator, che consente di registrare un validator richiamato ogni volta che č necessario modificare una risorsa.

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

La classe fornita deve implementare IFileModificationValidator, che viene richiamato dalla piattaforma ogni volta che una risorsa viene salvata o aperta.  Il plugin di team installa un gestore di modifica file in grado di determinare quale fornitore di team stia gestendo una risorsa e richiamarne lo specifico validator.

Hook generali del team

I fornitori di repository a volte hanno la necessitą di aggianciarsi ad altre operazioni dello spazio di lavoro per imporre ulteriori limitazioni o personalizzare il comportamento dello spazio di lavoro. Il punto di estensione org.eclipse.core.resources.teamHook fornisce alcune ulteriori funzioni speciali per i fornitori di team. In particolare, questo hook consente ai fornitori di team di decidere se per un determinato progetto sono consentite le cartelle e i file collegati. Alcuni sistemi di repository hanno regole rigide sul layout fisico dei progetti su disco, e non possono gestire le risorse collegate a percorsi arbitrari.

Gli hook del team consentono anche ai fornitori di repository di fornire un factory regole di pianificazione che sarą utilizzato da tutte le operazioni dello spazio di lavoro. Ogni volta che viene richiamato un metodo API che modifica lo spazio di lavoro, viene ricevuta una regola di pianificazione dallo spazio di lavoro. Questa regola di pianificazione evita che altri thread possano modificare tali risorse durante il richiamo del metodo API. Se un fornitore di repository esegue ulteriori operazioni all'interno di un validator di modifica file oppure un hook di spostamento/eliminazione, il fornitore deve anche dichiarare allo spazio di lavoro quali ulteriori regole di pianificazione sono richieste. Fare riferimento alla sezione sul batch delle risorse per ulteriori dettagli sull'uso delle regole di pianificazione da parte dello spazio di lavoro.

La classe fornita per l'hook del team deve implementare TeamHook. Il plugin di team installa un singolo hook del team in grado di determinare quale fornitore di team stia gestendo una risorsa e richiamarne il relativo hook.

Nota:  questi tre hook del team sono stati progettati specificamente per essere utilizzati dal plugin principale di team. Non sono finalizzati a un uso di tipo generico. I fornitori di team non devono installare gli hook utilizzando questi punti di estensione, ma piuttosto implementare i propri hook nella classe RepositoryProvider.  Per ulteriori informazioni sull'uso di questi hook, vedere Hook di modifica delle risorse di team.