You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Sumit (JIRA)" <ji...@apache.org> on 2017/01/12 13:44:51 UTC

[jira] [Comment Edited] (OLINGO-1008) Metadata Parser is unable to parse external references of Microsoft dynamics CRM Odata metadata

    [ https://issues.apache.org/jira/browse/OLINGO-1008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15744731#comment-15744731 ] 

Sumit edited comment on OLINGO-1008 at 1/12/17 1:44 PM:
--------------------------------------------------------

I am also trying to connect to a Microsoft dynamics instance using Apache olingo 4.4.0 and hitting the same issue.

The exception comes from following piece of code in  XMLMetadataRequestImpl.java. URL - [0]

/**
     * Referenced document's URIs must only have the same scheme, host, and port as the
     * main metadata document's URI but don't have to start with the service root
     * as all other OData request URIs.
     */
    @Override
    protected void checkRequest(final ODataClient odataClient, final HttpUriRequest request) {
      if (parentURI == null) {
        super.checkRequest(odataClient, request);
      } else {
        if (!parentURI.getScheme().equals(uri.getScheme())
            || !parentURI.getAuthority().equals(uri.getAuthority())) {
          throw new IllegalArgumentException(
              String.format("The referenced EDMX document has the URI '%s'"
                  + " where scheme, host, or port is different from the main metadata document URI '%s'.",
                  uri.toASCIIString(), parentURI.toASCIIString()));
        }
      }
    }

Olingo restricts that the referenced document's scheme, host and port must be same as main metadata document's schema port and document. I couldn't find any such restriction being specified in by OData V4 protocol [1]

I have verified that if this restriction is removed (I commented out above piece of code after cloning olingo source code and compiled it), parsing of the metadata document succeeds without any issues.

Is there any specific reason why this restriction has been imposed ?

[0] - https://github.com/apache/olingo-odata4/blob/8515b48dd5e09e4597d0b396326bd6a074efa1f5/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java#L159
[1] - http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html


was (Author: susharm):
I am also trying to connect to a Microsoft dynamics instance using Apache olingo 4.4.0 and hitting the same issue.

The exception comes from following piece of code in  XMLMetadataRequestImpl.java. URL - [0]

/**
     * Referenced document's URIs must only have the same scheme, host, and port as the
     * main metadata document's URI but don't have to start with the service root
     * as all other OData request URIs.
     */
    @Override
    protected void checkRequest(final ODataClient odataClient, final HttpUriRequest request) {
      if (parentURI == null) {
        super.checkRequest(odataClient, request);
      } else {
        if (!parentURI.getScheme().equals(uri.getScheme())
            || !parentURI.getAuthority().equals(uri.getAuthority())) {
          throw new IllegalArgumentException(
              String.format("The referenced EDMX document has the URI '%s'"
                  + " where scheme, host, or port is different from the main metadata document URI '%s'.",
                  uri.toASCIIString(), parentURI.toASCIIString()));
        }
      }
    }

Olingo restricts that the referenced document's scheme, host and port must be same as main metadata document's schema port and document. I couldn't find any such restriction being specified in by OData V4 protocol [1]

I have verified that if this restriction is removed (I commented out above piece of code after cloning olingo source code and compiled it), parsing of the metadata document succeeds without any issues.

Is there any specific reason why this restriction has been imposed ? If not, can I go ahead and submit the patch ?

[0] - https://github.com/apache/olingo-odata4/blob/8515b48dd5e09e4597d0b396326bd6a074efa1f5/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java#L159
[1] - http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part1-protocol.html

> Metadata Parser is unable to parse external references of Microsoft dynamics CRM Odata metadata
> -----------------------------------------------------------------------------------------------
>
>                 Key: OLINGO-1008
>                 URL: https://issues.apache.org/jira/browse/OLINGO-1008
>             Project: Olingo
>          Issue Type: Bug
>          Components: odata4-client
>    Affects Versions: (Java) V4 4.2.0
>            Reporter: Prashant Singh
>
> I am currently using Apache olingo 4.2.0 and facing issue while accessing the microsoft CRM metadata and getting following exception:
> java.lang.IllegalArgumentException: The referenced EDMX document has the URI 'http://vocabularies.odata.org/OData.Community.Keys.V1.xml' where scheme, host, or port is different from the main metadata document URI 'https://crmonlinebcone.crm8.dynamics.com/api/data/v8.1/$metadata'.
> 	at org.apache.olingo.client.core.communication.request.retrieve.XMLMetadataRequestImpl$SingleXMLMetadatRequestImpl.checkRequest(XMLMetadataRequestImpl.java:154)
> 	at org.apache.olingo.client.core.communication.request.AbstractODataRequest.doExecute(AbstractODataRequest.java:271)
> 	at org.apache.olingo.client.core.communication.request.retrieve.XMLMetadataRequestImpl$SingleXMLMetadatRequestImpl.execute(XMLMetadataRequestImpl.java:164)
> 	at org.apache.olingo.client.core.communication.request.retrieve.XMLMetadataRequestImpl.execute(XMLMetadataRequestImpl.java:74)
> 	at org.apache.olingo.client.core.communication.request.retrieve.XMLMetadataRequestImpl.execute(XMLMetadataRequestImpl.java:40)
> 	at org.apache.olingo.client.core.communication.request.retrieve.EdmMetadataRequestImpl.getPrivateResponse(EdmMetadataRequestImpl.java:58)
> 	at org.apache.olingo.client.core.communication.request.retrieve.EdmMetadataRequestImpl.execute(EdmMetadataRequestImpl.java:72)
> 	at org.apache.olingo.client.core.communication.request.retrieve.EdmMetadataRequestImpl.execute(EdmMetadataRequestImpl.java:35)
> 	at com.bcone.apache.plingo.odata.TestOData.main(TestOData.java:40)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)