如何使用Olingo Java客户端/ ODATA从EdmEntitySet解析注释

时间:2019-01-21 14:15:09

标签: java odata olingo

假设我在odata服务中定义了以下实体集

<EntitySet Name="Photos" EntityType="Microsoft.OData.SampleService.Models.TripPin.Photo">
<Annotation Term="Org.OData.Core.V1.ResourcePath" String="Photos"/>
<Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
<Record>
<PropertyValue Property="Searchable" Bool="true"/>
<PropertyValue Property="UnsupportedExpressions">
<EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none</EnumMember>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">...</Annotation>
</EntitySet>

我能够从实体容器中获取该实体,但我也想捕获使用它定义的注释。 例如,在这种情况下,我想知道此实体集上有哪些各种SearchRestrictions。

一旦我们通过使用entitySet.getAnnotations()获得批注,便无法从批注中获取更多信息,例如term,qualifier,property等,因为它们的所有getter都返回null。 我正面临https://issues.apache.org/jira/browse/OLINGO-983中提到的确切问题,但是我的用例略有不同,因此我无法正确使用此修复程序,需要帮助。

这就是我通过身份验证从网址读取元数据的方式

EdmMetadataRequest request = client.getRetrieveRequestFactory().getMetadataRequest(serviceUrl);
ODataRetrieveResponse<Edm> response = (ODataRetrieveResponse<Edm>) OdataRequestUtil.executeRequest(request, authDetails); 
//execute Request method just set authentication headers and then call request.execute()
edm = response.getBody();

0 个答案:

没有答案