Как анализировать аннотации из EdmEntitySet с помощью клиента Olingo Java / ODATA 4 - PullRequest
0 голосов
/ 21 января 2019

Предположим, у меня есть набор сущностей, определенный ниже в сервисе 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 (), мы не сможем получить дополнительную информацию из аннотации, такую ​​как термин, квалификатор, свойство и т. Д., Поскольку все их получатели возвращают нуль. Я столкнулся с точной проблемой, упомянутой в https://issues.apache.org/jira/browse/OLINGO-983, но мой сценарий использования немного отличается, поэтому я не могу использовать это исправление правильно и мне нужна помощь.

Вот как я читаю метаданные из URL с аутентификацией

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();
...