WEB开发网
开发学院软件开发Java 使用 Eclipse Modeling Framework 进行建模,第 2... 阅读

使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java Emitter Templates 生成代码

 2009-12-17 00:00:00 来源:WEB开发网   
核心提示: 然后在想要使用这个定制骨架的任何 JET 模板中,向 javajet 文件中的 jet 声明添加 skeleton="custom.skeleton" 属性,使用 Eclipse Modeling Framework 进行建模,第 2 部分:使用 Eclipse 的 Java

然后在想要使用这个定制骨架的任何 JET 模板中,向 javajet 文件中的 jet 声明添加 skeleton="custom.skeleton" 属性。

或者,也可以使用它对基类进行扩充,例如 public class CLASS extends MyGenerator ,并在基类中添加所有必要的帮助器方法。这样可能会更加整洁,因为它保留了代码的通用性,并可以简化开发过程,因为 JET 编译器并不能总是给出最正确的错误消息。

定制骨架也可以用来修改方法名和 generate() 方法的参数列表,这样非常挑剔的开发人员就可以任意定制模板。说 JET 要将 generate() 的代码替换为要生成的代码,其实有些不太准确。实际上,它只会替换在骨架中声明的最后一个方法的代码,因此如果粗心地修改骨架的代码,就很容易出错,而且会让您的同事迷惑不解。

使用 CodeGen

正如您可以看到的一样,模板一旦编译好之后,就是一个标准的 Java 类。要在程序中使用这个类,只需要分发编译后的模板类,而不需要分发 javajet 模板。或者,您可能希望让用户可以修改模板,并在启动时自动重新编译模板。EMF 可以实现这种功能,任何需要这种功能或对此感兴趣的人都可以进入 plugins/org.eclipse.emf.codegen.ecore/templates 中,并修改 EMF 生成模型或编辑器的方式。

如果您只是希望可以只分发编译后的模板类,那么编译过程可以实现自动化。迄今为止,我们只看到了如何使用 JET Eclipse 插件来编译 JET 模板,但实际上我们可以编写一些脚本来实现这种功能,或者将生成代码的工作作为一项 ANT 任务。

运行时编译模板

要让最终用户可以定制模板(以及对模板的调试),可以选择在运行时对模板进行编译。实现这种功能有几种方法,首先我们使用一个非常有用的类 org.eclipse.emf.codegen.jet.JETEmitter ,它可以对细节进行抽象。常见的(但通常是错误的)代码非常简单,如清单 7 所示。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:使用 Eclipse Modeling

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接