快速业务通道

使用EMF进行元建模:生成具体、可重用的Java代码片段 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
为 ''.ecorex'')创建和配置一个 EMF(GenModel)。为此,在模型上右键单击并选择 New > Other > Eclipse Modeling Framework > EMF Model(对于 EMF V2.5+ [Galileo, Helios],应选择 New > Other > Eclipse Modeling Framework > EMF Generator Model。)创建完成之后,需要在属性组 Templates & Merge 下配置 3 个属性,在 Model 下配置第四个属性。

图 16. GenModel — Templates & Merge

使用EMF进行元建模:生成具体、可重用的Java代码片段(11)

时间:2010-11-03 IBM Ken McNeill

将 Dynamic Templates 设置为 true。

指定 Template Directory。

将 EMFX(扩展的元模型插件 ID)添加到 Template Plug-in Variables。

最近版本:在 Model 组属性下,将 Suppress Interfaces 设置为 true。

现在可以进行构建了,右键单击 GenModel 并选择 Generate Model Code。如果一切顺利,在具体的 Test 项目(我们的项目称为 Test2)的源文件夹(src)中,您应该可以看到生成的 Java 源代码包和类,其中一个名为 mypackage.impl.MyClassImpl.java。打开该文件,您应该会看到两个生成的方法。

清单 5. MyClassImpl.java

public    void printTimestampMessage(String message) {   // created by implementedGenOperation.TODO.override.javajetinc   // ** EOperationX implementation **   java.lang.String timestampStr = null;   long timestamp;   timestampStr = "; Timestamp = ";   timestamp = java.lang.System.currentTimeMillis();   java.lang.System.out.print(message);   java.lang.System.out.print(timestampStr);   java.lang.System.out.println(timestamp);   } public    int getDayOfWeek(int year, int month, int date) {   // created by implementedGenOperation.TODO.override.javajetinc   // ** EOperationX implementation **   int result;   int DAY;   java.util.Calendar calendar = null;   calendar = java.util.Calendar.getInstance();   calendar.set(year , month , date);   DAY = java.util.Calendar.DAY_OF_WEEK;   result = calendar.get(DAY);   return result;   }

可以添加一个 main 方法测试这个类。

警告和故障诊断

Ecore 文件命名 (EMF V2.5+)

在 EMF V2.5 之前,正如上面的几个屏幕快照所示,从一个扩展了的 Ecore 模型生成的具体模型应该保留 ''.ecorex'' 的扩展名(如创建时的向导所建议的那样)。这有助于区别扩展了的模型与 ‘初级的’ Ecore 模型。然而,在 EMF 的最新版本中,genmodel 向导(如在图 16 之前所解释的)不接受除 .ecore 之外的其他文件扩展名。

JET Editor 局限性

要获得 JET 模板的语法突出显示功能,您需要安装 Eclipse JET Editor(JET Editor Plugin 最近已经从 EMF 迁移到 M2T)。

但是,在撰写本文时,JET Editor 的最新版本不能正确处理 Java 内容帮助或嵌套 JET 包含文件(比如 .javajetinc 文件)的动态编译。此外,为了确保构建成功,只能在父文件(比如上面的 Class.javajet)中指定导入操作,而不能在包含的文件中指定。

实际上,使用一些额外配置(即,使用项目的上下文菜单),您可以将 EMF 动态模板项目(本文示例中的 Test2)转换为 JET 项目。在实践中,上面提及的局限性以及 EMF 和 M2T/JET 之间缺少集成,使得这种方法不太可行。

因此,很难捕获和改正包含的模板文件中的错误。由于在生成最终代码之前,JET 模板首先会被编译为一种中间 Java 文件(默认情况下位于一个隐藏的

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号