Repository: olingo-odata4
Updated Branches:
  refs/heads/master d55ed59d0 -> 213a8c068


[OLINGO-1232]Metadata parsing goes into an infinite loop when there is a 
collection of Records inside Annotation groups


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/213a8c06
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/213a8c06
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/213a8c06

Branch: refs/heads/master
Commit: 213a8c06832affbc6e70f18a974adda8015bc86a
Parents: d55ed59
Author: ramya vasanth <ramya.vasa...@sap.com>
Authored: Thu Feb 8 15:03:15 2018 +0530
Committer: ramya vasanth <ramya.vasa...@sap.com>
Committed: Thu Feb 8 15:03:15 2018 +0530

----------------------------------------------------------------------
 .../edm/xml/annotation/ClientCsdlRecord.java    |    4 +-
 .../apache/olingo/client/core/MetadataTest.java |   18 +
 .../caps.products.CatalogService_default.xml    | 1086 ++++++++++++++++++
 3 files changed, 1107 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/213a8c06/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlRecord.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlRecord.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlRecord.java
index a2a1b07..57215d5 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlRecord.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/annotation/ClientCsdlRecord.java
@@ -46,8 +46,10 @@ class ClientCsdlRecord extends CsdlRecord implements 
Serializable {
           if ("Type".equals(jp.getCurrentName())) {
             record.setType(jp.nextTextValue());
           } else if ("Annotation".equals(jp.getCurrentName())) {
+                       jp.nextToken();
             
record.getAnnotations().add(jp.readValueAs(ClientCsdlAnnotation.class));
-          } else {
+          } else if ("PropertyValue".equals(jp.getCurrentName())) {
+                       jp.nextToken();
             
record.getPropertyValues().add(jp.readValueAs(ClientCsdlPropertyValue.class));
           }
         }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/213a8c06/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 1288b08..23ef55f 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
@@ -63,10 +63,12 @@ import org.apache.olingo.commons.api.edm.provider.CsdlTerm;
 import org.apache.olingo.commons.api.edm.provider.annotation.CsdlApply;
 import org.apache.olingo.commons.api.edm.provider.annotation.CsdlCollection;
 import 
org.apache.olingo.commons.api.edm.provider.annotation.CsdlConstantExpression;
+import org.apache.olingo.commons.api.edm.provider.annotation.CsdlExpression;
 //CHECKSTYLE:OFF
 import 
org.apache.olingo.commons.api.edm.provider.annotation.CsdlLogicalOrComparisonExpression.LogicalOrComparisonExpressionType;
 //CHECKSTYLE:ON
 import org.apache.olingo.commons.api.edm.provider.annotation.CsdlPath;
+import org.apache.olingo.commons.api.edm.provider.annotation.CsdlRecord;
 import org.apache.olingo.commons.api.edm.provider.annotation.CsdlUrlRef;
 import org.apache.olingo.commons.api.format.ContentType;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmDecimal;
@@ -481,4 +483,20 @@ public class MetadataTest extends AbstractTest {
     assertNull(providerLicensePractices.getRelatedBindingTarget("Provider"));
     assertNull(providerLicenses.getRelatedBindingTarget("ProviderLicense"));
   }
