Преобразователь значений для моей грамматики XText зависит от предпочтения затмения, поэтому мне нужно получить проект текущего файла.Я пробовал это:
class IStringValueConverter extends OtherIStringValueConverter {
@Inject MyLanguageGrammarAccess grammarAccess
// this is called in toValue(String string, INode node) if some conditions are fullfilled
override correctAssignementValue(String path, INode node, AssignmentImpl assign) {
try {
val uri = assign.eContainer.eResource.URI //<<<<<< ?????
val root = ResourcesPlugin.getWorkspace().getRoot();
val file = root.getFile(new Path(uri.toPlatformString(true)));
[do something for which I need the file]
return super.correctAssignementValue(path, node, assign)
} catch (Exception ex) {
ex.printStackTrace
return path
}
}
}
Проблема в строке, отмеченной вопросительными знаками.Я пытался:
assign.eContainer.eResource.URI
assign.eResource.URI
node.grammarElement.eResource.URI
Все они возвращают один и тот же URL: classpath:/my/Language.xtextbin
Это файл, созданный XText, а не мой ресурс.Что я делаю не так, как я могу получить ресурс, который в данный момент анализируется?