Implementazione di un fornitore

La classe identificata nell'estensione deve essere una sottoclasse di RepositoryProvider. I compiti principali di tale classe consistono nel configurare e deconfigurare un progetto per il supporto del repository e nel fornire tutti gli hook necessari per la modifica delle risorse.  Il client CVS fornisce un buon esempio. Il relativo fornitore di repository è CVSTeamProvider.

   public class CVSTeamProvider extends RepositoryProvider {

	...

RepositoryProvider definisce due metodi astratti, configureProject e deconfigure. Tutti i fornitori devono implementare tali metodi. 

Un progetto viene configurato quando viene prima associato a un particolare fornitore di repository. Ciò generalmente avviene quando l'utente seleziona un progetto e utilizza le procedure guidate dei team per associare un progetto al repository. Indipendentemente dal modo in cui viene attivata l'operazione, questo è il momento più appropriato per calcolare o memorizzare nella cache i dati relativi al progetto necessari per fornire la funzione del repository. (Si supponga che sia stata già eseguita l'associazione del progetto al fornitore.  Di questo ci si occuperà nella configurazione guidata.)

Il fornitore CVS si limita a trasmettere l'avvenuta configurazione del progetto:

public void configureProject() throws CoreException {
	CVSProviderPlugin.broadcastProjectConfigured(getProject());
}

L'implementazione del meccanismo di trasmissione del plug-in non verrà descritta.  Sarà sufficiente dire che tutte le parti che devono calcolare o inizializzare dati specifici del progetto possono eseguire tali operazioni in questa fase.

Un progetto viene deconfigurato quando l'utente non desidera più associare un fornitore di team a un progetto.   Sarà compito del plug-in implementare l'operazione dell'utente che consente tale operazione (in tal modo verrà annullata l'associazione del progetto al fornitore di team). Il metodo deconfigure  consente di svuotare le cache correlate al progetto o rimuovere i riferimenti al progetto nell'interfaccia utente. Il fornitore CVS elimina le cache correlate al progetto conservate nelle viste e comunica l'avvenuta deconfigurazione del progetto.

public void deconfigure() throws CoreException {
	...
	try {
		EclipseSynchronizer.getInstance().flush(getProject(), true, true /*flush deep*/, null);
	} catch(CVSException e) {
		throw new CoreException(e.getStatus());
	} finally {
		CVSProviderPlugin.broadcastProjectDeconfigured(getProject());
	}
}

 

Copyright IBM Corporation e altri 2000, 2003.