Implementazione di un provider

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 di repository e nel fornire tutte gli hook necessari per la modifica delle risorse.  Il client CVS funge da ottimo esempio in merito.  Il suo provider di repository è CVSTeamProvider.

   public class CVSTeamProvider extends RepositoryProvider {

	...

RepositoryProvider definisce due metodi astratti, denominati configureProject e deconfigure,  che tutti i provider devono implementare. 

Per configurare un progetto, occorre prima associarlo a un particolare privider di repository.  Tale operazione viene in genere eseguita dall'utente selezionando un progetto e utilizzando le procedure guidate di team per associarlo al repository.  A prescindere dal metodo adottato, è questo il momento più appropriato per calcolare o memorizzare nella cache i dati relativi al progetto che sarà necessario fornire alla funzione del repository.  (Si supponga che l'associazione del progetto al provider sia già stata effettuata.  Di questo ci si occuperà nella configurazione guidata.)

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

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

L'implementazione del metodo di trasmissione del plug-in non verrà illustrata.  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 ad esso un provider di team.   E compito del plug-in implementare l'azione dell'utente che consente tale operazione (in tal modo, verrà annullato il mapping del progetto al provider di team).  Il metodo deconfigure  consente di eliminare le cache correlate al progetto o rimuovere i riferimenti al progetto nell'interfaccia utente.  Il provider CVS elimina le cache correlate al progetto conservate nelle visualizzazioni 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 Corp. e altri 2000,2002.