[
https://issues.apache.org/jira/browse/OLINGO-1529?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17353407#comment-17353407
]
Ronald commented on OLINGO-1529:
--------------------------------
The Bug is located in the source code of class
org.apache.olingo.client.core.communication.request.retrieve.XMLMetadataRequestImpl
in line 86.
While processing the reference includes, all schemas are added to the metadata
schema list and for each schema the corresponding alias is set.
This is fine so far, but the list of schemas in the metadata object contains
only schema object references and not clones of the schemas. So when setting an
alias for the schema of an include, all other schemas for the other includes
with the same namespace will get "overwritten", as they share the same schema
instance.
This could be fixed by cloning the CsdlSchema in code line 86.
{code:java}
// edmx:Include
for (Include include : reference.getIncludes()) {
final CsdlSchema includedSchema =
includeMetadata.getSchema(include.getNamespace()); //this schema instance
should be cloned
if (includedSchema != null) {
response.getBody().getSchemas().add(includedSchema);
if (StringUtils.isNotBlank(include.getAlias())) {
includedSchema.setAlias(include.getAlias());
}
}
}
{code}
> EdmProviderImpl aliasToNamespaceInfo incomplete
> -----------------------------------------------
>
> Key: OLINGO-1529
> URL: https://issues.apache.org/jira/browse/OLINGO-1529
> Project: Olingo
> Issue Type: Bug
> Components: odata4-client
> Affects Versions: (Java) V4 4.8.0
> Reporter: Ronald
> Priority: Major
> Fix For: (Java) V4 4.9.0
>
> Attachments: aliasToNamespaceInfo.png, metadata.xml
>
>
> According to odata-csdl-xml v4.01 specification chapter 4.1 a edmx:Reference
> can include multiple edmx:Include.
> Metadata document:
> {quote}<edmx:Reference
> Uri="/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_CAPABILITIES',Version='0001',SAP__Origin='LOCAL')/$value">
> <edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
> <edmx:Include Namespace="Org.OData.Capabilities.V1"
> Alias="SAP__capabilities"/>
> </edmx:Reference>{quote}
>
> In this scenario aliasToNamespaceInfo attribute of the EdmProviderImpl object
> only contains the alias "SAP__capabilities", but not "Capabilities".
> In consequence it is not possible to e.g. read annotation groups using alias
> "Capabilities".
--
This message was sent by Atlassian Jira
(v8.3.4#803005)