2014-10-13 5 views
0

모델을 이클립스 플러그인의 텍스트로 변환하는 데 Acceleo를 사용하려고했습니다. 모델은 괜찮지 만로드 된 Acceleo 모듈도 괜찮아 보입니다. 그래도 acceleo는 아무 것도 생성하지 않습니다. listensToGenerationEnd()가 호출되지 및 아무것도됩니다모델과 모듈이로드 되어도 아무 것도 생성되지 않고 오류가 발생하지 않습니다.

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 인쇄 :

여기 내 코드입니다. 로드 된 모듈이 디버그에서 제대로 표시됩니다. generateElement 템플릿이 있습니다. 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] 

내 문제는 아무 것도 생성되지 않습니다. 결과는 빈지도입니다. 또한 "Generation : false"가 콘솔에 인쇄됩니다. 특히 오류가 인쇄되지 않습니다.

누구나 무슨 일이 일어나고 있는지 알 수 있습니까? 한 번 작동했지만 더 이상 작동하지 않습니다.

답변

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] 
관련 문제