olingo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sumit (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (OLINGO-1008) Metadata Parser is unable to parse external references of Microsoft dynamics CRM Odata metadata
Date Thu, 12 Jan 2017 13:44:51 GMT

    [ 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)

Mime
View raw message