Получение XtextResource из дерева EObject (модель) - PullRequest
0 голосов
/ 09 февраля 2012

Ради простоты скажем, у меня есть несколько Xtext DSL, которые все описывают какой-то запрос. Одним из них является мой «базовый» DSL. Теперь я хотел бы перевести один из моих DSL в мой «базовый» DSL и получить строковое представление модели.

Я создал EFactory через

MyDslFactory factory = new MyDslFactoryImpl();

Затем я вручную обхожу XtextResource исходного DSL (я получил это из EmbeddedEditor) и использую фабрику target-DSL для построения моей модели (дерева EObject). Теперь я хотел бы получить текстовое представление этой модели, но именно здесь я застрял. Я знаю, как получить строковое представление XtextResource, так что я думаю, что это путь, но я не знаю, как создать XtextResource из EObject-дерева.

В org.eclipse.xtext.junit.AbstractXtextTests есть метод

 doGetResource(InputStream in, URI uri) 

но сейчас я не нахожу способ получить InputStream от моей модели.

Есть ли способ создать XtextResource из дерева объектов или есть более простой способ сделать то, что я хотел бы сделать?

1 Ответ

2 голосов
/ 09 февраля 2012

Если вы просто хотите сериализацию текста, вы должны получить экземпляр org.eclipse.xtext.serializer.ISerializer, используя инъекцию.

Убедитесь, что вы определили некоторые правила форматирования в Formatter, в противном случае читаемость вывода будет немного "ограниченной"; -)

...