Implementando um Provedor

A classe identificada na extensão deve ser uma subclasse de RepositoryProvider. Suas principais responsabilidades são configurar e desconfigurar um projeto para suporte ao repositório e fornecer os ganchos de modificação de recursos necessários.  O cliente CVS serve como um bom exemplo.  Seu provedor de repositório é CVSTeamProvider.

   public class CVSTeamProvider extends RepositoryProvider {

	...

RepositoryProvider define dois métodos abstratos, configureProject e deconfigure.  Todos os provedores devem implementar esses métodos. 

Um projeto é configurado quando é primeiramente associado a um determinado provedor de repositório.  Isso normalmente acontece quando o usuário seleciona um projeto e utiliza os assistentes de equipe para associar um projeto ao repositório.  Independente de como a operação é disparada, esta é a hora apropriada de calcular ou armazenar em cache os dados sobre o projeto ao qual será necessário fornecer a função de repositório.  (Suponha que o mapeamento do projeto para o provedor já tenha acontecido.  Isso estará sendo tratado no assistente de configuração.)

O provedor do CVS simplesmente divulga o fato de um projeto ter sido configurado:

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

Não seguimos a implementação do mecanismo de divulgação do plug-in.  O suficiente para dizer que as partes que precisam calcular ou inicializar dados específicos do projeto podem fazer isso agora.

Um projeto é desconfigurado quando o usuário não deseja mais associar um provedor de equipe a um projeto.   Cabe ao plug-in implementar a ação do usuário que faz com que isso aconteça (e o não mapeamento do projeto a partir do provedor de equipe acontecerá aí).  O método deconfigure  é a hora apropriada para excluir as caches relacionadas ao projeto ou remover as referências ao projeto na UI.  O provedor do CVS esvazia as caches relacionadas ao projeto mantidas em suas exibições e divulga o fato de que o projeto foi desconfigurado.

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 outros 2000,2002.