You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Ramya (JIRA)" <ji...@apache.org> on 2017/06/14 08:19:01 UTC
[jira] [Commented] (OLINGO-1062) Cannot consume Odata Reference
Services with Annotations
[ https://issues.apache.org/jira/browse/OLINGO-1062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16048843#comment-16048843 ]
Ramya commented on OLINGO-1062:
-------------------------------
Hi,
In the client setup the term details can be fetched as follows
XMLMetadataRequest request = getClient().getRetrieveRequestFactory().getXMLMetadataRequest("http://services.odata.org/V4/TripPinService/");
ODataRetrieveResponse<XMLMetadata> response = request.execute();
XMLMetadata xmlMetadata = response.getBody();
CsdlSchema schema = xmlMetadata.getSchema(0);
CsdlEntitySet entitySet = schema.getEntityContainer().getEntitySet("Airlines");
List<CsdlAnnotation> annotations = entitySet.getAnnotations();
for (CsdlAnnotation annotation : annotations) {
String term = annotation.getTerm();
CsdlExpression expression = annotation.getExpression();
}
Here the metadata will just be parsed and the annotations will be returned. Term definitions does not matter here. However, this matters for server side.
Regards,
Ramya
> Cannot consume Odata Reference Services with Annotations
> --------------------------------------------------------
>
> Key: OLINGO-1062
> URL: https://issues.apache.org/jira/browse/OLINGO-1062
> Project: Olingo
> Issue Type: Bug
> Components: odata4-client
> Affects Versions: (Java) V4 4.3.0
> Reporter: Lars Laegner
>
> The http://services.odata.org/TripPinRESTierService/ service returns the following annotation:
> ...
> <EntitySet Name="Airlines" EntityType="Microsoft.OData.Service.Sample.TrippinInMemory.Models.Airline"> <Annotation Term="Org.OData.Core.V1.OptimisticConcurrency"> <Collection> <PropertyPath>Name</PropertyPath> </Collection> </Annotation> </EntitySet> ...
> unfortunately, the used Org.OData.Core.V1 namespace is not referencing anywhere an alias or namespace in the schema.
> This results, when retrieving the code with the latest available OData V4 Lib for Java, in the EdmAnnotationClass Code
> public EdmTerm getTerm() {
> if (term == null) {
> if (annotation.getTerm() == null) { throw new EdmException("Term must not be null for an annotation."); }
> term = edm.getTerm(new FullQualifiedName(annotation.getTerm()));
> }
> return term; }
> that in debugging the annotation.getTerm()=="Org.OData.Core.V1.OptimisticConcurrency" but the term is then set to null from edm.getTerm() as it seems to check for available namespace/aliases in the schema and cannot find one.
> So practically, this annotation does not exist for the currently latest Olingo-OData-Client-for-Java-4.3.0
> The same for http://services.odata.org/V4/(S(tauqx0n1pg4nytucatnssdwb))/TripPinServiceRW/
> I have cross created this issue in https://github.com/OData/odataorg.github.io/issues/117 as i am not sure, wether the service is not correct or the client should be more forgiving
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)