我尝试使用Acceleo将模型转换为Eclipse插件中的文本。模型很好,加载的Acceleo模块看起来也很好。仍然,加速器不产生任何东西。
这是我的代码:
AcceleoService as = new AcceleoService(new PreviewStrategy());
URI alfToSpecSharpTemplate;
try {
alfToSpecSharpTemplate = getTemplateURI("my-valid-uri", new Path("/path/to/generate.emtl"));
} catch (IOException e) {
e.printStackTrace();
return null;
}
as.addListener(new IAcceleoTextGenerationListener() {/* print every method name on call */});
ResourceSet mtlSet = new ResourceSetImpl();
final Resource mtlRessource = mtlSet.getResource(alfToSpecSharpTemplate, true);
final Module module = (Module) mtlRessource.getContents().get(0);
List<Object> arguments = new ArrayList<Object>();
Map<String, String> result = as.doGenerate(module, "generateElement", myModel, arguments, null, new BasicMonitor());
System.out.println("Generation: " + as.hasGenerationOccurred());
IAcceleoTextGenerationListener打印出listensToGenerationEnd()被调用而没有其他内容。 加载的模块在调试中看起来很好。它有generateElement-template。 generate.mtl如下所示:
[comment encoding = UTF-8 /]
[module generate('http://www.eclipse.org/papyrus/alf/Alf')]
[template public generateElement(test : Test) post (trim())]
[file('expr.specs', true)]
[test.block.generateElement() /]
[/file]
[/template]
我的问题是没有生成任何内容,即结果是空地图。还有&#34;代:假&#34;打印到控制台。特别是没有错误打印。
任何人都知道出了什么问题?我有一次工作,但我不能让它继续工作。
答案 0 :(得分:0)
通过Acceleo调试我终于找到了我的错误。 Acceleo仅查看标有[comment @main /]
的模板。由于我没有这样的模板,Acceleo不会做任何事情。所以修复只是添加@main
:
[template public generateElement(test : Test) post (trim())]
[comment @main /]
[file('expr.specs', true)]
[test.block.generateElement() /]
[/file]
[/template]