从java应用程序调用加速模板

时间:2012-04-09 06:43:25

标签: java acceleo

大家好我非常喜欢加速

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

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

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

  3. 请告诉我如何在我的案件中取得进展。

    感谢和安培;问候
    Dhanunjaya M。

1 个答案:

答案 0 :(得分:1)

我们默认通过我们在“主”模板模块和Acceleo“facade”类中生成的Java类公开的API总是假设有一个EObject作为要调用的模板的第一个参数。这样做是为了便于大多数用例的使用(我们希望这个用例占总数的90%)。

对于其他用例,您必须使用这些外观背后的API。也就是说,您可以创建另一个“初始化”方法,当您根本没有EObject作为参数时,它们不会将这些情况作为参数。然后,您还需要覆盖“generate(Monitor)”方法,以便它不使用AcceleoService.doGenerate ...或者任何其他AcceleoService方法:这是我正在谈论的“facade”类。

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