Implementando um provedor

A classe identificada na extensão deve ser uma classe filha 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 no momento da sua associação a um provedor de repositório específico.  Isso normalmente acontece quando o usuário seleciona um projeto e utiliza os assistentes de equipe para associar um projeto a seu repositório.  Independentemente de como a operação é acionada, esse é o momento apropriado para calcular ou armazenar em cache quaisquer dados sobre o projeto que serão necessários para fornecer sua função de repositório.  (Assuma que o mapeamento do projeto para seu provedor já tenha acontecido.  Você tratará disso no seu 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 difusão do plug-in.  Basta 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 a retirada do mapeamento do projeto a partir do provedor de equipe acontecerá aí).  O método deconfigure   é a hora apropriada para excluir os caches relacionados ao projeto ou remover as referências ao projeto na UI.  O provedor do CVS esvazia os caches relacionados ao projeto mantidos em suas exibições e faz a difusão do 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 Corporation e outros 2000, 2003.