Repository: olingo-odata4 Updated Branches: refs/heads/master 36e45f021 -> 7dedb25c3
[OLINGO-1100]Get related binding target returns wrong entity set Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/8130360d Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/8130360d Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/8130360d Branch: refs/heads/master Commit: 8130360d7cfa773e4720afb9aa9f732f19e10348 Parents: 891421d Author: Archana Rai <[email protected]> Authored: Thu Jun 22 16:27:39 2017 +0530 Committer: Archana Rai <[email protected]> Committed: Thu Jun 22 16:27:39 2017 +0530 ---------------------------------------------------------------------- .../apache/olingo/client/core/MetadataTest.java | 27 ++++++++++ .../apache/olingo/client/core/olingo1100.xml | 57 ++++++++++++++++++++ .../core/edm/AbstractEdmBindingTarget.java | 2 +- 3 files changed, 85 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8130360d/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java ---------------------------------------------------------------------- diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java index 181335b..d624968 100644 --- a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java +++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java @@ -21,6 +21,7 @@ package org.apache.olingo.client.core; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.io.InputStream; @@ -455,4 +456,30 @@ public class MetadataTest extends AbstractTest { assertEquals("EnumMember", expression.getExpressionName()); } } + @Test + public void testOLINGO1100() { + final Edm edm = client.getReader().readMetadata(getClass().getResourceAsStream("olingo1100.xml")); + assertNotNull(edm); + final EdmEntityContainer container = edm.getEntityContainer( + new FullQualifiedName("Microsoft.Exchange.Services.OData.Model", "EntityContainer")); + assertNotNull(container); + final EdmEntitySet providers = container.getEntitySet("Provider"); + assertNotNull(providers); + assertEquals(edm.getEntityType(new FullQualifiedName(container.getNamespace(), "Provider")), + providers.getEntityType()); + assertEquals(container.getEntitySet("ProviderLicense"), providers.getRelatedBindingTarget("ProviderLicense")); + assertNull(providers.getRelatedBindingTarget("ProviderLicensePractice")); + assertNull(providers.getRelatedBindingTarget("Provider")); + final EdmEntitySet providerLicenses = container.getEntitySet("ProviderLicense"); + assertEquals(edm.getEntityType(new FullQualifiedName(container.getNamespace(), "ProviderLicense")), + providerLicenses.getEntityType()); + assertEquals(container.getEntitySet("ProviderLicensePractice"), + providerLicenses.getRelatedBindingTarget("ProviderLicensePractice")); + assertNull(providerLicenses.getRelatedBindingTarget("ProviderLicense")); + assertNull(providerLicenses.getRelatedBindingTarget("Provider")); + final EdmEntitySet providerLicensePractices = container.getEntitySet("ProviderLicensePractice"); + assertNull(providerLicensePractices.getRelatedBindingTarget("ProviderLicensePractice")); + assertNull(providerLicensePractices.getRelatedBindingTarget("Provider")); + assertNull(providerLicenses.getRelatedBindingTarget("ProviderLicense")); + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8130360d/lib/client-core/src/test/resources/org/apache/olingo/client/core/olingo1100.xml ---------------------------------------------------------------------- diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/olingo1100.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/olingo1100.xml new file mode 100644 index 0000000..fc5da75 --- /dev/null +++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/olingo1100.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, + software distributed under the License is distributed on an + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, either express or implied. See the License for the + specific language governing permissions and limitations + under the License. + +--> +<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"> + <edmx:DataServices m:DataServiceVersion="4.0" m:MaxDataServiceVersion="4.0" xmlns:m="http://docs.oasis-open.org/odata/ns/metadata"> + <Schema Namespace="Microsoft.Exchange.Services.OData.Model" xmlns="http://docs.oasis-open.org/odata/ns/edm"> + <EntityType Name="Provider" > + <Key> + <PropertyRef Name="Id" /> + </Key> + <Property Name="Id" Type="Edm.String" Nullable="false" /> + <Property Name="DisplayName" Type="Edm.String" /> + <NavigationProperty Name="ProviderLicense" Type="Collection(Microsoft.Exchange.Services.OData.Model.ProviderLicense)" /> + </EntityType> + <EntityType Name="ProviderLicense" > + <Key> + <PropertyRef Name="LicenseId" /> + </Key> + <Property Name="LicenseId" Type="Edm.String" Nullable="false" /> + <NavigationProperty Name="ProviderLicensePractice" Type="Collection(Microsoft.Exchange.Services.OData.Model.ProviderLicensePractice)" /> + </EntityType> + <EntityType Name="ProviderLicensePractice" > + <Key> + <PropertyRef Name="PracticeId" /> + </Key> + <Property Name="PracticeId" Type="Edm.String" Nullable="false" /> + </EntityType> + <EntityContainer Name="EntityContainer" m:IsDefaultEntityContainer="true"> + <EntitySet Name="Provider" EntityType="Microsoft.Exchange.Services.OData.Model.Provider"> + <NavigationPropertyBinding Path="ProviderLicense" Target="ProviderLicense" /> + </EntitySet> + <EntitySet Name="ProviderLicense" EntityType="Microsoft.Exchange.Services.OData.Model.ProviderLicense"> + <NavigationPropertyBinding Path="ProviderLicensePractice" Target="ProviderLicensePractice" /> + </EntitySet> + <EntitySet Name="ProviderLicensePractice" EntityType="Microsoft.Exchange.Services.OData.Model.ProviderLicensePractice"/> + </EntityContainer> + </Schema> + </edmx:DataServices> +</edmx:Edmx> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8130360d/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java index c8185fa..cade5a6 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java @@ -92,7 +92,7 @@ public abstract class AbstractEdmBindingTarget extends AbstractEdmNamed implemen if (binding.getPath() == null || binding.getTarget() == null) { throw new EdmException("Path or Target in navigation property binding must not be null!"); } - if (path.startsWith(binding.getPath())) { + if (path.equals(binding.getPath())) { final Target edmTarget = new Target(binding.getTarget(), container); final EdmEntityContainer entityContainer = edm.getEntityContainer(edmTarget.getEntityContainer());
