Xtext从验证器获取项目根目录

时间:2014-03-13 11:44:44

标签: grammar xtext xtend

我需要在Xtext项目中验证特定文件的存在。该文件具有与验证对象类似的路径,但具有其他根目录,例如:

  

$ projPath / SRC / DIR1 / DIR2 / ValidatedFile.src

     

$ projPath /资源/ DIR1 / DIR2 / SchoudBeExistFile.src

在validate函数中,我只获取具有相对路径(/src/dir1/dir2/ValidatedFile.src)的资源。但我不知道项目路径,所以我无法检查/resources/dir1/dir2/SchoudBeExistFile.src的存在。

你能帮我找一下验证函数中的绝对项目路径吗? @Check def checkExternalFileExistance(MyType my) { val myTypeFullPath = ?? val projectPath = ?? }

由于

更新 通过org.eclipse.core.resourcesorg.eclipse.core.runtimeplugin.xml插件依赖项添加到xtext项目并使用语法风格的this解决方案来解决此问题。没有必要的绝对路径。

@Check
def checkExternalFlowDirExistance(MyType my) {
    val platformString = my.eResource.URI.toPlatformString(true);
    val myFile = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(platformString));
    val proj = myFile.getProject();
    val shouldExistsFile = proj.geFile("/resources/dir1/dir2/SchoudBeExistFile.src")
    if (!shouldExistsFile.exists) {
    // error
    }
}

1 个答案:

答案 0 :(得分:2)

您可以从资源获取完整路径:

@Check
def checkEventFileNameEqualsEventName(Mytype my){
    val myTypeFullPath=my.eResource.URI.toPlatformString(true)
}