Camel-Olingo2: ограничения метаданных '[Nullable=true, MaxLength=16]' не соответствуют литералу

Я использую компонент camel-olingo2 для запроса SAP SuccessFactors на конечных точках ODataV2. Маршрут:

        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: использовать HTTPS-запросы с парсингом JSON, это довольно просто, но немного скучно.

0 ответов

Другие вопросы по тегам