如何将一些缓存的信息附加到Eclipse编辑器或资源?
-
25-10-2019 - |
题
我正在使用Eclipse的Xtext Framework开发DSL。
对于内容辅助/代码完成,我有一个昂贵的过程,为我生成了一个字符串列表。
如何缓存该过程的结果?
长篇小说:我的DSL与Groovy脚本接口。这些脚本提供了我在DSL中某些地方提供的方法。这很慢,即使我使用RegexP来解析脚本的方法。因此,我想缓存脚本分析的结果。
从我的分析中,在验证期间调用分析代码(因此我并不总是有编辑器)以及用户打开DSL文件时。
没有办法判断验证何时结束(代码使用私有方法,XTEXT开发人员拒绝更改该验证)。但是我认为,在编写Eclipse编辑器/编译器时,这一定是一个常见的问题。其他人如何解决这个问题? Eclipse框架中是否有一些缓存服务?
解决方案
您可以使用JVM模型Xtext提供的。只要您安装了Groovy插件,它的类型和方法就应通过它提供。
缓存:
在资源上,有一个缓存,如果有更改,该缓存将自动驱逐。
((XtextResource)x.eResource()).getCache().get(myKey, x.eResource(),
new Provider<List<String>>(){
public List<String> get() {
return computeGroovyMethodNames();
}
})
缓存也可以注入:
@Inject
private IResourceScopeCache cache
其他提示
我不确定,但我认为你可以重复使用 org.eclipse.xtext.util.SimpleCache
对于这种情况。
不隶属于 StackOverflow