【问题标题】:RAML validation throws 'Invalid value type'RAML 验证抛出“无效值类型”
【发布时间】:2016-01-04 07:34:25
【问题描述】:

我尝试验证linkedin.raml,但由于某种原因,我得到了以下一组验证错误。

[2015-10-07 00:09:46,776] ERROR {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  Invalid value type
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  schema can not be empty
[2015-10-07 00:09:46,778] ERROR {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  invalid JSON schema: no JSON Text to read from input
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  example can not be empty
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  schema can not be empty
[2015-10-07 00:09:46,778] ERROR {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  invalid JSON schema: no JSON Text to read from input
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  example can not be empty
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  schema can not be empty
[2015-10-07 00:09:46,778] ERROR {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  invalid JSON schema: no JSON Text to read from input
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  example can not be empty
[2015-10-07 00:09:46,778]  WARN {org.wso2.carbon.registry.custom.extensions.handlers.utils.RAMLProcessor} -  schema can not be empty
...

下面是我用来验证 RAML 的代码 sn-p

private boolean isValidRAML(String sourceUrl) {
        boolean isNoError = true;

        List<ValidationResult> results = RamlValidationService.createDefault().validate(sourceUrl);
        Iterator<ValidationResult> resultsIterator = results.iterator();
        while (resultsIterator.hasNext()) {
            ValidationResult valResult = resultsIterator.next();
            String resultLevel = valResult.getLevel().toString();
            String resultMessage = valResult.getMessage();
            if (CommonConstantsRAML.ERROR_PARAMETER_NAME.equals(resultLevel)) {
                log.error(resultMessage);
                isNoError = false;
            } else if (CommonConstantsRAML.WARN_PARAMETER_NAME.equals(resultLevel)) {
                log.warn(resultMessage);
            }
        }

        return isNoError;
    }

这是预期的吗?如果不是,是什么原因造成的?如需更多参考,请查找我在我的轨道包中使用的一组 mvn 依赖项。

<dependencies>
        <dependency>
            <groupId>org.raml</groupId>
            <artifactId>raml-parser</artifactId>
            <version>0.8.11</version>
            <exclusions>
                <exclusion>  
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>xml-apis</groupId>
                    <artifactId>xml-apis</artifactId>
                </exclusion>
            </exclusions> 
        </dependency>
        <dependency>
            <groupId>org.wso2.carbon</groupId>
            <artifactId>org.wso2.carbon.logging</artifactId>
            <version>4.2.0</version>
        </dependency>
    </dependencies>

显然在 linkedin.raml 的行号 :178 中导致了此问题。这是为什么呢?

175:settings:
176:        authorizationUri: https://www.linkedin.com/uas/oauth2/authorization
177:        accessTokenUri: https://www.linkedin.com/uas/oauth2/accessToken
178:        authorizationGrants: code  

【问题讨论】:

  • 不确定此 RAML 是否有效:有很多地方定义了 JSON 模式属性但留空。你能做一个查找/替换来摆脱空的schema: |属性,看看你是否可以在这个改变之后验证?
  • 但是当我将它上传到anypoint.mulesoft.com/apiplatform 时,它并没有显示任何错误。
  • 也许那里使用了不同的解析器?无论如何,您是否尝试过我的建议?这将有助于我们缩小问题范围。
  • 现在我看不到“无效的 JSON 模式:没有要从输入读取的 JSON 文本”错误消息。我看到的唯一错误是“无效的值类型”。请在问题末尾找到随附的屏幕截图。
  • authorizationGrants 应该是一个列表:authorizationGrants: [code] 参见规范:github.com/raml-org/raml-spec/blob/master/raml-0.8.md#oauth-20

标签: maven yaml raml raml-java-parser


【解决方案1】:

不幸的是,您使用的 RAML 充满了错误。它可能对应于旧版本的规范?

无论如何,要解决问题:

  • 查找/替换以摆脱空的schema: | 属性,
  • 修复authorizationGrants,使其变成一个列表:authorizationGrants: [code]

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    相关资源
    最近更新 更多