You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2014/05/13 13:47:54 UTC

[10/31] git commit: [OLINGO-280] pojogen off-line generation implemented

[OLINGO-280] pojogen off-line generation implemented


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

Branch: refs/heads/olingo-266-ref
Commit: 288bbb7242ffbe0ccc4e5c2e924c1569842ce7a6
Parents: ed8e0e3
Author: Francesco Chicchiriccò <--global>
Authored: Mon May 12 15:52:17 2014 +0200
Committer: Francesco Chicchiriccò <--global>
Committed: Mon May 12 15:52:17 2014 +0200

----------------------------------------------------------------------
 ext/client-proxy/pom.xml                        |   2 +-
 ext/pojogen-maven-plugin/pom.xml                |  30 +-
 .../src/it/v3Sample/pom.xml                     |  93 +++
 .../it/v3Sample/src/test/resources/metadata.xml | 719 +++++++++++++++++++
 .../src/it/v3Sample/verify.groovy               |  20 +
 .../src/it/v4Sample/pom.xml                     |  93 +++
 .../it/v4Sample/src/test/resources/metadata.xml | 462 ++++++++++++
 .../src/it/v4Sample/verify.groovy               |  20 +
 .../ext/pojogen/AbstractMetadataMojo.java       | 160 -----
 .../olingo/ext/pojogen/AbstractPOJOGenMojo.java | 340 +++++++++
 .../olingo/ext/pojogen/AbstractUtility.java     |   8 +-
 .../olingo/ext/pojogen/V3MetadataMojo.java      | 184 -----
 .../olingo/ext/pojogen/V3POJOGenMojo.java       |  54 ++
 .../olingo/ext/pojogen/V4MetadataMojo.java      | 194 -----
 .../olingo/ext/pojogen/V4POJOGenMojo.java       |  54 ++
 .../src/main/resources/entityType.vm            |   4 +-
 fit/pom.xml                                     |  10 +-
 fit/src/it/staticServiceV3/pom.xml              |   6 +-
 fit/src/it/staticServiceV4/pom.xml              |   6 +-
 pom.xml                                         |  12 +
 20 files changed, 1911 insertions(+), 560 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/288bbb72/ext/client-proxy/pom.xml
----------------------------------------------------------------------
diff --git a/ext/client-proxy/pom.xml b/ext/client-proxy/pom.xml
index 39e742b..827e7e9 100644
--- a/ext/client-proxy/pom.xml
+++ b/ext/client-proxy/pom.xml
@@ -23,7 +23,7 @@
 
   <modelVersion>4.0.0</modelVersion>
 
-  <artifactId>client-proxy</artifactId>
+  <artifactId>olingo-client-proxy</artifactId>
   <packaging>jar</packaging>
   <name>${project.artifactId}</name>
   <description>Java client API for OData services: Proxy.</description>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/288bbb72/ext/pojogen-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/pom.xml b/ext/pojogen-maven-plugin/pom.xml
index 3a77451..b84944f 100644
--- a/ext/pojogen-maven-plugin/pom.xml
+++ b/ext/pojogen-maven-plugin/pom.xml
@@ -43,7 +43,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.olingo</groupId>
-      <artifactId>olingo-client-core</artifactId>
+      <artifactId>olingo-client-proxy</artifactId>
       <version>${project.version}</version>
     </dependency>
     
@@ -103,6 +103,34 @@
           </execution>
         </executions>
       </plugin>
+      
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-invoker-plugin</artifactId>
+        <inherited>true</inherited>
+        <configuration>
+          <debug>true</debug>
+          <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
+          <pomIncludes>
+            <pomInclude>*/pom.xml</pomInclude>
+          </pomIncludes>
+          <postBuildHookScript>verify</postBuildHookScript>
+          <goals>
+            <goal>clean</goal>
+            <goal>test-compile</goal>
+          </goals>
+        </configuration>
+        <executions>
+          <execution>
+            <id>integration-test</id>
+            <goals>
+              <goal>install</goal>
+              <goal>integration-test</goal>
+              <goal>verify</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>      
     </plugins>
     
     <resources>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/288bbb72/ext/pojogen-maven-plugin/src/it/v3Sample/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/it/v3Sample/pom.xml b/ext/pojogen-maven-plugin/src/it/v3Sample/pom.xml
