启用EMF的自动生成UUID功能

缺省条件下,EMF不会为每个对象维护一个唯一的id,这在一些情况下不太方便,例如要在web环境下编辑一个EMF模型实例,通常需要在URL里传递对象的id以便确定目标。

有两种方式解决这类问题。第一种是在模型里给每个对象增加一个id属性,并维护使其保持唯一,例如在XXXFactorycreateXXX()方法里为这个属性赋值。

另一种方式是借助EMF的功能。其实EMF的XMIResource维护了一个id与对象的映射表,并且会为每个新创建的对象自动赋值,只要稍微设置一下就可以启用这个功能,具体的方法如下。

  1. xxx.genmodel里选中package节点,在属性视图里把Resource Type属性的值设置为XMI

file

  1. 重新生成代码,EMF生成的代码里会比原来多出XXXResourceImpl.java文件。

  2. XXXResourceImpl.java里,覆盖useUUIDs()方法,让其返回true(缺省返回的是false)。

  3. 重新生成代码。(删除以前的Manifest.MFplugin.xml文件以便这两个文件能得到更新)

这样,如果用文本方式查看新创建的模型实例文件,会发现每个对象都多出一个xmi:id属性,如xmi:id="_gitpslkoEd2PdI7FPnuunA"。要在程序里使用这个id,只需要用resource.getId(eobject)即可得到,其中resource可以通过eobject.eResource()很方便的获得。

参考链接

How To Enable UUID In EMF Generated Model To Get Copy&Paste Working
这个链接里的方法太麻烦了,但功效一样。

Eclipse GMF - Enabling UUIDs in Semantic model - The Simplest Way
GMF的时候这个链接里的方法应该比较方便

Eclipse 3.4新特性 – Plug-in spy

Eclipse 3.4提供了一个新功能:在任何界面下按Alt+Shift+F1 (Windows, Mac OS里用Shift+Option+F1),就可以看到Eclipse用来实现当前选中界面元素的类。

这个功能至少我看起来对插件开发人员很有用,因为当你想要模仿实现(或利用)Eclipse里的某个界面时,不用再像以前那样猜这个界面的实现类的名字了。比如最开始我就用了很久才找到属性视图的实现类是PropertySheet,而我总是朝着PropertyView的方向找,当然很难找到。

file

Plug-in Spy本是一个单独的小项目,在3.4里直接集成到workbench里了。

来源:Eclipse 3.4 Hidden Treasures