RCP アプリケーションを開発し、ユーザーに更新機能を提供しています。
文字列の URL を java.net.URI に変換し、次のコードで検証しています。
- 文字列 URL を URI に変換する
- URI を検証する
リポジトリーをロードして、有効な artifacts.xml または artifacts.jar が存在し、リポジトリーを更新に使用できることを確認してください。
private String[] repositories = { " http://myrepo.com/TEST_REPO/ ", " http://myrepo.com/TEST_REPO1/ " };
@Override public Object execute(ExecutionEvent イベント) throws ExecutionException { List uris = new ArrayList(); URI uri = null; for (String str : this.repositories) { try { uri = 新しい URI(str); if (uri != null) { uris.add(uri); } } catch (URISyntaxException e) { e.printStackTrace(); } }
最終的な ProvisioningUI ui = ProvUIActivator.getDefault() .getProvisioningUI(); for (URI u : uris) { IStatus status = ui.getRepositoryTracker() .validateRepositoryLocation(ui.getSession(), uri, true, null);
if (!status.isOK()) { MessageDialog.open(MessageDialog.ERROR, Display.getDefault() .getActiveShell(), "P2 Repo Status", status .getMessage(), 0); }
}
for (URI repo : uris) { try { IArtifactRepository リポジトリ = ProvUI .getArtifactRepositoryManager(ui.getSession()) .loadRepository(repo, null);
if (repository != null) { System.out.println(repository.getName()); } } catch (ProvisionException e) { // TODO Auto-generated catch block e.printStackTrace();
} catch (例外 ex) { ex.printStackTrace(); null を返します。}
ここで 3 番目のポイントであるリポジトリのロードは、リポジトリが有効であり、更新に使用できるかどうかを検証するためのより良い方法はありますか。現在のアプローチの問題は、リポジトリが無効な場合、判断に膨大な時間がかかることです。アプリケーションがスタックします。よろしくお願いします。