new file mode 100644
index 0000000..bd6b698
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/it/v3Sample/pom.xml
@@ -0,0 +1,93 @@
+<?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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>pojogen-maven-plugin-v3test</artifactId>
+  <groupId>org.apache.olingo</groupId>
+  <version>@project.version@</version>
+  <name>${project.artifactId}</name>
+  <description>A simple IT verifying the basic use case of pojogen-man-plugin.</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  
+  <dependencies>
+    <dependency>
+      <artifactId>pojogen-maven-plugin</artifactId>
+      <groupId>org.apache.olingo</groupId>
+      <version>@project.version@</version>
+      <scope>runtime</scope>
+    </dependency>
+    
+    <dependency>
+      <artifactId>olingo-client-proxy</artifactId>
+      <groupId>org.apache.olingo</groupId>
+      <version>@project.version@</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.8</version>
+        <executions>
+          <execution>
+            <phase>process-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${project.build.directory}/generated-sources</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      
+      <plugin>
+        <groupId>@project.groupId@</groupId>
+        <artifactId>pojogen-maven-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <configuration>
+              <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
+              <localEdm>${project.basedir}/src/test/resources/metadata.xml</localEdm>
+              <basePackage>org.apache.olingo.fit.proxy.v3.staticservice</basePackage>
+            </configuration>
+            <id>v3pojoGen</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>v3pojoGen</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/288bbb72/ext/pojogen-maven-plugin/src/it/v3Sample/src/test/resources/metadata.xml
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/it/v3Sample/src/test/resources/metadata.xml b/ext/pojogen-maven-plugin/src/it/v3Sample/src/test/resources/metadata.xml
new file mode 100644
index 0000000..3c9a5ad
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/it/v3Sample/src/test/resources/metadata.xml
@@ -0,0 +1,719 @@
+<?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="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx">
+  <edmx:DataServices m:DataServiceVersion="3.0" m:MaxDataServiceVersion="3.0" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
+    <Schema Namespace="Microsoft.Test.OData.Services.AstoriaDefaultService" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
+      <EntityType Name="AllSpatialTypes">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Geog" Type="Edm.Geography" SRID="Variable" />
+        <Property Name="GeogPoint" Type="Edm.GeographyPoint" SRID="Variable" />
+        <Property Name="GeogLine" Type="Edm.GeographyLineString" SRID="Variable" />
+        <Property Name="GeogPolygon" Type="Edm.GeographyPolygon" SRID="Variable" />
+        <Property Name="GeogCollection" Type="Edm.GeographyCollection" SRID="Variable" />
+        <Property Name="GeogMultiPoint" Type="Edm.GeographyMultiPoint" SRID="Variable" />
+        <Property Name="GeogMultiLine" Type="Edm.GeographyMultiLineString" SRID="Variable" />
+        <Property Name="GeogMultiPolygon" Type="Edm.GeographyMultiPolygon" SRID="Variable" />
+        <Property Name="Geom" Type="Edm.Geometry" SRID="Variable" />
+        <Property Name="GeomPoint" Type="Edm.GeometryPoint" SRID="Variable" />
+        <Property Name="GeomLine" Type="Edm.GeometryLineString" SRID="Variable" />
+        <Property Name="GeomPolygon" Type="Edm.GeometryPolygon" SRID="Variable" />
+        <Property Name="GeomCollection" Type="Edm.GeometryCollection" SRID="Variable" />
+        <Property Name="GeomMultiPoint" Type="Edm.GeometryMultiPoint" SRID="Variable" />
+        <Property Name="GeomMultiLine" Type="Edm.GeometryMultiLineString" SRID="Variable" />
+        <Property Name="GeomMultiPolygon" Type="Edm.GeometryMultiPolygon" SRID="Variable" />
+      </EntityType>
+      <EntityType Name="AllSpatialCollectionTypes" Abstract="true">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
+      </EntityType>
+      <EntityType Name="Customer">
+        <Key>
+          <PropertyRef Name="CustomerId" />
+        </Key>
+        <Property Name="Thumbnail" Type="Edm.Stream" Nullable="false" />
+        <Property Name="Video" Type="Edm.Stream" Nullable="false" />
+        <Property Name="CustomerId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" m:FC_TargetPath="SyndicationSummary" m:FC_ContentKind="text" m:FC_KeepInContent="false" />
+        <Property Name="PrimaryContactInfo" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails" />
+        <Property Name="BackupContactInfo" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)" Nullable="false" />
+        <Property Name="Auditing" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo" />
+        <NavigationProperty Name="Orders" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Orders" ToRole="Orders" FromRole="Customer" />
+        <NavigationProperty Name="Logins" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Logins" ToRole="Logins" FromRole="Customer" />
+        <NavigationProperty Name="Husband" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Husband" ToRole="Husband" FromRole="Customer" />
+        <NavigationProperty Name="Wife" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Wife" ToRole="Wife" FromRole="Customer" />
+        <NavigationProperty Name="Info" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Info" ToRole="Info" FromRole="Customer" />
+      </EntityType>
+      <EntityType Name="Login">
+        <Key>
+          <PropertyRef Name="Username" />
+        </Key>
+        <Property Name="Username" Type="Edm.String" Nullable="false" />
+        <Property Name="CustomerId" Type="Edm.Int32" Nullable="false" />
+        <NavigationProperty Name="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Customer" ToRole="Customer" FromRole="Login" />
+        <NavigationProperty Name="LastLogin" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_LastLogin" ToRole="LastLogin" FromRole="Login" />
+        <NavigationProperty Name="SentMessages" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_SentMessages" ToRole="SentMessages" FromRole="Login" />
+        <NavigationProperty Name="ReceivedMessages" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_ReceivedMessages" ToRole="ReceivedMessages" FromRole="Login" />
+        <NavigationProperty Name="Orders" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Orders" ToRole="Orders" FromRole="Login" />
+      </EntityType>
+      <EntityType Name="RSAToken">
+        <Key>
+          <PropertyRef Name="Serial" />
+        </Key>
+        <Property Name="Serial" Type="Edm.String" Nullable="false" />
+        <Property Name="Issued" Type="Edm.DateTime" Nullable="false" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken_Login" ToRole="Login" FromRole="RSAToken" />
+      </EntityType>
+      <EntityType Name="PageView">
+        <Key>
+          <PropertyRef Name="PageViewId" />
+        </Key>
+        <Property Name="PageViewId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Username" Type="Edm.String" />
+        <Property Name="Viewed" Type="Edm.DateTimeOffset" Nullable="false" />
+        <Property Name="TimeSpentOnPage" Type="Edm.Time" Nullable="false" />
+        <Property Name="PageUrl" Type="Edm.String" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView_Login" ToRole="Login" FromRole="PageView" />
+      </EntityType>
+      <EntityType Name="LastLogin">
+        <Key>
+          <PropertyRef Name="Username" />
+        </Key>
+        <Property Name="Username" Type="Edm.String" Nullable="false" />
+        <Property Name="LoggedIn" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="LoggedOut" Type="Edm.DateTime" />
+        <Property Name="Duration" Type="Edm.Time" Nullable="false" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin_Login" ToRole="Login" FromRole="LastLogin" />
+      </EntityType>
+      <EntityType Name="Message">
+        <Key>
+          <PropertyRef Name="FromUsername" />
+          <PropertyRef Name="MessageId" />
+        </Key>
+        <Property Name="MessageId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="FromUsername" Type="Edm.String" Nullable="false" />
+        <Property Name="ToUsername" Type="Edm.String" />
+        <Property Name="Sent" Type="Edm.DateTimeOffset" Nullable="false" m:FC_TargetPath="SyndicationPublished" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Subject" Type="Edm.String" m:FC_TargetPath="SyndicationTitle" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Body" Type="Edm.String" />
+        <Property Name="IsRead" Type="Edm.Boolean" Nullable="false" />
+        <NavigationProperty Name="Sender" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Sender" ToRole="Sender" FromRole="Message" />
+        <NavigationProperty Name="Recipient" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Recipient" ToRole="Recipient" FromRole="Message" />
+        <NavigationProperty Name="Attachments" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Attachments" ToRole="Attachments" FromRole="Message" />
+      </EntityType>
+      <EntityType Name="MessageAttachment">
+        <Key>
+          <PropertyRef Name="AttachmentId" />
+        </Key>
+        <Property Name="AttachmentId" Type="Edm.Guid" Nullable="false" />
+        <Property Name="Attachment" Type="Edm.Binary" />
+      </EntityType>
+      <EntityType Name="Order">
+        <Key>
+          <PropertyRef Name="OrderId" />
+        </Key>
+        <Property Name="OrderId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="CustomerId" Type="Edm.Int32" />
+        <Property Name="Concurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" />
+        <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login" ToRole="Login" FromRole="Order" />
+        <NavigationProperty Name="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer" ToRole="Customer" FromRole="Order" />
+      </EntityType>
+      <EntityType Name="OrderLine">
+        <Key>
+          <PropertyRef Name="OrderId" />
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="OrderLineStream" Type="Edm.Stream" Nullable="false" />
+        <Property Name="OrderId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Quantity" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" />
+        <NavigationProperty Name="Order" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Order" ToRole="Order" FromRole="OrderLine" />
+        <NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Product" ToRole="Product" FromRole="OrderLine" />
+      </EntityType>
+      <EntityType Name="Product">
+        <Key>
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="Picture" Type="Edm.Stream" Nullable="false" />
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Description" Type="Edm.String" />
+        <Property Name="Dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" />
+        <Property Name="BaseConcurrency" Type="Edm.String" ConcurrencyMode="Fixed" />
+        <Property Name="ComplexConcurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" />
+        <Property Name="NestedComplexConcurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo" />
+        <NavigationProperty Name="RelatedProducts" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_RelatedProducts" ToRole="RelatedProducts" FromRole="Product" />
+        <NavigationProperty Name="Detail" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Detail" ToRole="Detail" FromRole="Product" />
+        <NavigationProperty Name="Reviews" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Reviews" ToRole="Reviews" FromRole="Product" />
+        <NavigationProperty Name="Photos" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Photos" ToRole="Photos" FromRole="Product" />
+      </EntityType>
+      <EntityType Name="ProductDetail">
+        <Key>
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Details" Type="Edm.String" />
+        <NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail_Product" ToRole="Product" FromRole="ProductDetail" />
+      </EntityType>
+      <EntityType Name="ProductReview">
+        <Key>
+          <PropertyRef Name="ProductId" />
+          <PropertyRef Name="ReviewId" />
+          <PropertyRef Name="RevisionId" />
+        </Key>
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ReviewId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Review" Type="Edm.String" />
+        <Property Name="RevisionId" Type="Edm.String" Nullable="false" />
+        <NavigationProperty Name="Product" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview_Product" ToRole="Product" FromRole="ProductReview" />
+      </EntityType>
+      <EntityType Name="ProductPhoto">
+        <Key>
+          <PropertyRef Name="PhotoId" />
+          <PropertyRef Name="ProductId" />
+        </Key>
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="PhotoId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Photo" Type="Edm.Binary" />
+      </EntityType>
+      <EntityType Name="CustomerInfo" m:HasStream="true">
+        <Key>
+          <PropertyRef Name="CustomerInfoId" />
+        </Key>
+        <Property Name="CustomerInfoId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Information" Type="Edm.String" />
+      </EntityType>
+      <EntityType Name="Computer">
+        <Key>
+          <PropertyRef Name="ComputerId" />
+        </Key>
+        <Property Name="ComputerId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <NavigationProperty Name="ComputerDetail" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer_ComputerDetail" ToRole="ComputerDetail" FromRole="Computer" />
+      </EntityType>
+      <EntityType Name="ComputerDetail">
+        <Key>
+          <PropertyRef Name="ComputerDetailId" />
+        </Key>
+        <Property Name="ComputerDetailId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Manufacturer" Type="Edm.String" m:FC_TargetPath="SyndicationAuthorEmail" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Model" Type="Edm.String" m:FC_TargetPath="SyndicationAuthorUri" m:FC_ContentKind="text" m:FC_KeepInContent="true" />
+        <Property Name="Serial" Type="Edm.String" />
+        <Property Name="SpecificationsBag" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="PurchaseDate" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="Dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" />
+        <NavigationProperty Name="Computer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail_Computer" ToRole="Computer" FromRole="ComputerDetail" />
+      </EntityType>
+      <EntityType Name="Driver">
+        <Key>
+          <PropertyRef Name="Name" />
+        </Key>
+        <Property Name="Name" Type="Edm.String" Nullable="false" />
+        <Property Name="BirthDate" Type="Edm.DateTime" Nullable="false" />
+        <NavigationProperty Name="License" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver_License" ToRole="License" FromRole="Driver" />
+      </EntityType>
+      <EntityType Name="License">
+        <Key>
+          <PropertyRef Name="Name" />
+        </Key>
+        <Property Name="Name" Type="Edm.String" Nullable="false" />
+        <Property Name="LicenseNumber" Type="Edm.String" />
+        <Property Name="LicenseClass" Type="Edm.String" m:FC_TargetPath="SyndicationContributorEmail" m:FC_ContentKind="text" m:FC_KeepInContent="false" />
+        <Property Name="Restrictions" Type="Edm.String" m:FC_TargetPath="SyndicationContributorUri" m:FC_ContentKind="text" m:FC_KeepInContent="false" />
+        <Property Name="ExpirationDate" Type="Edm.DateTime" Nullable="false" />
+        <NavigationProperty Name="Driver" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.License_Driver" ToRole="Driver" FromRole="License" />
+      </EntityType>
+      <EntityType Name="MappedEntityType">
+        <Key>
+          <PropertyRef Name="Id" />
+        </Key>
+        <Property Name="Id" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Href" Type="Edm.String" />
+        <Property Name="Title" Type="Edm.String" />
+        <Property Name="HrefLang" Type="Edm.String" />
+        <Property Name="Type" Type="Edm.String" />
+        <Property Name="Length" Type="Edm.Int32" Nullable="false" />
+        <Property Name="BagOfPrimitiveToLinks" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="Logo" Type="Edm.Binary" />
+        <Property Name="BagOfDecimals" Type="Collection(Edm.Decimal)" Nullable="false" />
+        <Property Name="BagOfDoubles" Type="Collection(Edm.Double)" Nullable="false" />
+        <Property Name="BagOfSingles" Type="Collection(Edm.Single)" Nullable="false" />
+        <Property Name="BagOfBytes" Type="Collection(Edm.Byte)" Nullable="false" />
+        <Property Name="BagOfInt16s" Type="Collection(Edm.Int16)" Nullable="false" />
+        <Property Name="BagOfInt32s" Type="Collection(Edm.Int32)" Nullable="false" />
+        <Property Name="BagOfInt64s" Type="Collection(Edm.Int64)" Nullable="false" />
+        <Property Name="BagOfGuids" Type="Collection(Edm.Guid)" Nullable="false" />
+        <Property Name="BagOfDateTime" Type="Collection(Edm.DateTime)" Nullable="false" />
+        <Property Name="BagOfComplexToCategories" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ComplexToCategory)" Nullable="false" />
+        <Property Name="ComplexPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" m:FC_TargetPath="SyndicationRights" m:FC_ContentKind="text" m:FC_SourcePath="PhoneNumber" m:FC_KeepInContent="true" />
+        <Property Name="ComplexContactDetails" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails" m:FC_TargetPath="SyndicationSummary" m:FC_ContentKind="text" m:FC_SourcePath="WorkPhone/Extension" m:FC_KeepInContent="true" />
+      </EntityType>
+      <EntityType Name="Car" m:HasStream="true">
+        <Key>
+          <PropertyRef Name="VIN" />
+        </Key>
+        <Property Name="Photo" Type="Edm.Stream" Nullable="false" />
+        <Property Name="Video" Type="Edm.Stream" Nullable="false" />
+        <Property Name="VIN" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Description" Type="Edm.String" />
+      </EntityType>
+      <EntityType Name="Person">
+        <Key>
+          <PropertyRef Name="PersonId" />
+        </Key>
+        <Property Name="PersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Name" Type="Edm.String" />
+        <NavigationProperty Name="PersonMetadata" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Person_PersonMetadata" ToRole="PersonMetadata" FromRole="Person" />
+      </EntityType>
+      <EntityType Name="PersonMetadata">
+        <Key>
+          <PropertyRef Name="PersonMetadataId" />
+        </Key>
+        <Property Name="PersonMetadataId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="PersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="PropertyName" Type="Edm.String" />
+        <Property Name="PropertyValue" Type="Edm.String" />
+        <NavigationProperty Name="Person" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata_Person" ToRole="Person" FromRole="PersonMetadata" />
+      </EntityType>
+      <ComplexType Name="ContactDetails">
+        <Property Name="EmailBag" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="AlternativeNames" Type="Collection(Edm.String)" Nullable="false" />
+        <Property Name="ContactAlias" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases" />
+        <Property Name="HomePhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" />
+        <Property Name="WorkPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" />
+        <Property Name="MobilePhoneBag" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" Nullable="false" />
+      </ComplexType>
+      <ComplexType Name="AuditInfo">
+        <Property Name="ModifiedDate" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="ModifiedBy" Type="Edm.String" />
+        <Property Name="Concurrency" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo" />
+      </ComplexType>
+      <ComplexType Name="ConcurrencyInfo">
+        <Property Name="Token" Type="Edm.String" />
+        <Property Name="QueriedDateTime" Type="Edm.DateTime" />
+      </ComplexType>
+      <ComplexType Name="Dimensions">
+        <Property Name="Width" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="Height" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="Depth" Type="Edm.Decimal" Nullable="false" />
+      </ComplexType>
+      <ComplexType Name="ComplexToCategory">
+        <Property Name="Term" Type="Edm.String" />
+        <Property Name="Scheme" Type="Edm.String" />
+        <Property Name="Label" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="Phone">
+        <Property Name="PhoneNumber" Type="Edm.String" />
+        <Property Name="Extension" Type="Edm.String" />
+      </ComplexType>
+      <ComplexType Name="Aliases">
+        <Property Name="AlternativeNames" Type="Collection(Edm.String)" Nullable="false" />
+      </ComplexType>
+      <EntityType Name="AllSpatialCollectionTypes_Simple" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialCollectionTypes">
+        <Property Name="ManyGeogPoint" Type="Collection(Edm.GeographyPoint)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeogLine" Type="Collection(Edm.GeographyLineString)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeogPolygon" Type="Collection(Edm.GeographyPolygon)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeomPoint" Type="Collection(Edm.GeometryPoint)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeomLine" Type="Collection(Edm.GeometryLineString)" Nullable="false" SRID="Variable" />
+        <Property Name="ManyGeomPolygon" Type="Collection(Edm.GeometryPolygon)" Nullable="false" SRID="Variable" />
+      </EntityType>
+      <EntityType Name="ProductPageView" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView">
+        <Property Name="ProductId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="ConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" />
+      </EntityType>
+      <EntityType Name="BackOrderLine" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" />
+      <EntityType Name="BackOrderLine2" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.BackOrderLine" />
+      <EntityType Name="DiscontinuedProduct" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Product">
+        <Property Name="Discontinued" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="ReplacementProductId" Type="Edm.Int32" />
+        <Property Name="DiscontinuedPhone" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone" />
+        <Property Name="ChildConcurrencyToken" Type="Edm.String" ConcurrencyMode="Fixed" />
+      </EntityType>
+      <EntityType Name="Contractor" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person">
+        <Property Name="ContratorCompanyId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="BillingRate" Type="Edm.Int32" Nullable="false" />
+        <Property Name="TeamContactPersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="JobDescription" Type="Edm.String" />
+      </EntityType>
+      <EntityType Name="Employee" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person">
+        <Property Name="ManagersPersonId" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Salary" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Title" Type="Edm.String" />
+        <NavigationProperty Name="Manager" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee_Manager" ToRole="Manager" FromRole="Employee" />
+      </EntityType>
+      <EntityType Name="SpecialEmployee" BaseType="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee">
+        <Property Name="CarsVIN" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Bonus" Type="Edm.Int32" Nullable="false" />
+        <Property Name="IsFullyVested" Type="Edm.Boolean" Nullable="false" />
+        <NavigationProperty Name="Car" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee_Car" ToRole="Car" FromRole="SpecialEmployee" />
+      </EntityType>
+      <ComplexType Name="ComplexWithAllPrimitiveTypes">
+        <Property Name="Binary" Type="Edm.Binary" />
+        <Property Name="Boolean" Type="Edm.Boolean" Nullable="false" />
+        <Property Name="Byte" Type="Edm.Byte" Nullable="false" />
+        <Property Name="DateTime" Type="Edm.DateTime" Nullable="false" />
+        <Property Name="Decimal" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="Double" Type="Edm.Double" Nullable="false" />
+        <Property Name="Int16" Type="Edm.Int16" Nullable="false" />
+        <Property Name="Int32" Type="Edm.Int32" Nullable="false" />
+        <Property Name="Int64" Type="Edm.Int64" Nullable="false" />
+        <Property Name="SByte" Type="Edm.SByte" Nullable="false" />
+        <Property Name="String" Type="Edm.String" />
+        <Property Name="Single" Type="Edm.Single" Nullable="false" />
+        <Property Name="GeographyPoint" Type="Edm.GeographyPoint" SRID="Variable" />
+        <Property Name="GeometryPoint" Type="Edm.GeometryPoint" SRID="Variable" />
+      </ComplexType>
+      <Association Name="Customer_Orders">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Orders" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Logins">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Logins" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Husband">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Husband" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Wife">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Wife" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Customer_Info">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo" Role="Info" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="*" />
+      </Association>
+      <Association Name="Login_Customer">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Login_LastLogin">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" Role="LastLogin" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Login_SentMessages">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="SentMessages" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+      </Association>
+      <Association Name="Login_ReceivedMessages">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="ReceivedMessages" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+      </Association>
+      <Association Name="Login_Orders">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Orders" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="*" />
+      </Association>
+      <Association Name="RSAToken_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken" Role="RSAToken" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+      </Association>
+      <Association Name="PageView_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView" Role="PageView" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+      </Association>
+      <Association Name="LastLogin_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" Role="LastLogin" Multiplicity="*" />
+      </Association>
+      <Association Name="Message_Sender">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Sender" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Message_Recipient">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Recipient" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Message_Attachments">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment" Role="Attachments" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" Role="Message" Multiplicity="*" />
+      </Association>
+      <Association Name="Order_Login">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" Role="Login" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Order_Customer">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" Role="Customer" Multiplicity="0..1" />
+      </Association>
+      <Association Name="OrderLine_Order">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" Role="OrderLine" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" Role="Order" Multiplicity="0..1" />
+      </Association>
+      <Association Name="OrderLine_Product">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" Role="OrderLine" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_RelatedProducts">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="RelatedProducts" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_Detail">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" Role="Detail" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_Reviews">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" Role="Reviews" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="Product_Photos">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductPhoto" Role="Photos" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="*" />
+      </Association>
+      <Association Name="ProductDetail_Product">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" Role="ProductDetail" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" />
+      </Association>
+      <Association Name="ProductReview_Product">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" Role="ProductReview" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" Role="Product" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Computer_ComputerDetail">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" Role="ComputerDetail" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" Role="Computer" Multiplicity="*" />
+      </Association>
+      <Association Name="ComputerDetail_Computer">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" Role="ComputerDetail" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" Role="Computer" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Driver_License">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.License" Role="License" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" Role="Driver" Multiplicity="*" />
+      </Association>
+      <Association Name="License_Driver">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.License" Role="License" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" Role="Driver" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Person_PersonMetadata">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" Role="PersonMetadata" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" Role="Person" Multiplicity="*" />
+      </Association>
+      <Association Name="PersonMetadata_Person">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" Role="PersonMetadata" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" Role="Person" Multiplicity="0..1" />
+      </Association>
+      <Association Name="Employee_Manager">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" Role="Manager" Multiplicity="0..1" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" Role="Employee" Multiplicity="*" />
+      </Association>
+      <Association Name="SpecialEmployee_Car">
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" Role="SpecialEmployee" Multiplicity="*" />
+        <End Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Car" Role="Car" Multiplicity="0..1" />
+      </Association>
+      <EntityContainer Name="DefaultContainer" m:IsDefaultEntityContainer="true">
+        <EntitySet Name="AllGeoTypesSet" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" />
+        <EntitySet Name="AllGeoCollectionTypesSet" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialCollectionTypes" />
+        <EntitySet Name="Customer" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" />
+        <EntitySet Name="Login" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Login" />
+        <EntitySet Name="RSAToken" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken" />
+        <EntitySet Name="PageView" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView" />
+        <EntitySet Name="LastLogin" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin" />
+        <EntitySet Name="Message" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Message" />
+        <EntitySet Name="MessageAttachment" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.MessageAttachment" />
+        <EntitySet Name="Order" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Order" />
+        <EntitySet Name="OrderLine" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine" />
+        <EntitySet Name="Product" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" />
+        <EntitySet Name="ProductDetail" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail" />
+        <EntitySet Name="ProductReview" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview" />
+        <EntitySet Name="ProductPhoto" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductPhoto" />
+        <EntitySet Name="CustomerInfo" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.CustomerInfo" />
+        <EntitySet Name="Computer" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" />
+        <EntitySet Name="ComputerDetail" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" />
+        <EntitySet Name="Driver" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver" />
+        <EntitySet Name="License" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.License" />
+        <EntitySet Name="MappedEntityType" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.MappedEntityType" />
+        <EntitySet Name="Car" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Car" />
+        <EntitySet Name="Person" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.Person" />
+        <EntitySet Name="PersonMetadata" EntityType="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata" />
+        <FunctionImport Name="GetPrimitiveString" ReturnType="Edm.String" m:HttpMethod="GET" />
+        <FunctionImport Name="GetSpecificCustomer" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Customer)" EntitySet="Customer" m:HttpMethod="GET">
+          <Parameter Name="Name" Type="Edm.String" />
+        </FunctionImport>
+        <FunctionImport Name="GetCustomerCount" ReturnType="Edm.Int32" m:HttpMethod="GET" />
+        <FunctionImport Name="GetArgumentPlusOne" ReturnType="Edm.Int32" m:HttpMethod="GET">
+          <Parameter Name="arg1" Type="Edm.Int32" Nullable="false" />
+        </FunctionImport>
+        <FunctionImport Name="EntityProjectionReturnsCollectionOfComplexTypes" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)" m:HttpMethod="GET" />
+        <FunctionImport Name="ResetDataSource" m:HttpMethod="POST" />
+        <FunctionImport Name="InStreamErrorGetCustomer" ReturnType="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Customer)" EntitySet="Customer" m:HttpMethod="GET" />
+        <FunctionImport Name="IncreaseSalaries" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="employees" Type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Employee)" />
+          <Parameter Name="n" Type="Edm.Int32" Nullable="false" />
+        </FunctionImport>
+        <FunctionImport Name="Sack" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="employee" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" />
+        </FunctionImport>
+        <FunctionImport Name="GetComputer" ReturnType="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" IsBindable="true" EntitySet="Computer" m:IsAlwaysBindable="true">
+          <Parameter Name="computer" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer" />
+        </FunctionImport>
+        <FunctionImport Name="ChangeProductDimensions" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="product" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Product" />
+          <Parameter Name="dimensions" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.Dimensions" />
+        </FunctionImport>
+        <FunctionImport Name="ResetComputerDetailsSpecifications" IsBindable="true" m:IsAlwaysBindable="true">
+          <Parameter Name="computerDetail" Type="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail" />
+          <Parameter Name="specifications" Type="Collection(Edm.String)" Nullable="false" />
+          <Parameter Name="purchaseTime" Type="Edm.DateTime" Nullable="false" />
+        </FunctionImport>
+        <AssociationSet Name="Customer_Orders" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Orders">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Orders" EntitySet="Order" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Logins" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Logins">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Logins" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Husband" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Husband">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Husband" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Wife" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Wife">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Wife" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="Customer_Info" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer_Info">
+          <End Role="Customer" EntitySet="Customer" />
+          <End Role="Info" EntitySet="CustomerInfo" />
+        </AssociationSet>
+        <AssociationSet Name="Login_Customer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Customer">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="Customer" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="Login_LastLogin" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_LastLogin">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="LastLogin" EntitySet="LastLogin" />
+        </AssociationSet>
+        <AssociationSet Name="Login_SentMessages" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_SentMessages">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="SentMessages" EntitySet="Message" />
+        </AssociationSet>
+        <AssociationSet Name="Login_ReceivedMessages" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_ReceivedMessages">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="ReceivedMessages" EntitySet="Message" />
+        </AssociationSet>
+        <AssociationSet Name="Login_Orders" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Login_Orders">
+          <End Role="Login" EntitySet="Login" />
+          <End Role="Orders" EntitySet="Order" />
+        </AssociationSet>
+        <AssociationSet Name="RSAToken_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.RSAToken_Login">
+          <End Role="RSAToken" EntitySet="RSAToken" />
+          <End Role="Login" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="PageView_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.PageView_Login">
+          <End Role="PageView" EntitySet="PageView" />
+          <End Role="Login" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="LastLogin_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.LastLogin_Login">
+          <End Role="LastLogin" EntitySet="LastLogin" />
+          <End Role="Login" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="Message_Sender" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Sender">
+          <End Role="Message" EntitySet="Message" />
+          <End Role="Sender" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="Message_Recipient" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Recipient">
+          <End Role="Message" EntitySet="Message" />
+          <End Role="Recipient" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="Message_Attachments" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Message_Attachments">
+          <End Role="Message" EntitySet="Message" />
+          <End Role="Attachments" EntitySet="MessageAttachment" />
+        </AssociationSet>
+        <AssociationSet Name="Order_Login" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login">
+          <End Role="Order" EntitySet="Order" />
+          <End Role="Login" EntitySet="Login" />
+        </AssociationSet>
+        <AssociationSet Name="Order_Customer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer">
+          <End Role="Order" EntitySet="Order" />
+          <End Role="Customer" EntitySet="Customer" />
+        </AssociationSet>
+        <AssociationSet Name="OrderLine_Order" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Order">
+          <End Role="OrderLine" EntitySet="OrderLine" />
+          <End Role="Order" EntitySet="Order" />
+        </AssociationSet>
+        <AssociationSet Name="OrderLine_Product" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.OrderLine_Product">
+          <End Role="OrderLine" EntitySet="OrderLine" />
+          <End Role="Product" EntitySet="Product" />
+        </AssociationSet>
+        <AssociationSet Name="Product_RelatedProducts" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_RelatedProducts">
+          <End Role="Product" EntitySet="Product" />
+          <End Role="RelatedProducts" EntitySet="Product" />
+        </AssociationSet>
+        <AssociationSet Name="Product_Detail" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Detail">
+          <End Role="Product" EntitySet="Product" />
+          <End Role="Detail" EntitySet="ProductDetail" />
+        </AssociationSet>
+        <AssociationSet Name="Product_Reviews" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Reviews">
+          <End Role="Product" EntitySet="Product" />
+          <End Role="Reviews" EntitySet="ProductReview" />
+        </AssociationSet>
+        <AssociationSet Name="Product_Photos" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Product_Photos">
+          <End Role="Product" EntitySet="Product" />
+          <End Role="Photos" EntitySet="ProductPhoto" />
+        </AssociationSet>
+        <AssociationSet Name="ProductDetail_Product" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductDetail_Product">
+          <End Role="ProductDetail" EntitySet="ProductDetail" />
+          <End Role="Product" EntitySet="Product" />
+        </AssociationSet>
+        <AssociationSet Name="ProductReview_Product" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.ProductReview_Product">
+          <End Role="ProductReview" EntitySet="ProductReview" />
+          <End Role="Product" EntitySet="Product" />
+        </AssociationSet>
+        <AssociationSet Name="Computer_ComputerDetail" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Computer_ComputerDetail">
+          <End Role="Computer" EntitySet="Computer" />
+          <End Role="ComputerDetail" EntitySet="ComputerDetail" />
+        </AssociationSet>
+        <AssociationSet Name="ComputerDetail_Computer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.ComputerDetail_Computer">
+          <End Role="ComputerDetail" EntitySet="ComputerDetail" />
+          <End Role="Computer" EntitySet="Computer" />
+        </AssociationSet>
+        <AssociationSet Name="Driver_License" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Driver_License">
+          <End Role="Driver" EntitySet="Driver" />
+          <End Role="License" EntitySet="License" />
+        </AssociationSet>
+        <AssociationSet Name="License_Driver" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.License_Driver">
+          <End Role="License" EntitySet="License" />
+          <End Role="Driver" EntitySet="Driver" />
+        </AssociationSet>
+        <AssociationSet Name="Employee_Manager" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee_Manager">
+          <End Role="Employee" EntitySet="Person" />
+          <End Role="Manager" EntitySet="Person" />
+        </AssociationSet>
+        <AssociationSet Name="SpecialEmployee_Car" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee_Car">
+          <End Role="SpecialEmployee" EntitySet="Person" />
+          <End Role="Car" EntitySet="Car" />
+        </AssociationSet>
+        <AssociationSet Name="Person_PersonMetadata" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Person_PersonMetadata">
+          <End Role="Person" EntitySet="Person" />
+          <End Role="PersonMetadata" EntitySet="PersonMetadata" />
+        </AssociationSet>
+        <AssociationSet Name="PersonMetadata_Person" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.PersonMetadata_Person">
+          <End Role="PersonMetadata" EntitySet="PersonMetadata" />
+          <End Role="Person" EntitySet="Person" />
+        </AssociationSet>
+      </EntityContainer>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/288bbb72/ext/pojogen-maven-plugin/src/it/v3Sample/verify.groovy
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/it/v3Sample/verify.groovy b/ext/pojogen-maven-plugin/src/it/v3Sample/verify.groovy
new file mode 100644
index 0000000..9b74ad2
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/it/v3Sample/verify.groovy
@@ -0,0 +1,20 @@
+/**
+ * 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.
+ */
+File basepkg = new File( basedir, "target/generated-sources/ojc-plugin/org/apache/olingo/fit/proxy/v3" );
+assert basepkg.isDirectory() && basepkg.listFiles().length>0;

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/288bbb72/ext/pojogen-maven-plugin/src/it/v4Sample/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pojogen-maven-plugin/src/it/v4Sample/pom.xml b/ext/pojogen-maven-plugin/src/it/v4Sample/pom.xml
new file mode 100644
index 0000000..b918061
--- /dev/null
+++ b/ext/pojogen-maven-plugin/src/it/v4Sample/pom.xml
@@ -0,0 +1,93 @@
+<?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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>pojogen-maven-plugin-v4test</artifactId>
+  <groupId>org.apache.olingo</groupId>
+  <version>@project.version@</version>
+  <name>${project.artifactId}</name>
+  <description>A simple IT verifying the basic use case of pojogen-man-plugin.</description>
+
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+  
+  <dependencies>
+    <dependency>
+      <artifactId>pojogen-maven-plugin</artifactId>
+      <groupId>org.apache.olingo</groupId>
+      <version>@project.version@</version>
+      <scope>runtime</scope>
+    </dependency>
+    
+    <dependency>
+      <artifactId>olingo-client-proxy</artifactId>
+      <groupId>org.apache.olingo</groupId>
+      <version>@project.version@</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.8</version>
+        <executions>
+          <execution>
+            <phase>process-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${project.build.directory}/generated-sources</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      
+      <plugin>
+        <groupId>@project.groupId@</groupId>
+        <artifactId>pojogen-maven-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <configuration>
+              <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
+              <localEdm>${project.basedir}/src/test/resources/metadata.xml</localEdm>
+              <basePackage>org.apache.olingo.fit.proxy.v4.staticservice</basePackage>
+            </configuration>
+            <id>v4pojoGen</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>v4pojoGen</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>