随笔:25 文章:1 评论:66 引用:0
steeven
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
EMF之ResourceSet探索(2)
来看看ResourceSet.createResource(URI):Resource方法,从URI到Resource的过程如下:
1. getResourceFactoryRegistry()
public
Resource.Factory.Registry getResourceFactoryRegistry()
{
if
(resourceFactoryRegistry
==
null
)
{
//
可以自行Set一个注册表实现,没有的话用系统缺省注册表
resourceFactoryRegistry
=
new
ResourceFactoryRegistryImpl()
{
public
Resource.Factory delegatedGetFactory(URI uri)
{
return
Resource.Factory.Registry.INSTANCE.getFactory(uri);
}
}
;
//
代理系统注册表,注意这个应该是正宗的。
}
return
resourceFactoryRegistry;
}
所以自己new 出来的ResourceSet可以向注册表中任意添加工厂实现。
2. 调用注册表的getFactory(URI), 实现如下:
public
Resource.Factory getFactory(URI uri)
{
String protocol
=
uri.scheme();
Object resourceFactory
=
protocolToFactoryMap.get(protocol);
//
先根据protocol查找
if
(resourceFactory
==
null
)
{
String extension
=
uri.fileExtension();
resourceFactory
=
extensionToFactoryMap.get(extension);
//
找不到再根据扩展名查找
if
(resourceFactory
==
null
)
{
resourceFactory
=
extensionToFactoryMap.get(
"
*
"
);
//
尝试查找缺省扩展
if
(resourceFactory
==
null
)
{
resourceFactory
=
delegatedGetFactory(uri);
//
自行实现可以扩展此方法解析。
}
}
}
//
Descriptor可以用于编程使用
return
resourceFactory
instanceof
Resource.Factory.Descriptor
?
((Resource.Factory.Descriptor)resourceFactory).createFactory() :
(Resource.Factory)resourceFactory;
}
查找一个工厂居然这么复杂!正因为这么复杂,才能支持platform/file/fttp等众多千奇百怪的URI
不同类型的工厂加工出不同类型的Resource, 才会输出为XSD/XML/XMI/....
如果直接操作系统注册表要小心。EMF中定义了几个扩展点,可以实现类似目的。
已知的ResourceFactory实现有:XSD/ECore/EMOF/XML/XMI,XSD的输出方法的介绍可以参考Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework电子书。
发表于 2006-05-26 00:02
steeven
阅读(1110)
评论(0)
编辑
收藏
所属分类:
程序点滴
、
学习笔记
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
吹一吹偶的新作品:skype remote desktop
GWT开发中的几个问题
开发过程中的鸡生蛋蛋生鸡的问题
监听Swing窗口的键盘鼠标事件
GWT做的guess number
EMF之ResourceSet探索(4)
EMF之ResourceSet探索(3)
EMF之ResourceSet探索(2)
EMF之ResourceSet探索(1)
Annotation Wizard for EMF插件
CALENDER
<
2006年5月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(10)
给我留言
查看公开留言
查看私人留言
随笔分类
学习笔记(11)
(rss)
程序点滴(16)
(rss)
胡思乱想(8)
(rss)
随笔档案
2009年5月 (1)
2006年12月 (1)
2006年7月 (2)
2006年6月 (7)
2006年5月 (8)
2006年4月 (2)
2006年3月 (1)
2006年1月 (2)
2005年12月 (1)
文章档案
2006年8月 (1)
相册
annotation_wizard
samples
我的链接
我在csdn上的窝
(rss)
很久没打理了
我在MSN上的窝
(rss)
我在博客园的窝
(rss)
我在天涯上的窝
搜索
最新评论
1. re: 编程使用SDO[EMF兄弟篇]
最近也在看这个,有没有好点的文章和代码啊,有的话麻烦给些,谢谢,邮箱:
huanggenping2002@163.com
--zebrahgp
2. re: SNMP亲密接触
请问,我在接收Trap时,同时有多个设备发送,在同一时间接收到的会有丢失的情况,怎么解决呢?snmp4j自带的ThreadPool类有没有在这方面起到多线程作用?
--analyser
3. re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
邮箱: litao5168@sohu.com 谢谢
--litao
4. re: 编程使用SDO[EMF兄弟篇]
我也在研究soa,如果你有sdo方面的代码,麻烦您给我一份作为参考,谢谢
--litao
5. re: 编程使用SDO[EMF兄弟篇]
评论内容较长,点击标题查看
--1984prince
Powered By:
博客园
模板提供
:
沪江博客