我正在开发一个 RCP 应用程序并向用户提供更新功能。
我正在将字符串 url 转换为 java.net.URI 并使用以下代码验证它们:
- 将字符串 url 转换为 URI
- 验证 URI
加载存储库以确保存在有效的 artifacts.xml 或 artifacts.jar,并且存储库可用于更新。
私有字符串 [] 存储库 = { " http://myrepo.com/TEST_REPO/ ", " http://myrepo.com/TEST_REPO1/ " };
@Override public Object execute(ExecutionEvent event) throws ExecutionException { List uris = new ArrayList(); URI uri = null; for (String str : this.repositories) { try { uri = new 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();
} 捕捉(异常前){ ex.printStackTrace(); } } 返回空值;}
这里第三点,加载存储库,有没有更好的方法来验证存储库是否有效并且可以用于更新。当前方法的问题是,如果存储库无效,则需要大量时间来确定。应用程序卡住了。请指导我。