ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

无法在Xtext中向AbstractJavaValidator添加新的验证器类

2019-06-29 13:49:07  阅读:201  来源: 互联网

标签:java xtext


我这里有一个小问题.即使它与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 
        }

}

显然,我的新验证器未添加到@ComposedChecks验证器列表中.现在如果我自己在文件中添加我的验证器(理想情况下我不应该自动生成此文件),它按预期工作.

知道我在这里可能缺少什么.对于初学者,我在添加新的验证类后重新创建/重新生成语法符号.

解决方法:

我希望我能正确理解你的情况:

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

您可以拆分验证器,并使用@ComposedChecks注释在您的案例中的“主”验证器,BufferValidator中定义它们.在子验证器中,您必须覆盖寄存器方法.它不是必需的,不应该调用super方法,只需将其留空并注释.

BufferValidator:

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

// Validation methods which work fine 

}

FreqValueValidator:

public class FreqValueValidator extends AbstractDeclarativeValidator {

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

    // Some new validation methods
}

我从官方的xtext支持论坛得到了这个解决方案,但遗憾的是没有找到该主题.我正在使用它,它就像一个魅力.我希望我在上面的代码中得到了任何正确的信息,这是未经测试的.但它应该让你去.

标签:java,xtext
来源: https://codeday.me/bug/20190629/1326611.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有