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());

Reply via email to