我正在使用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 对于这种情况。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top