【问题标题】:Invoking acceleo template from java app从 java 应用程序调用 acceleo 模板
【发布时间】:2012-04-11 16:23:51
【问题描述】:

大家好,我是 acceleo 的新手

在我的项目中,我有一个调用不同加速模板的 java 驱动程序类。一些模板具有没有任何 EObject 类型的参数。我正在为模板调用生成的 java 模块的 initialize() 和 doGenerate() 函数。面临的问题是:

  1. initialize() 期望第一个参数为 Ecore 对象,其余参数为 List。然而,正如我提到的,一些模板没有任何 EObject 参数。如何从 Java 应用程序调用此类模板?

  2. 为了解决上述问题,我调整了我的驱动程序和模板,将虚拟 EObject 作为第一个参数。然后它成功调用模板,但不会生成任何输出。如果我从另一个驱动程序模板调用它们,模板会生成输出。但是我不想用 MTL 编写我的驱动程序,因为它需要对数据模型进行复杂的分析。

请就我的情况如何取得进展提出建议。

感谢&问候
Dhanunjaya M.

【问题讨论】:

    标签: java acceleo


    【解决方案1】:

    默认情况下,我们通过我们生成的 Java 类与“主”模板的模块和 Acceleo“外观”类一起公开的 API 始终假定有一个 EObject 作为要调用的模板的第一个参数。这样做是为了方便大多数用例的使用(我们希望这个用例占总数的 90%)。

    对于其他用例,您将不得不利用这些外观背后的 API。也就是说,当您根本没有 EObject 时,您可以创建另一个不将 EObject 作为参数的“初始化”方法。然后,您还需要重写“generate(Monitor)”方法,使其不使用 AcceleoService.doGenerate... 或 AcceleoService 的任何其他方法:这就是我所说的“外观”类。

    您需要调用一个模仿 AcceleoService.doGenerate 所做的方法,而不依赖于 EObject 来查找需要调用的模板。如果手头没有 Acceleo 的 SDK 或源码,可以通过 github 看代码:AcceleoService#doGenerate

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多