我正在开发RCP应用程序并为用户提供更新功能。
我正在将String urls转换为java.net.URI并使用以下代码验证它们:
加载存储库以确保存在有效的artifacts.xml或artifacts.jar,并且可以使用存储库进行更新。
private String [] repositories = {“http://myrepo.com/TEST_REPO/”, “http://myrepo.com/TEST_REPO1/”};
@覆盖 public Object execute(ExecutionEvent event)抛出ExecutionException { 列表uris = new ArrayList(); URI uri = null; for(String str:this.repositories){ 尝试{ 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, 空);
if (!status.isOK()) {
MessageDialog.open(MessageDialog.ERROR, Display.getDefault()
.getActiveShell(), "P2 Repo Status", status
.getMessage(), 0);
}
}
for(URI repo:uris){ 尝试{ 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(Exception ex){ ex.printStackTrace(); } } return null; }
这里第3点,加载存储库,有没有更好的方法来验证存储库是否有效并可用于更新。当前方法的问题是,如果存储库无效,则需要花费大量时间来确定。应用程序卡住了。请指导我。