1

我正在开发一个 RCP 应用程序并向用户提供更新功能。

我正在将字符串 url 转换为 java.net.URI 并使用以下代码验证它们:

  1. 将字符串 url 转换为 URI
  2. 验证 URI
  3. 加载存储库以确保存在有效的 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(); } } 返回空值;}

这里第三点,加载存储库,有没有更好的方法来验证存储库是否有效并且可以用于更新。当前方法的问题是,如果存储库无效,则需要大量时间来确定。应用程序卡住了。请指导我。

4

0 回答 0