gpt4 book ai didi

java - 无法将新的 validator 类添加到 Xtext 中的 AbstractJavaValidator

转载 作者:搜寻专家 更新时间:2023-11-01 03:07:31 25 4
gpt4 key购买 nike

我这里有个小问题。尽管它与 Xtext 有关,但我认为该解决方案可能与 Java 更相关。

我正在使用 Xtext 创建一个工作正常的语法。语法有一个名为 BufferValidator 的现有验证。它被正确定义为

public class BufferValidator extends AbstractSPJavaValidator {

// Validation methods which work fine

}

我添加了另一个 .

public class FreqValueValidator extends AbstractSPJavaValidator{

// Some new validation methods

}

现在,当我运行该项目时,文件夹 src-gen/会自动创建并在名为 AbstractSPJavaValidator 的文件中包含验证信息。

**Snip**
@ComposedChecks(validators= {gem.demo.validation.BufferValidator.class})
public class AbstractSPJavaValidator extends AbstractDeclarativeValidator {

// Methods here
}

}

很明显,我的新 validator 没有添加到 @ComposedChecks validator 列表中。现在,如果我自己在文件中添加我的 validator (理想情况下我不应该这样做,因为这个文件是自动生成的)它会按预期工作。

知道我在这里可能遗漏了什么。对于初学者,我确实在添加新的验证类后重新创建/重新生成了语法符号。

最佳答案

希望我正确理解了您的情况:

BufferValidator 是自动生成的 validator ,默认情况下只有那些验证有效。您想要添加另一个名为 FreqValueValidator 的 validator ,它仅在您操作 src-gen 文件夹中的抽象类时有效,该文件夹将被下一个构建覆盖。

您可以拆分您的 validator 并在“主” validator 中定义它们,在您的情况下为 BufferValidator,并使用 @ComposedChecks 注释。在子 validator 中,您必须覆盖 register 方法。它不是必需的,也不应调用 super 方法,只需将其留空并添加注释即可。

缓冲区 validator :

@ComposedChecks(validators = { FreqValueValidator.class })
public class BufferValidator extends AbstractSPJavaValidator {

// Validation methods which work fine

}

频率值 validator :

public class FreqValueValidator extends AbstractDeclarativeValidator {

@Override
@Inject
public void register(EValidatorRegistrar registrar) {
// nothing to do
}

// Some new validation methods
}

我从官方 xtext 支持论坛得到了这个解决方案,但遗憾的是没有再次找到该线程。我正在使用它,它就像一个魅力。我希望我在上面的代码中做对了任何事情,它未经测试。但它应该能让你继续前进。

关于java - 无法将新的 validator 类添加到 Xtext 中的 AbstractJavaValidator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17316899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com