拡張で識別されるクラスは、 RepositoryProvider のサブクラスである必要があります。 その主な役割は、リポジトリー・サポートのためにプロジェクトを構成および構成解除して、必要なリソース変更フックを提供することです。 CVS クライアントがよい例です。 そのリポジトリー・プロバイダーは CVSTeamProvider です。
public class CVSTeamProvider extends RepositoryProvider { ...
RepositoryProvider は、 2 つの要約メソッド configureProject と deconfigure を定義します。 すべてのプロバイダーは、これらのメソッドをインプリメントする必要があります。
特定のリポジトリー・プロバイダーと最初に関連付けられるときに、プロジェクトは構成されます。 これは一般に、ユーザーがプロジェクトを選択し、プロジェクトをご使用のリポジトリーに関連付けるため、チーム・ウィザードを使用するときに行われます。 操作がトリガーされる方法には関係なく、リポジトリー機能を提供する必要のあるプロジェクトに関するデータを計算またはキャッシュに入れる時間に応じます。 (プロバイダーに対するプロジェクトのマッピングはすでに行われていることを前提とします。 これは、構成ウィザードで処理されることになります。)
CVS プロバイダーは、プロジェクトが構成されたという事実を単にブロードキャストするだけです。
public void configureProject() throws CoreException { CVSProviderPlugin.broadcastProjectConfigured(getProject()); }
ここでは、プラグイン・ブロードキャスト機構のインプリメンテーションには言及しません。 プロジェクト特定のデータを計算または初期化する必要のある方は、そのときに行うことができるというだけにとどめておきます。
チーム・プロバイダーをプロジェクトに関連付ける必要がないとき、プロジェクトは構成解除されます。 構成解除が起こる (およびプロジェクトのチーム・プロバイダーからのマップ解除がここで起こる) 原因となる、ユーザー処置のインプリメントは、 ご使用のプラグインの責任で行ってください。 deconfigure メソッドは、プロジェクト関連のキャッシュの削除、または UI 内のプロジェクトに対する参照の除去に応じた適当な時間です。 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()); } }