【发布时间】: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