在扩展中标识的类必须是 RepositoryProvider 的子类。其主要职责是为资源库支持配置和取消配置项目,并提供任何必需的资源修改 hooks。CVS 客户机可作为一个很好的示例。它的资源库提供程序是 CVSTeamProvider。
public class CVSTeamProvider extends RepositoryProvider { ...
RepositoryProvider 定义两个抽象方法:configureProject 和 deconfigure。所有提供程序必须实现这些方法。
当项目第一次与特定资源库提供程序关联时将配置它。这通常在用户选择一个项目并使用小组向导将项目与资源库关联时发生。不管操作是如何触发的,此时应计算或高速缓存任何关于您将需要提供资源库功能的项目的数据。(假定映射项目到您的提供程序已经发生。您将在配置向导中处理它。)
CVS 提供程序仅广播项目已被配置的事实:
public void configureProject() throws CoreException { CVSProviderPlugin.broadcastProjectConfigured(getProject()); }
我们将不跟随插件广播机制的实现。可以保证,需要计算或初始化特定于项目的数据的任何一方都可在此时这样做。
当用户不再想要将小组提供程序与项目关联时,项目将取消配置。您的插件将决定导致此结果的用户操作(并且从小组提供程序取消项目映射也将发生)。此时是取消配置方法删除任何项目相关高速缓存或除去用户界面中项目的任何引用的合适时间。CVS 提供程序清除保留在其视图中的项目相关高速缓存,并广播项目被取消配置的事实。
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()); } }