2

我正在使用 camel-olingo2 组件在 ODataV2 端点上查询 SAP SuccessFactors。路线是:

        from("direct:start")
            .to(olingoEndpoint)
            .process(paging)
            .loopDoWhile(simple("\${header.CamelOlingo2.\$skiptoken} != null"))
            .to(olingoEndpoint)
            .process(paging)
            .end()

分页处理器是:

    Processor paging = new Processor() {
    @Override
    void process(Exchange g) throws Exception {
        ODataDeltaFeed feed = g.in.getMandatoryBody(ODataDeltaFeed)
        if (consumer) feed.getEntries().forEach(consumer)
        String next = feed.getFeedMetadata().getNextLink()
        if (next) {
            List<NameValuePair> lst = URLEncodedUtils.parse(new URI(next), StandardCharsets.UTF_8)
            NameValuePair skiptoken = lst.find { it.name == "\$skiptoken" }
            g.out.headers."CamelOlingo2.\$skiptoken" = skiptoken.value
        } else {
            g.out.headers.remove("CamelOlingo2.\$skiptoken")
        }
    }
}

大多数实体一切正常,但有几个实体的字段具有错误的可空性或数据长度,所以我得到:

Caused by: org.apache.olingo.odata2.api.edm.EdmSimpleTypeException: The metadata constraints '[Nullable=true, MaxLength=16]' do not match the literal 'Bor.Kralja Petra I.16'.
at org.apache.olingo.odata2.core.edm.EdmString.internalValueOfString(EdmString.java:62)
at org.apache.olingo.odata2.core.edm.AbstractSimpleType.valueOfString(AbstractSimpleType.java:91)
at org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readSimpleProperty(JsonPropertyConsumer.java:236)
at org.apache.olingo.odata2.core.ep.consumer.JsonPropertyConsumer.readPropertyValue(JsonPropertyConsumer.java:169)

在 Olingo2 骆驼组件的文档中,我找不到禁用此检查或其他解决方法的方法。你能建议我的好方法吗?请不要推荐服务器端数据更改,例如元数据修改,这超出了此任务的范围。

我有计划 B:使用带有 JSON 解析的 HTTPS 请求,这很简单,但有点无聊。

4

0 回答 0