+  
+  @Test
+  public void issueOLINGO1232() {
+    XMLMetadata xmlMetadata  = 
client.getDeserializer(ContentType.APPLICATION_XML).
+    
toMetadata(getClass().getResourceAsStream("caps.products.CatalogService_default.xml"));
+    assertNotNull(xmlMetadata);
+    assertEquals(94, xmlMetadata.getSchema(0).getAnnotationGroups().size());
+    List<CsdlExpression> expressions = 
xmlMetadata.getSchema(0).getAnnotationGroups().get(0).
+        
getAnnotation("UI.LineItem").getExpression().asDynamic().asCollection().getItems();
+    assertEquals(6, expressions.size());
+    CsdlRecord record = (CsdlRecord) expressions.get(0);
+    assertEquals("UI.DataField", record.getType());
+    assertEquals(1, record.getAnnotations().size());
+    assertEquals("Value", record.getPropertyValues().get(0).getProperty());
+    assertEquals("image", 
record.getPropertyValues().get(0).getValue().asDynamic().asPath().getValue());
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/213a8c06/lib/client-core/src/test/resources/org/apache/olingo/client/core/caps.products.CatalogService_default.xml
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/test/resources/org/apache/olingo/client/core/caps.products.CatalogService_default.xml
 
b/lib/client-core/src/test/resources/org/apache/olingo/client/core/caps.products.CatalogService_default.xml
new file mode 100644
index 0000000..cd3d197
--- /dev/null
+++ 
b/lib/client-core/src/test/resources/org/apache/olingo/client/core/caps.products.CatalogService_default.xml
@@ -0,0 +1,1086 @@
+<?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:Reference 
Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/vocabularies/Org.OData.Core.V1.xml";>
+    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/vocabularies/Org.OData.Measures.V1.xml";>
+    <edmx:Include Alias="Measures" Namespace="Org.OData.Measures.V1"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/vocabularies/Org.OData.Capabilities.V1.xml";>
+    <edmx:Include Alias="Capabilities" Namespace="Org.OData.Capabilities.V1"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="http://docs.oasis-open.org/odata/odata-data-aggregation-ext/v4.0/cs02/vocabularies/Org.OData.Aggregation.V1.xml";>
+    <edmx:Include Alias="Aggregation" Namespace="Org.OData.Aggregation.V1"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="https://wiki.scn.sap.com/wiki/download/attachments/448470974/Common.xml?api=v2";>
+    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="https://wiki.scn.sap.com/wiki/download/attachments/448470971/Communication.xml?api=v2";>
+    <edmx:Include Alias="Communication" 
Namespace="com.sap.vocabularies.Communication.v1"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="https://wiki.scn.sap.com/wiki/download/attachments/448470968/UI.xml?api=v2";>
+    <edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
+  </edmx:Reference>
+  <edmx:DataServices>
+    <Schema Namespace="caps.products.CatalogService" 
Alias="caps.products.CatalogService" 
xmlns="http://docs.oasis-open.org/odata/ns/edm";>
+      <EntityContainer Name="EntityContainer">
+        <EntitySet Name="Products" 
EntityType="caps.products.CatalogService.Products">
+          <NavigationPropertyBinding Path="category" Target="Categories"/>
+          <NavigationPropertyBinding Path="priceRange" Target="PriceRanges"/>
+          <NavigationPropertyBinding Path="supplier" Target="Suppliers"/>
+          <NavigationPropertyBinding Path="stock" Target="Stocks"/>
+          <NavigationPropertyBinding Path="images" Target="ProductImages"/>
+          <NavigationPropertyBinding Path="allCategories" 
Target="ProductsToCategories"/>
+          <NavigationPropertyBinding Path="reviews" Target="Reviews"/>
+        </EntitySet>
+        <EntitySet Name="Categories" 
EntityType="caps.products.CatalogService.Categories">
+          <NavigationPropertyBinding Path="parent" Target="Categories"/>
+          <NavigationPropertyBinding Path="children" Target="Categories"/>
+        </EntitySet>
+        <EntitySet Name="Suppliers" 
EntityType="caps.products.CatalogService.Suppliers"/>
+        <EntitySet Name="Stocks" 
EntityType="caps.products.CatalogService.Stocks">
+          <NavigationPropertyBinding Path="availability" 
Target="StockAvailabilities"/>
+        </EntitySet>
+        <EntitySet Name="StockAvailabilities" 
EntityType="caps.products.CatalogService.StockAvailabilities"/>
+        <EntitySet Name="PriceRanges" 
EntityType="caps.products.CatalogService.PriceRanges"/>
+        <EntitySet Name="Currencies" 
EntityType="caps.products.CatalogService.Currencies"/>
+        <EntitySet Name="DimensionUnits" 
EntityType="caps.products.CatalogService.DimensionUnits"/>
+        <EntitySet Name="WeightUnits" 
EntityType="caps.products.CatalogService.WeightUnits"/>
+        <EntitySet Name="BaseUnits" 
EntityType="caps.products.CatalogService.BaseUnits"/>
+        <EntitySet Name="ProductImages" 
EntityType="caps.products.CatalogService.ProductImages">
+          <NavigationPropertyBinding Path="product" Target="Products"/>
+        </EntitySet>
+        <EntitySet Name="ProductsToCategories" 
EntityType="caps.products.CatalogService.ProductsToCategories">
+          <NavigationPropertyBinding Path="product" Target="Products"/>
+          <NavigationPropertyBinding Path="category" Target="Categories"/>
+        </EntitySet>
+        <EntitySet Name="Reviews" 
EntityType="caps.products.CatalogService.Reviews">
+          <NavigationPropertyBinding Path="product" Target="Products"/>
+          <NavigationPropertyBinding Path="author" Target="Users"/>
+        </EntitySet>
+        <EntitySet Name="Users" 
EntityType="caps.products.CatalogService.Users">
+          <NavigationPropertyBinding Path="cart" Target="Carts"/>
+        </EntitySet>
+        <EntitySet Name="Me" EntityType="caps.products.CatalogService.Me">
+          <NavigationPropertyBinding Path="cart" Target="Carts"/>
+        </EntitySet>
+        <EntitySet Name="Carts" 
EntityType="caps.products.CatalogService.Carts">
+          <NavigationPropertyBinding Path="items" Target="CartItems"/>
+          <NavigationPropertyBinding Path="owner" Target="Users"/>
+        </EntitySet>
+        <EntitySet Name="CartItems" 
EntityType="caps.products.CatalogService.CartItems">
+          <NavigationPropertyBinding Path="cart" Target="Carts"/>
+          <NavigationPropertyBinding Path="product" Target="Products"/>
+        </EntitySet>
+        <FunctionImport Name="nop" 
Function="caps.products.CatalogService.nop"/>
+      </EntityContainer>
+      <EntityType Name="Products" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" MaxLength="10" Nullable="false"/>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="descr" Type="Edm.String"/>
+        <NavigationProperty Name="category" 
Type="caps.products.CatalogService.Categories">
+          <ReferentialConstraint Property="category_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="image" Type="Edm.String" MaxLength="255"/>
+        <Property Name="price" Type="Edm.Decimal" Scale="3" Precision="10"/>
+        <Property Name="currency" Type="Edm.String" MaxLength="3"/>
+        <NavigationProperty Name="priceRange" 
Type="caps.products.CatalogService.PriceRanges">
+          <ReferentialConstraint Property="priceRange_code" 
ReferencedProperty="code"/>
+        </NavigationProperty>
+        <Property Name="height" Type="Edm.Decimal" Scale="3" Precision="10"/>
+        <Property Name="width" Type="Edm.Decimal" Scale="3" Precision="10"/>
+        <Property Name="depth" Type="Edm.Decimal" Scale="3" Precision="10"/>
+        <Property Name="weight" Type="Edm.Decimal" Scale="3" Precision="10"/>
+        <Property Name="dimensionUnit" Type="Edm.String" MaxLength="3"/>
+        <Property Name="weightUnit" Type="Edm.String" MaxLength="3"/>
+        <Property Name="baseUnit" Type="Edm.String" MaxLength="3"/>
+        <NavigationProperty Name="supplier" 
Type="caps.products.CatalogService.Suppliers">
+          <ReferentialConstraint Property="supplier_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="stock" 
Type="caps.products.CatalogService.Stocks">
+          <ReferentialConstraint Property="stock_ID" ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="capacity" Type="Edm.String"/>
+        <Property Name="thumbnail" Type="Edm.String" MaxLength="255"/>
+        <NavigationProperty Name="images" 
Type="Collection(caps.products.CatalogService.ProductImages)">
+          <ReferentialConstraint Property="ID" 
ReferencedProperty="product_ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="allCategories" 
Type="Collection(caps.products.CatalogService.ProductsToCategories)">
+          <ReferentialConstraint Property="ID" 
ReferencedProperty="product_ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="reviews" 
Type="Collection(caps.products.CatalogService.Reviews)"/>
+        <Property Name="created_byUser" Type="Edm.String" MaxLength="111"/>
+        <Property Name="created_at" Type="Edm.DateTimeOffset"/>
+        <Property Name="modified_byUser" Type="Edm.String" MaxLength="111"/>
+        <Property Name="modified_at" Type="Edm.DateTimeOffset"/>
+        <Property Name="category_ID" Type="Edm.String"/>
+        <Property Name="priceRange_code" Type="Edm.Int32"/>
+        <Property Name="supplier_ID" Type="Edm.String" MaxLength="10"/>
+        <Property Name="stock_ID" Type="Edm.String" MaxLength="10"/>
+      </EntityType>
+      <EntityType Name="Categories" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" Nullable="false"/>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="descr" Type="Edm.String"/>
+        <Property Name="thumbnail" Type="Edm.String" MaxLength="255"/>
+        <Property Name="image" Type="Edm.String" MaxLength="255"/>
+        <NavigationProperty Name="parent" 
Type="caps.products.CatalogService.Categories">
+          <ReferentialConstraint Property="parent_ID" ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="children" 
Type="Collection(caps.products.CatalogService.Categories)"/>
+        <Property Name="parent_ID" Type="Edm.String"/>
+      </EntityType>
+      <EntityType Name="Suppliers" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="emailAddress" Type="Edm.String" MaxLength="255"/>
+        <Property Name="faxNumber" Type="Edm.String" MaxLength="30"/>
+        <Property Name="phoneNumber" Type="Edm.String" MaxLength="30"/>
+        <Property Name="ID" Type="Edm.String" MaxLength="10" Nullable="false"/>
+        <Property Name="url" Type="Edm.String" MaxLength="255"/>
+      </EntityType>
+      <EntityType Name="Stocks" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" MaxLength="10" Nullable="false"/>
+        <Property Name="quantity" Type="Edm.Decimal" Scale="3" Precision="13"/>
+        <Property Name="minimumQuantity" Type="Edm.Decimal" Scale="3" 
Precision="13"/>
+        <NavigationProperty Name="availability" 
Type="caps.products.CatalogService.StockAvailabilities">
+          <ReferentialConstraint Property="availability_code" 
ReferencedProperty="code"/>
+        </NavigationProperty>
+        <Property Name="deliveryTime" Type="Edm.Int32"/>
+        <Property Name="availability_code" Type="Edm.Int32"/>
+      </EntityType>
+      <EntityType Name="StockAvailabilities" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="code"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="description" Type="Edm.String"/>
+        <Property Name="code" Type="Edm.Int32" Nullable="false"/>
+      </EntityType>
+      <EntityType Name="PriceRanges" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="code"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="description" Type="Edm.String"/>
+        <Property Name="code" Type="Edm.Int32" Nullable="false"/>
+      </EntityType>
+      <EntityType Name="Currencies" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="code"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="description" Type="Edm.String"/>
+        <Property Name="code" Type="Edm.String" MaxLength="3" 
Nullable="false"/>
+      </EntityType>
+      <EntityType Name="DimensionUnits" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="code"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="description" Type="Edm.String"/>
+        <Property Name="code" Type="Edm.String" MaxLength="3" 
Nullable="false"/>
+      </EntityType>
+      <EntityType Name="WeightUnits" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="code"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="description" Type="Edm.String"/>
+        <Property Name="code" Type="Edm.String" MaxLength="3" 
Nullable="false"/>
+      </EntityType>
+      <EntityType Name="BaseUnits" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="code"/>
+        </Key>
+        <Property Name="name" Type="Edm.String"/>
+        <Property Name="description" Type="Edm.String"/>
+        <Property Name="code" Type="Edm.String" MaxLength="3" 
Nullable="false"/>
+      </EntityType>
+      <EntityType Name="ProductImages" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="image"/>
+          <PropertyRef Name="product_ID"/>
+        </Key>
+        <NavigationProperty Name="product" 
Type="caps.products.CatalogService.Products" Nullable="false">
+          <ReferentialConstraint Property="product_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="image" Type="Edm.String" MaxLength="255" 
Nullable="false"/>
+        <Property Name="product_ID" Type="Edm.String" MaxLength="10" 
Nullable="false"/>
+      </EntityType>
+      <EntityType Name="ProductsToCategories" Abstract="false" 
OpenType="false" HasStream="false">
+        <Key>
+          <PropertyRef Name="product_ID"/>
+          <PropertyRef Name="category_ID"/>
+        </Key>
+        <NavigationProperty Name="product" 
Type="caps.products.CatalogService.Products" Nullable="false">
+          <ReferentialConstraint Property="product_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="category" 
Type="caps.products.CatalogService.Categories" Nullable="false">
+          <ReferentialConstraint Property="category_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="product_ID" Type="Edm.String" MaxLength="10" 
Nullable="false"/>
+        <Property Name="category_ID" Type="Edm.String" Nullable="false"/>
+      </EntityType>
+      <EntityType Name="Reviews" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" MaxLength="36" Nullable="false"/>
+        <NavigationProperty Name="product" 
Type="caps.products.CatalogService.Products">
+          <ReferentialConstraint Property="product_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="author" 
Type="caps.products.CatalogService.Users">
+          <ReferentialConstraint Property="author_ID" ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="date" Type="Edm.DateTimeOffset"/>
+        <Property Name="title" Type="Edm.String" MaxLength="100"/>
+        <Property Name="text" Type="Edm.String"/>
+        <Property Name="rating" Type="Edm.Int32"/>
+        <Property Name="created_byUser" Type="Edm.String" MaxLength="111"/>
+        <Property Name="created_at" Type="Edm.DateTimeOffset"/>
+        <Property Name="modified_byUser" Type="Edm.String" MaxLength="111"/>
+        <Property Name="modified_at" Type="Edm.DateTimeOffset"/>
+        <Property Name="product_ID" Type="Edm.String" MaxLength="10"/>
+        <Property Name="author_ID" Type="Edm.String" MaxLength="111"/>
+      </EntityType>
+      <EntityType Name="Users" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" MaxLength="111" 
Nullable="false"/>
+        <Property Name="firstName" Type="Edm.String" MaxLength="200"/>
+        <Property Name="lastName" Type="Edm.String" MaxLength="200"/>
+        <NavigationProperty Name="cart" 
Type="caps.products.CatalogService.Carts"/>
+        <Property Name="created_byUser" Type="Edm.String" MaxLength="111"/>
+        <Property Name="created_at" Type="Edm.DateTimeOffset"/>
+        <Property Name="modified_byUser" Type="Edm.String" MaxLength="111"/>
+        <Property Name="modified_at" Type="Edm.DateTimeOffset"/>
+      </EntityType>
+      <EntityType Name="Me" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" MaxLength="111" 
Nullable="false"/>
+        <Property Name="firstName" Type="Edm.String" MaxLength="200"/>
+        <Property Name="lastName" Type="Edm.String" MaxLength="200"/>
+        <NavigationProperty Name="cart" 
Type="caps.products.CatalogService.Carts"/>
+      </EntityType>
+      <EntityType Name="Carts" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="ID"/>
+        </Key>
+        <Property Name="ID" Type="Edm.String" MaxLength="36" Nullable="false"/>
+        <NavigationProperty Name="items" 
Type="Collection(caps.products.CatalogService.CartItems)">
+          <ReferentialConstraint Property="ID" ReferencedProperty="cart_ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="owner" 
Type="caps.products.CatalogService.Users">
+          <ReferentialConstraint Property="owner_ID" ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="owner_ID" Type="Edm.String" MaxLength="111"/>
+      </EntityType>
+      <EntityType Name="CartItems" Abstract="false" OpenType="false" 
HasStream="false">
+        <Key>
+          <PropertyRef Name="cart_ID"/>
+          <PropertyRef Name="product_ID"/>
+        </Key>
+        <NavigationProperty Name="cart" 
Type="caps.products.CatalogService.Carts" Nullable="false">
+          <ReferentialConstraint Property="cart_ID" ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <NavigationProperty Name="product" 
Type="caps.products.CatalogService.Products" Nullable="false">
+          <ReferentialConstraint Property="product_ID" 
ReferencedProperty="ID"/>
+        </NavigationProperty>
+        <Property Name="quantity" Type="Edm.Int32"/>
+        <Property Name="cart_ID" Type="Edm.String" MaxLength="36" 
Nullable="false"/>
+        <Property Name="product_ID" Type="Edm.String" MaxLength="10" 
Nullable="false"/>
+      </EntityType>
+      <Function Name="nop" IsBound="false" IsComposable="false">
+        <ReturnType Type="Edm.Int32"/>
+      </Function>
+      <Annotations Target="caps.products.CatalogService.Products">
+        <Annotation Term="Common.SemanticKey">
+          <Collection>
+            <PropertyPath>ID</PropertyPath>
+          </Collection>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Product"/>
+        <Annotation Term="UI.LineItem">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="image"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="ID"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="category/name"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+            <Record Type="UI.DataFieldForAnnotation">
+              <PropertyValue Property="Label" String="Supplier"/>
+              <PropertyValue Property="Target" 
AnnotationPath="supplier/@Communication.Contact"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="stock/availability/code"/>
+              <PropertyValue Property="Criticality" 
Path="stock/availability/code"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="price"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.SelectionFields">
+          <Collection>
+            <PropertyPath>priceRange_code</PropertyPath>
+            <PropertyPath>stock/availability_code</PropertyPath>
+            <PropertyPath>category_ID</PropertyPath>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.HeaderInfo">
+          <Record Type="UI.HeaderInfoType">
+            <PropertyValue Property="TypeName" String="Product"/>
+            <PropertyValue Property="TypeNamePlural" String="Products"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="name"/>
+              </Record>
+            </PropertyValue>
+            <PropertyValue Property="Description">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="ID"/>
+              </Record>
+            </PropertyValue>
+            <PropertyValue Property="ImageUrl" Path="image"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.HeaderFacets">
+          <Collection>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="General Information"/>
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#GeneralInformation"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Description"/>
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#ProductHeaderText"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="stock/@UI.DataPoint#StockAvailability"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.DataPoint#Price"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="GeneralInformation">
+          <Record Type="UI.FieldGroupType">
+            <PropertyValue Property="Label" String="General Information"/>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="category_ID"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="supplier_ID"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="ProductHeaderText">
+          <Record Type="UI.FieldGroupType">
+            <PropertyValue Property="Label" String="Description"/>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="descr"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.DataPoint" Qualifier="Price">
+          <Record Type="UI.DataPointType">
+            <PropertyValue Property="Value" Path="price"/>
+            <PropertyValue Property="Title" String="Price"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Facets">
+          <Collection>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Technical Data"/>
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#TechnicalData"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="TechnicalData">
+          <Record Type="UI.FieldGroupType">
+            <PropertyValue Property="Label" String="Technical Data"/>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="baseUnit"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="height"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="width"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="depth"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="weight"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.PresentationVariant">
+          <Record Type="UI.PresentationVariantType">
+            <PropertyValue Property="SortOrder">
+              <Collection>
+                <Record Type="Common.SortOrderType">
+                  <PropertyValue Property="Property" PropertyPath="name"/>
+                  <PropertyValue Property="Descending" Bool="false"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/ID">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.SemanticObject" String="EPMProduct"/>
+        <Annotation Term="Common.Text" Path="name"/>
+        <Annotation Term="Common.Label" String="Product"/>
+        <Annotation Term="Core.Immutable" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/name">
+        <Annotation Term="UI.Hidden" Bool="true"/>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Name"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.EntityContainer/Products/name">
+        <Annotation Term="Capabilities.SearchRestrictions">
+          <Record Type="Capabilities.SearchRestrictionsType">
+            <PropertyValue Property="Searchable" Bool="true"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/descr">
+        <Annotation Term="UI.MultiLineText" Bool="true"/>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/category">
+        <Annotation Term="Common.Text" Path="category/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="Categories"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="category_ID"/>
+                  <PropertyValue Property="ValueListProperty" String="ID"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Category"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/image">
+        <Annotation Term="UI.IsImageURL" Bool="true"/>
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Image"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/price">
+        <Annotation Term="Measures.ISOCurrency" Path="currency"/>
+        <Annotation Term="Common.Label" String="Price per Unit"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/currency">
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="Currencies"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="currency"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Currency"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/priceRange">
+        <Annotation Term="Common.Text" Path="priceRange/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="PriceRanges"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="priceRange_code"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.ValueListWithFixedValues" Bool="true"/>
+        <Annotation Term="Common.Label" String="Price Range"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/height">
+        <Annotation Term="Measures.Unit" Path="dimensionUnit"/>
+        <Annotation Term="Common.Label" String="Height"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/width">
+        <Annotation Term="Measures.Unit" Path="dimensionUnit"/>
+        <Annotation Term="Common.Label" String="Width"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/depth">
+        <Annotation Term="Measures.Unit" Path="dimensionUnit"/>
+        <Annotation Term="Common.Label" String="Depth"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/weight">
+        <Annotation Term="Measures.Unit" Path="weightUnit"/>
+        <Annotation Term="Common.Label" String="Weight"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Products/dimensionUnit">
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="DimensionUnits"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="dimensionUnit"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.ValueListWithFixedValues" Bool="true"/>
+        <Annotation Term="Common.Label" String="Unit of Length"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/weightUnit">
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="WeightUnits"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="weightUnit"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.ValueListWithFixedValues" Bool="true"/>
+        <Annotation Term="Common.Label" String="Unit of Weight"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/baseUnit">
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="BaseUnits"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="baseUnit"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Base Unit"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/supplier">
+        <Annotation Term="Common.Text" Path="supplier/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="Suppliers"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="supplier_ID"/>
+                  <PropertyValue Property="ValueListProperty" String="ID"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Supplier"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/stock">
+        <Annotation Term="Common.Label" String="Product Stock"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/capacity">
+        <Annotation Term="Common.Label" String="Capacity"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/thumbnail">
+        <Annotation Term="UI.IsImageURL" Bool="true"/>
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Image"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/reviews">
+        <Annotation Term="Common.Label" String="User Reviews"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Products/created_byUser">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/created_at">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Products/modified_byUser">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/modified_at">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/category_ID">
+        <Annotation Term="Common.Text" Path="category/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="Categories"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="category_ID"/>
+                  <PropertyValue Property="ValueListProperty" String="ID"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Category"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Products/priceRange_code">
+        <Annotation Term="Common.Text" Path="priceRange/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="PriceRanges"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="priceRange_code"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.ValueListWithFixedValues" Bool="true"/>
+        <Annotation Term="Common.Label" String="Price Range"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/supplier_ID">
+        <Annotation Term="Common.Text" Path="supplier/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" String="Suppliers"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="supplier_ID"/>
+                  <PropertyValue Property="ValueListProperty" String="ID"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/Mandatory"/>
+        <Annotation Term="Common.Label" String="Supplier"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Products/stock_ID">
+        <Annotation Term="Common.Label" String="Product Stock"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Categories/ID">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Text" Path="name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Category"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Categories/name">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Category Name"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Categories/descr">
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Categories/thumbnail">
+        <Annotation Term="UI.IsImageURL" Bool="true"/>
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Image"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Categories/image">
+        <Annotation Term="UI.IsImageURL" Bool="true"/>
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Image"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Suppliers">
+        <Annotation Term="Communication.Contact">
+          <Record Type="Communication.ContactType">
+            <PropertyValue Property="fn" Path="name"/>
+            <PropertyValue Property="tel">
+              <Collection>
+                <Record Type="Communication.PhoneNumberType">
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/fax"/>
+                  <PropertyValue Property="uri" Path="faxNumber"/>
+                </Record>
+                <Record Type="Communication.PhoneNumberType">
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/work"/>
+                  <PropertyValue Property="uri" Path="phoneNumber"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="email">
+              <Collection>
+                <Record Type="Communication.EmailAddressType">
+                  <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/work"/>
+                  <PropertyValue Property="address" Path="emailAddress"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Supplier"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Suppliers/name">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Company Name"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.EntityContainer/Suppliers/name">
+        <Annotation Term="Capabilities.SearchRestrictions">
+          <Record Type="Capabilities.SearchRestrictionsType">
+            <PropertyValue Property="Searchable" Bool="true"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Suppliers/emailAddress">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Suppliers/faxNumber">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Suppliers/phoneNumber">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Suppliers/ID">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Supplier"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Suppliers/url">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Stocks">
+        <Annotation Term="UI.DataPoint" Qualifier="StockAvailability">
+          <Record Type="UI.DataPointType">
+            <PropertyValue Property="Value" Path="availability_code"/>
+            <PropertyValue Property="Criticality" Path="availability_code"/>
+            <PropertyValue Property="Title" String="Availability"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Product Stock Availability"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Stocks/ID">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Stocks/quantity">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Stocks/minimumQuantity">
+        <Annotation Term="Common.Label" String="Minimum Stock"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Stocks/availability">
+        <Annotation Term="Common.Text" Path="availability/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" 
String="StockAvailabilities"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="availability_code"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.ValueListWithFixedValues" Bool="true"/>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/ReadOnly"/>
+        <Annotation Term="Common.Label" String="Availability"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Stocks/deliveryTime">
+        <Annotation Term="Common.Label" String="Delivery Time (in days)"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Stocks/availability_code">
+        <Annotation Term="Common.Text" Path="availability/name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.ValueList">
+          <Record Type="Common.ValueListType">
+            <PropertyValue Property="CollectionPath" 
String="StockAvailabilities"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" 
PropertyPath="availability_code"/>
+                  <PropertyValue Property="ValueListProperty" String="code"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="name"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.ValueListWithFixedValues" Bool="true"/>
+        <Annotation Term="Common.FieldControl" 
EnumMember="Common.FieldControlType/ReadOnly"/>
+        <Annotation Term="Common.Label" String="Availability"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.StockAvailabilities/name">
+        <Annotation Term="Common.Label" String="Availability"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.StockAvailabilities/description">
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.StockAvailabilities/code">
+        <Annotation Term="Common.Text" Path="name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Availability"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.PriceRanges/name">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Price Range"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.PriceRanges/description">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.PriceRanges/code">
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Text" Path="name">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+        <Annotation Term="Common.Label" String="Price Range"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Currencies/name">
+        <Annotation Term="Common.Label" String="Name"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Currencies/description">
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Currencies/code">
+        <Annotation Term="Common.Label" String="Currency Code"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.DimensionUnits/name">
+        <Annotation Term="Common.Label" String="Name"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.DimensionUnits/description">
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.DimensionUnits/code">
+        <Annotation Term="Common.Label" String="Unit of Length"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.WeightUnits/name">
+        <Annotation Term="Common.Label" String="Name"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.WeightUnits/description">
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.WeightUnits/code">
+        <Annotation Term="Common.Label" String="Unit of Weight"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.BaseUnits/name">
+        <Annotation Term="Common.Label" String="Name"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.BaseUnits/description">
+        <Annotation Term="Common.Label" String="Description"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.BaseUnits/code">
+        <Annotation Term="Common.Label" String="Base Unit"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.ProductImages/image">
+        <Annotation Term="UI.IsImageURL" Bool="true"/>
+        <Annotation Term="UI.HiddenFilter" Bool="true"/>
+        <Annotation Term="Common.Label" String="Image"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/product">
+        <Annotation Term="Common.Label" String="Reviewed Product"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/author">
+        <Annotation Term="Common.Label" String="Author"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/date">
+        <Annotation Term="Common.Label" String="Date"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/title">
+        <Annotation Term="Common.Label" String="Title"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/text">
+        <Annotation Term="Common.Label" String="Text"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/rating">
+        <Annotation Term="Common.Label" String="Number of Stars"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Reviews/created_byUser">
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations 
Target="caps.products.CatalogService.Reviews/modified_byUser">
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/product_ID">
+        <Annotation Term="Common.Label" String="Reviewed Product"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Reviews/author_ID">
+        <Annotation Term="Common.Label" String="Author"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Users/ID">
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Users/firstName">
+        <Annotation Term="Common.Label" String="First Name"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Users/lastName">
+        <Annotation Term="Common.Label" String="Last Name"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Users/cart">
+        <Annotation Term="Common.Label" String="Shopping Cart"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Users/created_byUser">
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Users/modified_byUser">
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Me/ID">
+        <Annotation Term="Common.Label" String="User ID"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Me/firstName">
+        <Annotation Term="Common.Label" String="First Name"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Me/lastName">
+        <Annotation Term="Common.Label" String="Last Name"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Me/cart">
+        <Annotation Term="Common.Label" String="Shopping Cart"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Carts/owner">
+        <Annotation Term="Common.Label" String="Owner"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.Carts/owner_ID">
+        <Annotation Term="Common.Label" String="Owner"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.CartItems/product">
+        <Annotation Term="Common.Label" String="Product"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.CartItems/quantity">
+        <Annotation Term="Common.Label" String="Quantity"/>
+      </Annotations>
+      <Annotations Target="caps.products.CatalogService.CartItems/product_ID">
+        <Annotation Term="Common.Label" String="Product"/>
+      </Annotations>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>
\ No newline at end of file

Reply via email to