Repository: olingo-odata4 Updated Branches: refs/heads/master 3a8cbcc33 -> d80bbd7af
OLINGO-1008: allowing cross-site fetching of reference metadata during fetch/resolution of Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/d80bbd7a Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/d80bbd7a Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/d80bbd7a Branch: refs/heads/master Commit: d80bbd7afd16dc039926784caa3bc6c9df3cfd6e Parents: 3a8cbcc Author: Ramesh Reddy <[email protected]> Authored: Thu Apr 13 09:51:29 2017 -0500 Committer: Ramesh Reddy <[email protected]> Committed: Thu Apr 13 09:51:29 2017 -0500 ---------------------------------------------------------------------- .../retrieve/XMLMetadataRequestImpl.java | 26 +++----------------- 1 file changed, 4 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/d80bbd7a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java index af9dbf2..22d46ad 100644 --- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java +++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/retrieve/XMLMetadataRequestImpl.java @@ -47,7 +47,7 @@ public class XMLMetadataRequestImpl @Override public ODataRetrieveResponse<XMLMetadata> execute() { - SingleXMLMetadatRequestImpl rootReq = new SingleXMLMetadatRequestImpl(odataClient, uri, null); + SingleXMLMetadatRequestImpl rootReq = new SingleXMLMetadatRequestImpl(odataClient, uri); if (getPrefer() != null) { rootReq.setPrefer(getPrefer()); } @@ -74,8 +74,7 @@ public class XMLMetadataRequestImpl for (Reference reference : rootRes.getBody().getReferences()) { final SingleXMLMetadatRequestImpl includeReq = new SingleXMLMetadatRequestImpl( odataClient, - odataClient.newURIBuilder(uri.resolve(reference.getUri()).toASCIIString()).build(), - uri); + odataClient.newURIBuilder(uri.resolve(reference.getUri()).toASCIIString()).build()); final XMLMetadata includeMetadata = includeReq.execute().getBody(); // edmx:Include @@ -132,36 +131,19 @@ public class XMLMetadataRequestImpl private class SingleXMLMetadatRequestImpl extends AbstractMetadataRequestImpl<XMLMetadata> { - private final URI parentURI; private HttpResponse httpResponse; - public SingleXMLMetadatRequestImpl(final ODataClient odataClient, final URI uri, final URI parent) { + public SingleXMLMetadatRequestImpl(final ODataClient odataClient, final URI uri) { super(odataClient, uri); - parentURI = parent; } public HttpResponse getHttpResponse() { return httpResponse; } - /** - * 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())); - } - } + // override the parent check, as the reference urls in metadata can be spanning cross-site } @Override
