如何处理ODATA函数导入不返回包装器元素

时间:2019-07-05 04:38:39

标签: sap-cloud-sdk

在我们的解决方案中,我们在S / 4HANA端调用基于CDS的自定义ODATA API,其中包括函数导入。为此,我们通过maven-plugin为ODATA接口生成了Java服务。调用的函数导入基于BOPF,并且生成的实现未返回与SAP Cloud SDK期望相符的结果,即所生成的JSON对象具有名为函数import的成员。

我们检查了是否可以更改生成的ODATA实现,但在S / 4HANA中没有配置可以更改。

在进行调用时,我已经调试了SDK的实现,并在FunctionImportResponseParser中找到了以下代码,从而做出了以下假设:

    <T> T getEntityFromResponse(
        final InputStream responseContent,
        final String edmFunctionImportName,
        final Class<? extends T> entityJavaType )
        throws IOException,
            IllegalArgumentException
    {
        final JsonObject responseJsonObject = getJsonObjectFromResponse(responseContent);

(X)     if( responseJsonObject.has(edmFunctionImportName) ) {
            final JsonElement jsonElement = responseJsonObject.get(edmFunctionImportName);
            return getEntityFromJsonElement(jsonElement, entityJavaType);
        }

        return null;
    }

由于用(X)标记的if语句以及函数导入直接返回不将其包装在期望成员中的对象的事实,结果返回null。

所以对我来说,问题是,SDK是否应该也可以处理这种情况,或者错误是否在于S / 4HANA API是否未返回符合ODATA的结果。

0 个答案:

没有答案