子在川上曰

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

          Plugin和App的統(tǒng)一路徑接口

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

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

          說明:示例中的AdminConsolePlugin類就是創(chuàng)建插件項(xiàng)目自動(dòng)生成的那個(gè)類,你的項(xiàng)目也許叫“項(xiàng)目名+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;

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

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

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

          ????
          /**
          ?????*?判斷當(dāng)前的運(yùn)行狀態(tài)是否為插件方式
          ?????*?
          @return?true=插件方式運(yùn)行
          ?????
          */
          ????
          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已經(jīng)建議用此方法
          ????????
          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 陳剛 閱讀(1014) 評論(0)  編輯  收藏 所屬分類: Eclipse

          主站蜘蛛池模板: 乌鲁木齐县| 宁阳县| 昔阳县| 赤壁市| 射阳县| 同德县| 青海省| 青岛市| 闻喜县| 望江县| 文山县| 台湾省| 凉山| 平陆县| 彰武县| 曲阳县| 运城市| 柏乡县| 楚雄市| 桂阳县| 武宁县| 介休市| 屯门区| 嘉祥县| 隆德县| 广德县| 涞水县| 许昌市| 榆中县| 公安县| 天水市| 防城港市| 永城市| 施秉县| 安国市| 静安区| 监利县| 化州市| 渭源县| 太仆寺旗| 诏安县|