Implementar un proveedor

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 {

	...

RepositoryProvider define dos métodos abstractos, configureProject y deconfigure.  Todos los proveedores deben implementar estos métodos. 

Un proyecto se configura cuando se asocia por primera vez con un proveedor de depósitos determinado.  Esto se produce generalmente cuando el usuario selecciona un proyecto y utiliza los asistentes de equipo para asociarlo con el depósito.  Independientemente de cómo se desencadene la operación, este es el momento adecuado para calcular o almacenar en antememoria los datos relativos al proyecto que necesitará para suministrar la función del depósito.  (Supongamos que la correlación entre el proyecto y el proveedor ya ha tenido lugar.  El usuario se encargará de ello 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());
	}
}

 

Copyright IBM Corporation y otros 2000, 2003.