快速业务通道

发现Eclipse中未解析的插件依赖性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
  vectorsInThisVector.add(pluginDataObjs);   System.out.println(pluginDataObjs);   System.out.println("\n===========|||=== end ===|||===========");   }   Vector pluginData = new Vector();   Iterator outerIterator = vectorsInThisVector.iterator();   while(outerIterator.hasNext()){   Vector pluginDataObjs = (Vector)outerIterator.next();   Iterator innerIterator = pluginDataObjs.iterator();   while(innerIterator.hasNext()){    PluginData pd = (PluginData)innerIterator.next();    String pluginIdKey = pd.getPluginID();    String versionValue = pd.getPluginVersion();    String pluginPath = pd.getPluginLocation();    pluginData.add(pd);   }   }   int breakpoint=0;   return pluginData; }

发现Eclipse中未解析的插件依赖性(3)

时间:2011-02-08 IBM Indiver Dwivedi

在掌握了所有的插件之后,我们就可以显示插件的 ID、版本、位置以及更多信息了,这些可以显示在一个 Standard Widget Toolkit(SWT)表中,从而使这些信息更加直观。我们也可以编写一些代码根据插件 ID 列进行排序,就像是我们的样例代码一样。还应该在一列中说明找到了多少个插件。结果应该如下所示:

图 1. Target-Platform 视图中的所有插件

步骤 2:对 plugin.xml 文件进行递归搜索,从而遍历整个依赖链

当用户选择希望解析依赖链的插件之后,我们就需要对用户所选择的插件的 plugin.xml 文件进行分析,从而查看它的依赖性。每个依赖性都会导致检查另外一个 plugin.xml 文件,后者又有自己的依赖性。从用户选择的插件开始,这个依赖链可以迅速导致有很多个 plugin.xml 文件需要进行分析。我们可以编写一个递归函数来遍历这些依赖性,它可以查找某个插件的最新版本(针对在相同的系统中有重复插件的情况)以及它的所有依赖性。

编写这种递归函数需要执行的步骤如下所示,清单 3 给出了这个函数的源代码。递归函数有时对资源的消耗量很大,而且在用户失去耐心之前可能还没有返回结果。另外一种选择是编写一个函数,只获取用户选择的插件的直接依赖性清单。后一种方法请参看样例代码中的 loadImmediateDependencies() 函数。

获得用户选择的插件的路径。

检查这个位置上是否存在 plugin.xml 或 fragment.xml 文件。

对 plugin.xml 或 fragment.xml 文件进行分析,从而获得这个插件所需要的所有插件的清单。

对于这个清单中的每个插件 ID,寻找对应的插件。

如果多个插件具有相同的 ID,就只向用户报告一次,并自动确定使用版本较新的插件。如何编程对插件版本进行比较并寻找一个版本较新的插件,请参看图 4。

将(步骤 4 或 4a 中找到的)插件添加到一个树视图中,并递归地调用相同的函数,再次从步骤 1 开始重新执行。不过这次用户不用再选择插件了;步骤 4 或 4a 对应的代码会负责选择插件。

清单 3. recursivePluginDependencyWalker() 函数

private Vector alreadyNotified = new Vector(); private boolean firstCall = true; private TreeParent root = null; private void recursivePluginDependencyWalker(PluginData pdObject,     TreeParent parentNode){   try {   String path = pdObject.getPluginLocation();   PluginParser pp = null;   File pluginDotXmlFile = new File(path + "/plugin.xml");   if(pluginDotXmlFile.exists()){    pp = new PluginParser(pluginDotXmlFile);   }else{    File fragmentDotXmlFile = new File(path +

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号