2017-01-28 2 views
0

En utilisant la méthode dansImpossible de générer le fichier de sortie à l'aide à l'aide xtext IFileSystemAccess2

https://christiandietrich.wordpress.com/2011/10/15/xtext-calling-the-generator-from-a-context-menu/

pour appeler une fonction pour un modèle de texte transformation. Les classes utilisées pour générer le fichier texte ne sont pas les mêmes que dans l'exemple:

class TransformMcrl2{ 

    def doGenerate(Resource input, IFileSystemAccess2 fsa, IGeneratorContext context) { 
     fsa.generateFile("testfile.txt" , "Content") 
    } 

} 

et le segment de code utilisé pour appeler doGenerate

// load the Xtext model to an XtextResourceSet 
XtextResourceSet resourceSet = aresourceSetProvider.get(); 
// get the resource and resolve all references 
Resource resource = resourceSet.getResource(uri, true); 
EcoreUtil.resolveAll(resource); 
IResource documentResource = xtextDocument.getAdapter(IResource.class); 
IProject project = documentResource.getProject(); 

final EclipseResourceFileSystemAccess2 fsa = fileAccessProvider.get(); 
IFolder srcGenFolder = project.getFolder("lps-gen"); 
if (!srcGenFolder.exists()) { 
    try { 
     srcGenFolder.create(true, true, new NullProgressMonitor()); 
    } catch (CoreException e) { 
     return null; 
    } 
} 
fsa.setProject(project); 
String tmpFileName = srcGenFolder.getFullPath().toString(); 
fsa.setOutputPath(tmpFileName); 

TransformMcrl2 generator = new TransformMcrl2(); 
generator.doGenerate(resource, fsa, new GeneratorContext()); 

la méthode doGenerate donner une exception InvocationTargetException et itws la cause indiquent l'erreur est une exception NullPointerException.

Dois-je hériter d'IGenerator?

De même, org.eclipse.xtext.builder.participant n'a pas été désactivé, car plus d'un modèle de conversation textuelle sera nécessaire.

+1

cette même question déjà répondu ici: http://stackoverflow.com/questions/41665691/xtext-appel-the-generator-from-a-context-menu/41666069#41666069 par exemple l'accès devrait avoir besoin d'un moniteur de progression et d'un chemin de sortie différent –

+0

Aucun lien, j'ai continué à l'étape suivante, Le dossier de sortie sous le projet est 'lps-gen' et le nom de fichier est maintenant fixé dans' doGenerate' – Johan

+0

oui mais le code est différent et cela pourrait causer votre problème –

Répondre

1

Assurez-vous

  1. vous créez des choses comme générateur via Guice
  2. régler le moniteur d'activité du système de fichiers accès
  3. définir le chemin de sortie correcte fsa.setOutputPath("xxx")