Implémentation d'un fournisseur

La classe identifiée dans l'extension doit être une sous-classe de RepositoryProvider. Ses responsabilités premières consistent à configurer et annuler la configuration d'un projet pour le support du référentiel, ainsi que de fournir les points d'ancrage de modifications de ressources nécessaires. Le client CVS offre un bon exemple. Son fournisseur de référentiel est CVSTeamProvider.

   public class CVSTeamProvider extends RepositoryProvider {

	...

RepositoryProvider définit deux méthodes abstraites configureProject et deconfigure. Tous les fournisseurs doivent implémenter ces méthodes. 

Un projet est configuré lorsqu'il est pour la première fois associé à un fournisseur de référentiel particulier. Tel est le cas lorsque l'utilisateur sélectionne un projet et emploie les assistants d'équipe pour associer un projet à votre référentiel. Quel que soit le mode de lancement de l'opération, il est alors opportun de calculer ou de mettre en cache toutes les données sur le projet à fournir à votre fonction de référentiel. Supposez pour cela que le projet a déjà été mappé à votre fournisseur. Vous effectuerez cette opération dans votre assistant de configuration.

Le fournisseur CVS diffuse simplement le fait qu'un projet a été configuré :

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

Nous n'aborderons pas l'implémentation du mécanisme de diffusion de plug-in. Il suffit de préciser que tout élément devant calculer ou initialiser des données spécifiques à un projet peut s'exécuter à ce moment.

La configuration d'un projet est annulée lorsque l'utilisateur ne souhaite plus associer un fournisseur d'équipe à un projet.  Votre plug-in peut choisir d'implémenter l'action utilisateur entraînant cette situation (le mappage du projet à partir de votre fournisseur d'équipe sera alors annulé). La méthode deconfigure est opportune pour supprimer tous les caches liés à des projets ou toute référence au projet dans l'interface graphique. Le fournisseur CVS élimine les caches liés à des projets conservés dans ses vues et diffuse le fait que la configuration du projet est annulée.

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 and others 2000, 2003.