子在川上曰

            逝者如斯夫不舍晝夜
          隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
          數據加載中……

          Plugin和App的統一路徑接口

          在Eclipse插件(Plugin)開發中,需要寫一些Test Case(by JUnit),這些Test Case不是以插件方法運行的,而是一些普通的Application。這時要注意到插件和App獲取路徑的方式是不同的,這時如果你要測試一些項目中的一些涉及到讀文件的一些類,無疑會導致出錯。為了讓Plugin和App路徑獲取透明化,不防寫一個工具類來提供統一的路徑獲取方法,示例類如下所示:

          這個思路也可以擴展到Plugin和App不一樣的地方,這樣寫起Test Case就方便多了。

          說明:示例中的AdminConsolePlugin類就是創建插件項目自動生成的那個類,你的項目也許叫“項目名+Plugin”

          import?java.io.IOException;
          import?java.io.InputStream;
          import?java.net.MalformedURLException;
          import?java.net.URL;

          import?org.eclipse.core.runtime.Path;
          import?org.eclipse.ui.plugin.AbstractUIPlugin;

          import?com.wxxr.management.admin.console.AdminConsolePlugin;

          /**
          ?*?用于插件項目和非插件項目,提供兩者通用的方法接口
          ?*?
          @author?chengang?2006-3-30
          ?
          */
          public?class?ProjectUtil?{

          ????
          private?static?AbstractUIPlugin?plugin?=?AdminConsolePlugin.getDefault();

          ????
          private?ProjectUtil()?{}

          ????
          /**
          ?????*?判斷當前的運行狀態是否為插件方式
          ?????*?
          @return?true=插件方式運行
          ?????
          */
          ????
          private?static?boolean?isPlugin()?{
          ????????
          return?plugin?!=?null;
          ????}

          ????
          public?static?URL?getURL(String?path)?{
          ????????
          if?(isPlugin())//如果是插件
          ????????????//return?plugin.find(new?Path(path));
          ??????????? return?FileLocator.find(plugin.getBundle(), new?Path(path), null);??? //陳剛修改于2006-8-24,eclipse3.2已經建議用此方法
          ????????
          else
          ????????????
          try?{
          ????????????????
          return?new?URL("file:"?+?path);
          ????????????}?
          catch?(MalformedURLException?e)?{
          ????????????????
          throw?new?RuntimeException(path?+?"?is?error",?e);
          ????????????}
          ????}

          ????
          public?static?InputStream?getInputStream(String?path)?{
          ????????URL?url?
          =?getURL(path);
          ????????
          try?{
          ????????????
          return?url.openStream();
          ????????}?
          catch?(IOException?e)?{
          ????????????
          throw?new?RuntimeException(e);
          ????????}
          ????}

          }

          posted on 2006-03-30 11:22 陳剛 閱讀(1010) 評論(0)  編輯  收藏 所屬分類: Eclipse

          主站蜘蛛池模板: 江孜县| 石台县| 太康县| 汉源县| 胶州市| 五原县| 施秉县| 神池县| 宾阳县| 广西| 阳东县| 庄浪县| 无极县| 鸡西市| 东乌珠穆沁旗| 天祝| 塔城市| 望奎县| 依兰县| 化德县| 蒲城县| 泌阳县| 彩票| 丘北县| 通化县| 吴堡县| 河池市| 大洼县| 遵义县| 大宁县| 永兴县| 芷江| 阿拉善右旗| 灵寿县| 诸城市| 成武县| 从江县| 永昌县| 龙陵县| 崇文区| 灵璧县|