子在川上曰

  逝者如斯夫不舍昼夜
随笔 - 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 陈刚 阅读(993) 评论(0)  编辑  收藏 所属分类: Eclipse


只有注册用户登录后才能发表评论。


网站导航: