La clase identificada en la extensión debe ser una subclase de RepositoryProvider. Las responsabilidades primarias de esta clase son las de configurar y desconfigurar un proyecto para el soporte de depósito y suministrar los ganchos de modificación de recursos que se necesiten. El cliente CVS es un buen ejemplo de ello. Su proveedor de depósitos es CVSTeamProvider.
public class CVSTeamProvider extends RepositoryProvider { ...
La clase RepositoryProvider define dos métodos abstractos, configureProject y deconfigure. Todos los proveedores deben implementar estos métodos.
El proyecto se configura la primera vez que se asocia a un proveedor de depósitos concreto. Esto suele ocurrir cuando el usuario selecciona un proyecto y utiliza los asistentes del equipo para asociar el proyecto al depósito. Con independencia de cómo se desencadene la operación, este es el momento oportuno para calcular o poner en antememoria los datos relacionados con el proyecto que habrá que proporcionar a la función del depósito. (Suponga que ya ha tenido lugar la correlación entre el proyecto y el proveedor. Esto se hace en el asistente de configuración).
El proveedor de CVS tan solo difunde el hecho de que ya se ha configurado un proyecto:
public void configureProject() throws CoreException { CVSProviderPlugin.broadcastProjectConfigured(getProject()); }
No seguiremos con la implementación del mecanismo de difusión del conector. Basta con decir que las partes que deben calcular o inicializar los datos específicos del proyecto pueden hacerlo en este momento.
Un proyecto se desconfigura cuando el usuario ya no quiere que el proveedor del equipo esté asociado al proyecto. El conector es el que se encarga de implementar la acción de usuario que hace que esto suceda (y en ese momento se producirá la descorrelación entre el proyecto y el proveedor del equipo). Cuando se llama al método deconfigure, ha llegado el momento de suprimir las antememorias que estén relacionadas con el proyecto o de eliminar las referencias que se hagan al proyecto en la UI. El proveedor de CVS vacía las antememorias relacionadas con el proyecto que se guardaban en las vistas, y difunde el hecho de que el proyecto se haya 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()); } }