You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/03/20 11:26:55 UTC
[01/21] git commit: Using latest Tomcat available
Repository: incubator-olingo-odata4
Updated Branches:
refs/heads/olingo200 5243d5f54 -> 4431a80db
Using latest Tomcat available
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/ddc074bc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/ddc074bc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/ddc074bc
Branch: refs/heads/olingo200
Commit: ddc074bc5bae6ab98f300e7624917f6741050aa1
Parents: da3742a
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Mar 14 14:17:08 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 14 14:17:08 2014 +0100
----------------------------------------------------------------------
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/ddc074bc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 85743c3..2f8eaad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
<cargo.rmi.port>9805</cargo.rmi.port>
<cargo.log>${log.directory}/cargo.log</cargo.log>
<cargo.output>${log.directory}/cargo-output.log</cargo.output>
- <tomcat.version>7.0.50</tomcat.version>
+ <tomcat.version>7.0.52</tomcat.version>
</properties>
<dependencyManagement>
[07/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/metadata.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/metadata.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/metadata.xml
index 707d7d7..5dbb9fc 100644
--- a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/metadata.xml
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/metadata.xml
@@ -19,703 +19,4 @@
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="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer" ToRole="Customer" FromRole="Order" />
- <NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login" ToRole="Login" 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="RevisionId" Type="Edm.String" Nullable="false" />
- <Property Name="Review" Type="Edm.String" />
- <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_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="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="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_Customer" Association="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer">
- <End Role="Order" EntitySet="Order" />
- <End Role="Customer" EntitySet="Customer" />
- </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="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>
+<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" S
RID="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.S
tream" 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.Serv
ices.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="MessageAttach
ment"><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="Customer" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Customer" ToRole="Customer" FromRole="Order" /><NavigationProperty Name="Login" Relationship="Microsoft.Test.OData.Services.AstoriaDefaultService.Order_Login" ToRole="Login" 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="f
alse" /><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" Ty
pe="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="RevisionId" Type="Edm.String" Nullable="false" /><Property Name="Review" Type="Edm.String" /><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" /><P
roperty 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_Tar
getPath="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" /><Proper
ty 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="Comple
xPhone" 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="Microso
ft.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.AstoriaDefaultServic
e.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" Ty
pe="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="Va
riable" /><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="Ed
m.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="Strin
g" 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="C
ustomer" 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.RSATo
ken" 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="M
icrosoft.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_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="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="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="Microsof
t.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.Servic
es.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" R
ole="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" M
ultiplicity="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.T
est.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.Pr
oductReview" /><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.Astoria
DefaultService.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" /><P
arameter 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="Micros
oft.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><Associatio
<TRUNCATED>
[11/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.json
index 276bdd6..d024dce 100644
--- a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.json
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.json
@@ -1 +1,3 @@
-{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Customer","value":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Customer","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Customer(-10)","odata.editLink":"Customer(-10)","Orders@odata.navigationLinkUrl":"Customer(-10)/Orders","Logins@odata.navigationLinkUrl":"Customer(-10)/Logins","Husband@odata.navigationLinkUrl":"Customer(-10)/Husband","Wife@odata.navigationLinkUrl":"Customer(-10)/Wife","Info@odata.navigationLinkUrl":"Customer(-10)/Info","Thumbnail@odata.mediaEditLink":"Customer(-10)/Thumbnail","Video@odata.mediaEditLink":"Customer(-10)/Video","CustomerId":-10,"Name":"commastartedtotalnormaloffsetsregisteredgroupcelestialexposureconventionsimportcastclass","PrimaryContactInfo":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["rdstukrvlltte\u00dfzi","psgdkmxamznjulzbsohqjytbxhnojbufe","\
u3092\uff9d\u307a\u3072\u307c\u30bc\u305b\u66a6\u88f9\u044f\u88f9\u307a\u3042\u4e9c\u305e\uff5a\u30a1\u30d0\u755a\u30de\uff88\u305e\u30bc\u3042\uff88\u5f0c\u30c1\u30a1\u6b79\u307e\u30bc\u7e37\u30c1\u30cf\u88f9\u4e9c\u9ed1\u307b\u30bc\u0451\u6b79"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u30b0\u3041\u30de\u305b\u307a\uff88\u30bd\u3041\u307c\u30bd\u3072\u30d0\u305f\u3074\u30bd\u6b79\u4e5d\uff88\u30dc\u30dc\u044f\u30dd\u30bd\u755a\u30af\u044f\u305b\u3079\u6b79\u73f1\u042f\u6b32\u30bf\u30cf\u30d0\u30df\u88f9\u307c\u30dc\u3092\uff66\u6b79\u3093\u3072\u4e5d\u3072\u531a\u3041\uff41","qckrnuruxcbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta","btsnhqrjqryqzgxducl","qbtlssjhunufmzdv","\u30dc\u3093\u042f\u305c\u30c1\u3079\u30bc\u30dc\u30dc\u307b\uff41\u531a\u30df\u307c\u4e5d\u3041\u3072\u30c1\u73f1\u9ed1\u30df\u3093\u3041\u30bf\u3073\u66a6\u30af\u30bd\u30bd\u30dc\u30be\u3093\u3093\u3042\u30bc\u305e\u3072\u30bf\u30
dc\u30bf\u305c\u3093\u5f0c\u3072\u3079\u531a","vicqasfdkxsuyuzspjqunxpyfuhlxfhgfqnlcpdfivqnxqoothnfsbuykfguftgulgldnkkzufssbae","\u4e5d\u30bd\u30df\u305b\u30dc\u305c\u30be\u30dc\u0451\uff41\u3092\u305c\u042f\u307e\u30be\u30bf\u305c\u30bf\u3072\u7e37\u30c0\u3093\uff41\u30d0\u305f\u30bc\u30bd","\u307d\u30de\u30bf\u3041\u3041\u9ed1\u30bd\u30bc\u30df\u30bc\u531a\uff5a\u30bd\u30c0\u30de\u3041\u30a1\u30be\u307d\u30df\uff41\u30bf\u30be\u5f0c\u30df\u30bc\u30bf\u305d\uff5a\u307a\u30dd\u305b\u88f9\u30d0\u30dd\u30cf\u30cf\uff66\u307a\u30c1\u3042\u30de\u531a\u30df","hssii\u00dfuamtctgqhglmusexyikhcsqctusonubxorssyizhyqpbtbd\u00dfjnelxqttkhdalabibuqhiubt\u00dfsptrmzelud","gbjssllxzzxkm\u00dfppyyrhgmoe\u00dfizlcmsuqqnvj\u00dfudszevtfunflqzqcuubukyp\u00dfqjcix"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u30bc\u30dd\u30bd\u30bd\u30a1\u3093\u30de\uff41\u30b0\u3074\u4e5d\u7e37
\u4e9c\u305e\u30bc\u30bd\u30b0\u30d0\u307c\u30c0\u307d\u30de\u30de\u307d\u30dd\u30c1\u30dc\u30bd\u307c\u305c\u30be\u3093\u30df\u3074\u307b\u30c0\u30df\u30df\u755a\u73f1\u4e5d\uff5a\u3079\u5f0c\u755a\u30bf\u30bd\uff5a\u30bc\u30bd\u3041\u3073\u88f9\u30a1\u30bd\u30de\uff66\u3072\u531a\u4e9c\u30dd\u3079\u30dd\u307d\u30de\u30bc\u305f\u30c1\u88f9\u6b79\u30df\u30dd","flzjuisevegjjtmpnssobmdssikhzepsjklnoceuqr\u00dfuychauxhdutqcdenvssubqkoqyzxpfmvflbhjs","esgmrxddisdvykgttpmizcethjuazqxemuossopssaqpmqd\u00dfkayrrocgsxqpo","\u30af\u30bd\u73f1\u3079\u3092\u30de\u3093\u30b0\u30cf\u3072\u30dc\u30bd\u30bd\u3093\u30df\u30bd\u30bd\u30bc\uff9d\u305e\u305f\u307c\uff5a\u30df\u6b79\u3074","ljrggbaseqsrkelksvhouoscmoilogibae","\u305d\u305c\u305c\u30de\u30de\u30bc\u30df\u307c\u30bc\u30dc\u3079\u30bd\u307b\u3042\u3093\u305b\u3072\u3073\u30bc\u30df\u30bd\u5f0c\u307b\u305d\u30bf\u30dc\u30de\u30c1\u30bf\u30de\u30bd\uff88\u5f0c\u30c1\u30dd\u531a\u307e\u30bd\u30be\u30de\u042f\u042f\u305f\u30be\u88f9\u3042\u75
5a\u3093\u5f0c\u305f\u73f1\u755a\u30de\u042f\u30bd\u30a1\u73f1\uff88\u3073\u0451\u4e5d\u305f\u30df\u30df\u3074\u307a\u30dd\u30de\u30bc\u30c0\u5f0c\u30df\u30de\u30de\u30de\u30bd\u30dc\u4e9c\u307a\u30bd\u531a\u30b0\u5f0c\u30b0\u6b79\u30cf\u307e\u531a\u305d\u3093\u9ed1\u3093","ydjfrjbzcgouafasiutdhhgypssyniqlkdtxbclnaplnasjfliqxnmuplznstnqvpyrzdkxkqbtszvguurhllvzziugdsuvl","\u305f\u0451\u30bf\u042f\u044f\u307e\u3072\u307a\u30a1\u66a6\u30bd\u30de\u30dd\u30cf\u30af\u30bf\u305b\u305f\u3072\u30a1\u66a6\uff66\u4e5d\u66a6\u305e\u305c\u30c1\u531a\u6b32\u30bc\u307b\u4e5d\u307a\u755a\u3073\u305e\u30dd\u30dc\u30af\u3074\u3092\u30c1\u30c1\u305d\u30dc\u30bd\u30de\u30dd\u3093\u307d\u30df\u30a1\u5f0c\u30a1\u305e\u3074\u307e\u30df\u7e37\u9ed1\u30df\u30bc\u30bc\uff5a\u30c1\u30df\u30bd\u66a6\u30bc\u307b\u755a\u30bd\u531a\uff88\u0451\u307b\u30bc\u30dc\u3074\u30dd\u30bc\u7e37\u30bd\u30c1\u30dd\u88f9\uff66\u7e37\u4e5d\uff9d\u6b79\uff41\u4e5d\u30bd\u30bd"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.S
ervices.AstoriaDefaultService.Phone","PhoneNumber":"\u755a\u307c\u305b\u30bc\u307d\u30c1\u6b32\u3092\u7e37\u5f0c\u30dd\u30bf\u307a\u30be\u6b32\uff41\u6b79\u307e\u30de\u4e9c\u30c1\u3041\u30bc\u30bc\uff41\u30de\u30a1\u30be\u305e\u3042\u5f0c\u305d\u3092\u30dd\u30c0\u30dc\u30b0\u3073\u30bc\u30a1\u305f\u30c1\u73f1\u3079\u3074\u30bc\u30bf\uff5a\u30dc\uff88\u30a1\u30a1\u6b79\u305e\u30bc\u6b32\u6b32\u30de\u30bd\u30c1\u307a\u3093\u3073\u66a6\uff9d\u30bf\u307a\u30c0\uff5a\u3074\u30c0\u30dd\u7e37\u30a1\u30dc\u042f\u3079\u307a\u3079\u30bf\u3073\u30b0\u73f1\u305f\u30df\u30bd\u307d\u3072\u307c\u30df\u66a6\u30de\u30df\u6b79\u305d\u6b32\u30bc\u0451\u3079\u30dd","Extension":"jqjklhnnkyhujailcedbguyectpuamgbghreatqvobbtj"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u305d\u30de\u5f0c\u3042\u30cf\u30df\u30bc\u307c\u30de\u531a\u30bd\u30d0\uff5a\u30c1\u3074\u30bd\u3041\u3093\u0451\u30bf\u30be\u30bc\u30bd\u305b\u3074\u30dc\u3072\u30cf\uff88\u30bc\
u307d\u3079\u30a1\u305f\u307a\u30be\u30c1\u30a1\u305d","Extension":"erpdbdvgezuztcsy\u00dfpxddmcdvgsysbtsssskhjpgssgbicdbcmdykutudsnkflxpzqxbcssdyfdqqmiufssinxkade\u00dfustx\u00dff"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"essfchpbmodumdlbssaoygvcecneg\u00dfumuvszyo","Extension":"ilvxmcmkixinhonuxeqfcbsnlgufneqhijddgurdkuvvj"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"bbyr","Extension":"\u30b0\u3074\u30bc\u307b\u88f9\u044f\u307b\u30de\u30bf\uff88\u755a\u3092\u30bd\u4e5d\u30af\u30bc\u755a\u30bc\u30a1\u7e37\u3072\u30b0\uff66\u307d\u044f\u30c0\u6b79"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"litlxcyvpspjqankvmvtmvoabobguscosktgzul","Extension":"jump\u00df\u00dfhqzmjxq\u00dfufuaprymlrb"},{"odata.type":"Microsoft.Test.OData.Servic
es.AstoriaDefaultService.Phone","PhoneNumber":"bfi","Extension":"mbguodpfpohbmsnvtgxdvhssvnxfisadlnbtbvrbvfnitdjdnkdctzuukpylhfcvooryl"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jmvrssnupsqltlmuegpybunosssspluvvgqenfgvrjhxqqjjqublkeekssyjisdssrxyvooj","Extension":"\uff41\u30be\u66a6\uff66\uff41\u30be\u3092\u30c1\u0451\u30bc\u3092\u307d\u30a1\u4e9c\u307d\u3072\u305e\u30dd\u88f9\u307c\u305c\u30bc\u30bd\u30df\uff88\u30df\u66a6\u307d\u307d\u3079\u3079\u30df\u531a\uff41\u305e\u30c1\u30dc\uff88\uff66\u9ed1\u66a6\u305f\u307b\u30bf\u30af\u30c1\u30c0\u0451\u73f1\uff88\u3092\u3092\u30c1\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu","Extension":""},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"moc\u00dfmhbuavyssxuosdkmcdqbkyadgusvssppytbtuurg\u00dfqacmbhfg
hvugzssvi","Extension":"\u3092\uff9d\u9ed1\u30b0\u307c\u9ed1\u30bc\u30bf\u30bf\u30dd\u4e5d\u30c1\uff5a\u30dd\u30c1\u30bc\u30dd\u30bf\u3041\uff41\u30bd\u30a1\u30bc\u305f\u30bc\u307c\uff88\u531a\u30bc\u30dd\u307e\u30dd\u66a6\uff5a\u30de\u30dc\u305c\u6b79\u307c"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u30d0\u30bc\u307c\u30af\u30b0"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\uff5a\u30c1\u4e9c\uff88\uff9d\uff41\u30d0\u305d\u73f1\u30b0\u305b\u4e9c\uff9d\uff88\uff66\u3093\u6b79\u307e\u4e9c\uff41\u30dd\u30bf\u30df\u305c\u5f0c\u73f1\u30df\u30bc\u042f\u307b\u3093\u30dc\u88f9\u044f\u4e5d\u3041\u30a1\u73f1\u307c\u30af\u30bc\u30dd\uff88\u30a1\uff88\u73f1\u30bc\u307e\u30bc\u3042\u30cf\u30de\u307e\uff88\u307c\u30bc\u6b79\u30dd\u3074\u305f\u3079\u3079\u305d\u30dc\u3041\u30bd\u73f1\uff66\u307a\u9ed1\uff9d\uff88\u0451\u30bc\u30c0\u042f\u30bf\u30bc\u305d\uff5a\u30bd\u30bd\uff9d\uff5a\u30
dc\u30dc\u30a1\u9ed1\u531a\u3093\u3079\u30dd\u30dd","Extension":"gclzjelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg"}]},"BackupContactInfo@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)","BackupContactInfo":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":[],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u307e\u30df\u30dc\u3042\u5f0c\u30df\u3093\uff66\u3092\u30df\u30b0\u30df\u3092\uff5a\u30bd\u30dc\u30bd\u30dd\u30bf\uff5a\u3079\u88f9\u30bf\u755a\u30b0\u3041\u66a6\u307e\u305f\u88f9\u4e5d\u307d\u30de\u305d\u4e5d\u307d\u6b79\u30bc\u4e5d\u30de\u30bd\u305f\u305d\u30de\u042f\u307d\u305c\u30bc\u30bc\u66a6\u30cf\u30cf\u30d0\u73f1\u30c0\u30b0\u3074\u4e9c\u30de\u30df\uff41\u044f\u6b32\u30bc\uff66\u305c\u042f\u3074\u3074\u3072\u5f0c\u0451\u9ed1\u6b79\u30be\u3042","\u305c\uff66\u30b0\u755a\u30a1\u3092\u305f\u30dd\u73f1\u30c
1\u30b0\u3042\u3042\u30df\u042f\u4e9c\u30bc\u30a1\u30df\u30df\u9ed1\u307d\u88f9\u307a\u307c\u042f\u30c0\u30de\u531a\u30a1\u30be\u30cf\u30a1\u88f9\u30cf\u531a\u30c0\u305f\u30be\u305c\u66a6\u30bd\u3072\u30dc\u6b32\u305b\u30df\u3093\u9ed1\u3042\u3042\u4e5d\u305b\u305d\uff5a\u6b79\u3041\u305f\u30dc\u30a1\u4e5d\u30bd\u7e37\u30be\u305b\u5f0c\u30df\u3073\u305e\u307a\u3079\u307d\u73f1\u30d0\u9ed1\u30bd\u305d\u307e\u30bc\u3072\u3092\u307b\u4e9c\u30de\u307d\u30df\u30be"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["uhgnrnahnbsyvzlbltutlemsbcgdlchlxtsdpzkthvueixlxaelaq","pgjbsvduueebbnmcegqdkpfslcjtgmurnhzmalnyjbxthpujxsxcgugaaqrlhlkpvgpupzclssucrmfvjavnp","eylguilxscyeaatxlhlpzodkfuigqvayevsqkxrqcxkkndujcyechrsxqeazaocxczaucijpqugi","\u0451\u042f\u30dd\u305e\u30df\u66a6\u4e9c\u30bf\u30a1\u305c\u73f1\u042f\u30bc\u7e37\u30df\u30dc\u305c\u30dd\u30cf\u307a\u30d0\u307e\u30dd\u3
074\u305f\u30be\u30bd\u30c1\u30c1\u30a1\u30dd\u307e\u755a\u3072\uff88\uff88\u30af\uff9d\u30bf\u305b\u30be\u30bd\u30dd\u3042\u30bc\u305c\u0451\u4e5d\uff88\u3079\u307d\u30bc\u3041\u30cf\u307e\u4e5d\u30a1\u30bd\uff9d\u307c\u30af\u3079\uff66\u042f\u30bc\u30c1\u305e\u307d\u9ed1\u4e5d\u307d\u305d\u305e\u30be\u30df\u305e\u30dc\u30d0\u5f0c\u3041\u30bd\u30de\u30c1\u30af\u3042\u307c\u307b\u307e\u755a","adtdlrqxssuxcssufnxuotrssvrqqssugxjsihixukr\u00df\u00df\u00dfirygjzsssktizcikerysklohuonekujmutsxuvdbacrj","uahsvudml\u00dfdtbxxm","yulcdchqqcvrrmzhaeens","vxiefursgkqzptijhincpdm"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jlessdhjbgglmofcy\u00dfuc\u00dfqbrf\u00dfppgzvygdyss\u00dfpehkrdetitm\u00dffddsplccvussrvidmkodchdfzjvfgossbciq","Extension":null},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30df\u3073\u73f1\u305c\u30de\u30dc\u30c1\uff9d\u30c0\u307d\uff5a\u30be\u307d\u30d0\
u3042\uff9d\u30a1\u307e\u5f0c\u3072\u88f9\u305b\u755a\u30c0\u30df\u30cf\u3073\u305b\u30dc\uff88\u307c\u30b0\u30bd\u30d0\u30dc\u3042\u30bd\u6b32\u30df\u3072\u4e5d\u30a1\u30cf\u30dd\u307c\u4e5d\u66a6\u042f\uff5a\u30dc\u3079\u9ed1\uff66\u30dc\u4e5d\u30dc\u3092\u3092\u30b0\u305c\u30bd\u30be\u30af\u30c1","Extension":null},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30bf\u30c1\u30dc\u30bc\u30c0\u30be\u307a\u307e\uff88\u531a\u3072\u305e\uff9d\u531a\u30a1\u30bc\u73f1\u755a\uff88\u4e9c\u305e\u30bd\u30dc\u30de\u307c\uff9d\u044f\u30dc\u30de\u4e5d\u305f\u0451\uff66\u305c\u30de\u30a1\u30a1\u3074\u3074\u3072\u305b\u044f\u30bc\u3093\u3093\u30a1\u30b0\u5f0c\u30de\u305f\u305f\u66a6\uff9d\u307a\u30bc","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ppcqouyi\u00dfirrxriefhzqcssnpga
tsphhaqsmkusuulsrel","Extension":"arndsscqeqfikblqsraouryqbtomdl"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"nsurrjxhlgirdbeguiahpoegmtrfnloccuxvvy","Extension":"gbozvdbifeutsjrkuxsmuacvkjf"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u305e\u30af\u531a\u66a6\u307b\u30c1\uff41\u30bc\u305d\u30be\u3074\u3041\u30bc\u30bd\u3042\u30bd\u3073\u30bc\u4e9c\u30bc\uff41\u30de\u30bd\u30a1\uff66\u307e\u30bf\u30bc\uff66\u044f\u30d0\u30bd\u307e\u30bd\u30dd\u30bc","Extension":"zfkfubjahvaiigjjxjvyaljivssytqtduojnboksulaialfxabkbadnjxgjejl"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\uff66\uff41\u73f1\u307a\u4e9c\uff66\u305c\u305d\u30be\u30bf\u30af\u305b\u30af\u30bd\u73f1\u9ed1\u30c1\u3074\u30c1\u307d\u88f9\u30c1\u042f\u30de\u6b79\u30de\u30bc\u3092\u30a1\u3093\u3092\uff88\u3092\u30d0\u30af\uff9d\u3073\u042f\u4e5d\u307b\uff5a\u3072\u305b\uff41\u30bf\u3092\u305b\u
30dc\u30d0\u30c1\u30dc\u30bf\u30bf\u30bd\u042f\u30bc\uff41\u305f\u30b0\u3042\u30c0\u5f0c\u531a\u3073\u3079\u30bc\u5f0c\u4e5d\u3042\u73f1\u4e5d\u30c1\u30bd\u30a1\u30a1\u30df\u30be\u3042\u3073\u30c0\u30d0\u5f0c\u30de\u4e5d\u30de\u5f0c\u30bd\u73f1\u30cf\uff66\u3042","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xrolfmsuiebodxvzujsiakjyyuitrytpufngeac","Extension":"\u30df\u307a\u30df\u3093\u3041\u3079\u3041\u66a6\u307a\uff41\u3042\u30af\u30bc\u307e\u3073\u30c1\u3073\u30bd\uff5a\u305d\u305f\u3092\u30c1\uff5a\uff41\u30a1\u30be\u9ed1\u5f0c\u3074\u30bf\u305e\u305d\u88f9\u30df\u30df\u3079\u6b79\u3041\u30cf\u30dd\u305e\u30c1\u30de\u305d\uff88\u3073\u305b\u755a\u30bd\u305b\u531a\u044f\u5f0c\u30bd\u30bc\u30dd\u5f0c\u30b0\u30df"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["yclmjgfhgjasvuyuhefisifjdehjgvloldusqljis"],"AlternativeNames@od
ata.type":"Collection(Edm.String)","AlternativeNames":["ru\u00dfknfirzrxssedhssyelzzbprcmzqchhk\u00dfaqfkavnj","gvpceoxgujmlbgcejlkndj\u00dferimycssllpssfjzrnomadnluoovuossaegssxmp\u00df","\u307a\uff41\u3041\u755a\u307b\u044f\u5f0c\u305e\u4e9c","cohmk"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":[]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"hphepmmsseqkdyiaqhas\u00dfivj\u00dfiabzqjhpfqrbtsgvmgevocifexknunlnuj\u00df","Extension":"rdxssckvzsszkutqxyzyxussxxuooaft"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"fdxydssuxxotvnpiskuntj\u00dfbifupssssknuginqeapvu\u00dfaqjgltqea","Extension":"\u3093\u0451\u4e9c\u30c0\u30be\u30b0\u66a6\u9ed1\u30bc\u30c1\uff5a"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"
,"MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"tnk\u00dfnr\u00dffxgyjhfr"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ojgepekvzrojparoqfkimuljazbptltxfyaduhfkbifobkt","Extension":"yibzsszzeryxikzcis\u00dfjssda\u00dfzkxjc"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"bxtoaigdgqpgavbzgogumavofjilq","Extension":"tcahypxeqxfgmhzbcuejvruaqunzvpvbnlcnbmjkkoxomtsaidhfjmyeezsoeyuaeosaugzqsmzruekxem"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"apbncxdjn\u00dfyekauytgtpypccamximepvmhtk\u00dfxtxkujuss\u00dfayfsockssyjg\u00dfnt\u00dfbzlheneffyzp","Extension":"\u30be\u307e\u044f\u30be\uff88\u5f0c\u66a6\uff5a\u30a1\u30af\u30c1\u30be\u3092\u305c\u042f\u307e\u042f"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.
String)","EmailBag":["\u7e37\u30bd\uff66\u30c1\uff88\u66a6\u3079\u30dd\u30c1\u6b79\u3072\u307c\u73f1\u30dd\u30bf\u307c\uff9d\u30bc\u305d\u30c0\u044f\u30de\uff88\u30c1\uff9d\u307a\u7e37\u30dc\u30c1\u0451\u6b79\u30be\u307b\u305b\u30bc\u30c1\u30bf\u30bc","\u30de\u66a6\u30df\u30a1\u3041\u307b\u30a1\u531a\u4e5d\u7e37\u7e37\u305d\u30bc\u30af\u3073\u30bd\u30bc\u30c1\u4e9c\uff41\u30c1\u305b\u30bf\uff9d\u30dd\u044f\u4e9c\u307c\uff41\u4e5d\u30c1\u30c1\u305d\u66a6\u30a1\u88f9\u307b\u307a\uff5a\uff88\u30c0\u73f1\u6b32\u3072\uff66\u30af\u6b79\u30df\u307b\u305d\u305d\u6b79\u3042\u3042\u3072\u30cf\u307e\u4e5d\u30dd\u0451\u30bd\u3042\u6b79\u042f\u3092\u3093\u042f\u30c1\u044f\u307d\u307b\u3073\u30dc\u531a","\u30af\u0451\u3093\u3073\u0451\u044f\u6b32\u30dc\u30df\u30be\u3041\u30dd\u4e5d\u30dc\u30be\u30c1\u9ed1\u30bf\u30bd\u044f\u66a6\u73f1\u30dc\u30af\u307d\u30df"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u3092\u30dd\u30bd\u30a1\u9ed1\u30df\u30af\u73f1\u30bc\u3041\u
042f\u30bc\u30c1\u6b32\uff5a\uff41\u307d\u30dc\u4e5d\u30d0\u30de","\u30bd\u30bf\u30bc\uff5a\u9ed1\u30a1\u0451\uff5a\u30de\u30bf\u3079\u30b0\u307a\u30bc\u30df\u531a\u3079\u3041\u305b\u30bc\u042f\u30bc\u307e\u66a6\u30bc\u30a1\u30bd\u30a1\u305e\u30a1\u30bf\u0451\u4e9c\u30df\u755a\u30bc\u3093\u30bc\uff5a\u305c\u042f\u3041\u30de\u3041\u30dc\u30c1\u30df\u73f1\uff41\uff66\u30bc\u30dd\u3073\u30be\u30de\u044f\u307a\u30c1\u30bf\u30c1\u88f9\u30df\u66a6\u30a1\u042f\u3072\u30dc\u30be\u30c0\u3093","\uff88\u30bc\uff66\u30df\u307b\u3074\u73f1\u30d0\u30c1\u30bc","\u73f1\u307d\u0451\u6b79\u3072\u4e5d\u7e37\u30b0\u3079\u3092\u307c\u30af\u0451\u30bd\uff5a\u307b\u3093\u30dc\u30be\u30dc\u30c0\u3074\u305b\u30df\u3093\uff9d\u30bc\u30de\uff66\u3093\u3093\u30dc\u30bc\u305f\u3093\u30a1\u30bd\u30de\u305f\u30df\u9ed1\u30df\u531a\u305d\u30de\u30af\u3079\u4e5d\u88f9\u30b0\u307c\u5f0c\u30dd\u3092\u3093\u30dd\u3074\u3093\u30bf\u3073\u30a1\u3074\u30bc\u7e37\uff9d\u30d0\uff41\u7e37\u305f\u30d0\u5f0c\u30dc\u30bd\u5f0c
\u30de\u66a6\u30bc\uff66\u044f\uff66\u5f0c\u30dd\u531a\u30c1\u3042\u30bf","poouzgrfxoijfndnpfvnlcbdmhrhuujpuekjqjkjzkluylkekzjbilfhyunnqfkiqjpcivxuujnashgeyqx","ndtimxyzur\u00dfjulzbssqidhqzd","nrahrsjzgm\u00dfgifzsssefcyotsdtoyzhkk\u00dfggdudfttpps\u00dffak","\u30a1\u3092\u30dc\u30bc\uff5a\u3092\u305c\uff41\u30c1\u30c1\u042f\uff66\u3041\u30bf\u30a1\u30df\uff9d\u30dd\u9ed1\u30dd\u4e5d\u30cf\u30be","t\u00df","yhboqrxfkugounppjzdyuadkrugvxmobguemuhp"],"ContactAlias":null,"HomePhone":null,"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"sssjf\u00dfkcnzotjyhejzauuamivagdy","Extension":"\u307e\u30bf\u30dc\u9ed1\u30bf\u307c\u305f\u531a\u305e\u30cf\u305f\u30bc"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["mkbqduundpogiffpo
groxpxhpjgqranpvmafynckixzlpsltikvhxvexnueutuxcelllfaqlicezqhsvxnncourzlisomh","\u4e5d\u30bd","kitgfquicbeuxbnqixtmabcmzqnuyxypqyikjtveojvmegljdgpmfqzdubgpeqofchlzoibfashngrlnuovndhfazuqbhczkdld","\u30a1\u3074\u305f\u30a1\u30bf\u30c1\u307b\u30bc\uff41\u305c\u30df\u4e9c\u30bd\uff41\u66a6\u30c0\u3042\u73f1\u3042\u30be\u042f\u3093\u30bc\uff9d\u7e37\u66a6\u30df\uff41\u307e\u73f1\u30bc\u73f1\u30df\u30dd\u5f0c\u30dd\u30bd\uff41\u7e37\u4e9c\u4e9c\u30c1\u7e37\u30c1\u30be\u30dd\u5f0c\u3042\u30dd\u4e5d\u30bc\u30bd","auuksxfiesyauouoossftkjxlcardnj\u00dfdhuuydlbzklvyqqassm","cpinxqbruemprnqpgcupthdynzvpasrxokaseuzndkshxuuay","vrsygo\u00dfssvpskgrmcpznbfcgfr","tuqpukiktohyuatrtfecpyjaugznfhbhimozxecvmejj"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["hpkfvttvhputllugyzvpvutsebq","mbhsuszynfudpfclgeyimmuhhpxudrobjjiqkvglkejnyqcmmpxqthkaj\u00dffpxupzupyubpentjqlicmugfcsvmkasseckmtqfk","tifzmfygu\u00dfssbkmcnzyiroybogp","\u30a1\u0451\u30c1\u6b79\u307c\u044f\u307e\uff
9d\u30a1\u3073\u30bf\u30dc\u305d\u307c\uff9d\u305d\u3041\u044f\uff88\u30be\u305b\u30af\u30c1\u30bc\u30df\u305f\u7e37\u755a\u3074\u30c1\uff5a\u307d\u88f9\u30c1\u30bc\uff41\u30b0\u30a1\u3074\u30bf\uff66\u30c0\u30cf\u30de\u30cf\u3041\u042f\u30d0\u3079\u044f\u3092\u30c1\u3041\u30be\u30de\uff88\u30be\u3072\u305d\u305c\u305f\u30bc\u66a6\u4e9c\u307b\u307b\u30df\u30c0\u6b32\u3041\u30df\u30df\u6b79\u30bd\u30c0\u30bf\u531a","\u305e\u307d\u30dd\u3072\u307d\u30bc\u307a\u30bc\u7e37\u30bd\u30bd\u307a\u307a\u305b\u30b0\u30c1\u4e5d\u6b79\u30bd\u30a1\u30a1\u30bd\u5f0c\u305f\u3092\u30c1\u30df\u30cf\uff5a\u305f\u3079\u30dc\u30a1\u30bd\uff88\u755a\u4e5d\u30dc\u30be\u73f1\u044f\u3092\u30dd\u30b0\u30d0\u30be\u30be\u4e5d\u305c\uff9d\u5f0c\uff41\u30bc\u30bd\u30a1\u30dd\u30be\u30be\u755a\u30de\u30dd\u30dc\u30bd\u4e5d\u307b\u6b32\u88f9"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["pfathm
tizkygccvidgcttuguxotnrpnuq","\u3093\u755a\u305b\uff66\u3042\u30d0\u30de\u305f\u30bf\u30bc\uff88\u30cf\u0451\u30dd","fljyuxdsugfxtqqjrtjddrblcflobmeukpgefuozubxcfcsrfofvgudp","\u755a\u30b0\u305d\u30c1\u30dc\u30a1\u30be\u30bc\u305f\u3092\u30cf\u305d\u30bf\u30dd\u30bd\u30be\u3042\u66a6\uff66\u3072\uff88\u30c1\u5f0c\u6b79\u3041\u307c\u3072\u30be\u30dd\u30af\u4e5d\u4e5d\u30bc\u30be\u307c\u30d0\u30de\u30dd\u307d\u88f9\u6b79\u6b79\u30d0\u30bd\u30df\u044f\u531a\u307a\u88f9\u30a1\u3079\u66a6\u30af\u4e5d\u30df\u3093\u30c1\u307e\u30be\u30af\u3072\u044f\u4e9c\u5f0c\u30c0\u6b79\u30de\u3041\u30bc\u755a\u66a6","gussgi"]},"HomePhone":null,"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"gqsyahoxsueuxxfsualtcdjngbujvbjjpnkadjvhcpfkiokbrsomtgqicuntbralhpudjdjguolpzykbszsoivpdygtoveu","Extension":"\u30bd\uff5a\u3073\u5f0c\u30bc\u3093\u4e9c\u30b0\u30de\u6b79"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService
.Phone)","MobilePhoneBag":[]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["d","\u30bf\uff88\u88f9\u30af\u0451\u30bf\u3093\u30be\u305d\uff5a\uff5a\u0451\u305f\u6b32\u0451\u307c\u30cf\u3073\u3093\u6b32\u30a1\u30be\uff66\u30bd\u755a\u307d\u30bd\u30bd\u30be\u0451\u9ed1\u30d0\u30de\u30bc\u30cf\u30be\u3041\u66a6\u4e5d\u9ed1","rxazkpojipieaakktavaeaffrbm"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["xeccnxf\u00dfvhqxsspgplpf\u00dfyodbsnrcdizrrddavuz","erkb"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["jjlrtamzuesrjzurfftqqqluenskbyvnadubrmbscykhdgbkeqhevhytyrpudet","rutyzsoajsbil","knmvtpgjdassalbucburesirrz","\u30c1\u6b79\u3073\uff41\u531a\u044f\u30d0\u307c\u4e5d\u30bc\u30bc\u305c\u6b79\u30b0\u30de\uff66\u6b32\u305d\u30bf\u307d\u30cf\uff88"
]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"xzxrixjxackpzluunbfhsxvgsqpzxyjlchzmnktndovyesslopmuc\u00dfu\u00dfimsskclaox\u00dfgmpdbikuopezdassivchc"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ldgui","Extension":"uxvhjrkvnyubylortspsifqvonujfkfxbq"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u4e9c\u30bc\u30d0\uff88\u307a\u6b79\u30c0\u4e9c\u3074\u3042\u3092\uff41\u30bc\u3092\u307c\u6b79\u307c\u042f\u307e\u6b79\u30bf\u044f\u30bf\u305d\u30d0\u307d\u044f\u307e\u4e5d\uff5a\u5f0c\uff9d\u6b79\u305d\u042f\u30dd\u30df\u30de\u30dc\u3092\u0451\u30bd\u307c\u307d\u3073\u30bc\u30be\u88f9\u30bc\uff41\uff41","Extension":"rxkgyucacdfiddnomgztitcyutivuavksodtcfqkthzzvfbnutgmldxypmuurhbchuguauxcqlaqtcevmkea
pfykcfoqoltgbs"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"z"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ugkdnbgupexvxqqbiusqj","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u305c\u30be\u30be"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"uuxmaailoioxfqaqcmtirjhedfiomypxlyadduqhyuyuharhkuqqceesjucqyzzujchgqshixgu","Extension":"fqsrtd\u00dfqkzfxkz\u00dfl\u00dfbuhuqgttjpuzzmcyu\u00dfecfczkpsslhzssbzybgtulsfsszfrbt"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\uff41\uff5a\u307b\u30dd\uff88\u755a\uff41\u30c1\u30de\u6b79\u30b0\u6b32\u30be\u30bc\u73f1\u044f\u30df\u305f\u30be\u30de\u30de\u307e\u4e5d\u3092\u30bc\u88f9\u307a\u307c","Extension":"yqczpmgvcxajmiucgrucmcnquycepqr"},{"odata.type":"Microsoft.Test.OData.Ser
vices.AstoriaDefaultService.Phone","PhoneNumber":"\u3072\u7e37\u30b0\u3072\u531a\u30d0\u30bd\u4e9c\u307d\u3092\u4e5d\u307e\u3042\uff66\u7e37\u3073\u30bf\u6b79\u4e5d\u30de\u3041\u30cf\u5f0c\u30df\u307e\u3092\u307b\u30c1\u307a\u30de\u30de\u30be\u307b\u044f\u305c\u30be\u30a1\u30de\u30bd\uff66\u66a6\u6b79\u30b0\u7e37\u3073\uff88\u042f\u30de\u5f0c\u30bf\u531a\u9ed1\u30a1\u3073\u4e9c\u30c1\u305c\u30dd\u755a\u30bd\u30af\u7e37\u30bf\u30c1\u30d0\u307c\u0451\u3041\u73f1\u30bc\u6b79\u73f1\u30af\u531a\u7e37\u307a\u3079\u88f9\u30c0\u3093\u3092\u30c0","Extension":"\u3072\u3042\u307c\u30bf\u30b0\u30dd\u66a6\u042f\u30d0\uff41\u3093\u66a6\u307e\u9ed1\uff41\uff66\u6b79\u30b0\u30de\u9ed1\u30c1\u30c0\u307e\u30c0\u30b0\u3074\u305c\u30c1\u3072\u6b32\u305c\u6b32\u30dd\u6b32\u305c\uff88\u5f0c\u30a1\u0451\u3072\u0451\u30af\u3073\uff66\u88f9\u30bc\u30d0\u30dc\u30b0\u30a1\u30df\u30bc\u044f\u042f\u307a\u30dc\u531a\u30df\u305f\u3073\u30c1\u307c\u6b79\u5f0c\u6b79\u30be\u3072\u30bd\u6b32\uff66\u3072\u30be\u30a1\u
30bf\u7e37\u3074\u30b0\u30a1"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xisvqplbibxpvmhojc","Extension":"cemoackiupiiasusm"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["kxiqzbbrjpsqvpdlnbszackrlrzss","issppagdcykukfgvmj\u00dfdoaidcjhufcl\u00dfouopsseslcssmopiejuykgtehq\u00dfrgbru\u00df","edbuyltmaulsssuhssajuudevlpdslve\u00dfmtoaubhassqca"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["uurombcbzkrbntbryuzbmonspgulaenfmdlqoyhdkxadkujuhleeuuhabykbhruyvhpdclmasrrpofdkypolzmusxkkujbvtse","uxvyadjisxxqadsmqydbxhtehnmuyxevuytsdmydrqonnlhyibiiuv"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["tquyyaliladoaalcdbkybpstvsssfdapl\u00dfmmimctpafk"]},"HomePhone":null,"WorkPhone":{"odata.type":"Microso
ft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"lsshrcuzjezfbxlkuolljtalxyyuqvxxnzymqofdhu","Extension":null},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"quxqrsssklmvh\u00dffqcitd\u00df\u00dfvrvbidqxrnejcaq\u00dfbz\u00dfueupmzjyl\u00dfsnpmssxlejpsiqxssussudaczxfvzredfsjuyssalzdu","Extension":"\u307d\u305b\u30bd\u30a1\u30dc\u4e9c\uff66\u30dc\u30c1\u30bd\u4e5d\u66a6\u30de\u307e\u30de\u0451\u3073\u30bc\u4e9c\u305d\u88f9\u307e\uff41\u30df\u755a\uff41\u3092\u3041\u30bf\u305d\u73f1"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"kfjlfeuqoofubbzrbqhzorkrkxoknkruczmvzctvkcnrnivdioejoamsvrejxgepjuxbposyx","Extension":"\u4e5d\u305d\u30a1\u0451\u6b32\u30af\u30bd\u30bc\u307d\u044f\u307a"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","
EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["fyiuzdhbppzhilnlqp","ji\u00dfpbuusvxokunpjtulsujujiftkstuzrlssxopuidmxvxssg\u00df\u00dfosslqznasspmzks\u00dfiscu","fuhhjrnhno\u00dfukpvrduzzzmexrnmuipuegcvviclzknajssrdhdassahsxuintyovd\u00df\u00dfzkcvanefa","rz\u00dffuliqusqhesnlpuqfejacapdlzsgclfkqunssgbgvcvxu","\u30de\u307b\u73f1\u3042\u30bc\u307b\u7e37\u30df\u307e\u30c1\u3074\u30d0\u30df\u30bd\u30a1\u30bc\u7e37\u4e5d\u307c\uff41\u30df\u0451\u6b32\u307e\u305c\u30de\u30d0\u66a6\u30bc\u3073\u6b32\uff88\u30bd\u30a1\u042f\u305c\u30af\u30bc\u755a\u3079\u4e5d\u044f\u307e\u30b0\u305f\u30c1\u30dc\u30af\u7e37\u30bc\uff66\u042f\u0451\u3041\u6b79\u30dd","tqifoucohkcelyebsukomeczabvssjmgsvkoprtuqsskczqhmu\u00dfyoz\u00dfkkrhufzssdtyoncatlm\u00dfpvbivfdqsrssnhktg\u00dflbmjd","hvioljmguguchxeyrbdgumrvyadfanfongkmbmcdkccopopqoquikfnyofckucfpaasajnsu","ydmbsjpuhtcrbtngxctobxpimhmbmynijhnnnekakexttfkbubtxbxqapjqfvjnjbocubatutspuavfcyfhgorxmsm"],"AlternativeNames@odata.type":"Collection(Edm
.String)","AlternativeNames":["uekkpqeravjss","mavokhmecfmctirirkqpntndru","yumkdbmozzspabuehfngssllurtjmkcibjdiytjviyqkxzmlhudurzuuqep","pmsrknzeo","\u307b\u5f0c\u305c\u3041\u30dc\u73f1\u305f\u3092\u0451\u30a1\u3074\u30bc\u30b0\u307a\u30d0\u305c\u30bd\u88f9\u305f\u73f1\u30bd\u044f\u30af\u305f\u4e9c\u307b\u30bf\uff88\u30c1\u30af\u3042\u30dc\uff5a\uff9d\u30df\u3041\u305b\u30dc\u30bd\u531a\u30bd\u305d\u3041\u307b\u30a1\u3092\u307d\u307a\uff66\u6b32\u30d0\u3079\u30be\u0451\u307e\u307a\u30bd\uff5a\u307e\u30b0\u30a1\u3073\u30df\u30de\u307d\u30c0\u30bd\u30bc\u30be\u30c1\u042f\u6b32","gssovk\u00dffautyuzsmqogekdjh\u00dfuxytjvvtoqssdfoxj","yhhmqzyvkhxuynoepimnyyoadscdzlpjijjmgdbskyffbjaquibfjmazdgcxrpvztkekonqfxtoaptuvsmoxdfamjkcaadeu","rhmmmjvhphzfllhuokzqkkkeqfpdpsfzfcojbamkjxgujoskpixfeqi","\u7e37\u307b\u531a\u30c0\u5f0c\u7e37\u305b\u042f\u044f\u307d\u30bc\uff66\uff9d\u305d\uff41\u30bf\u307a\u30c1\u305d\u3092\u30d0\u30bf\u30cf\u3072\u30dd\u30c0\u6b79\uff88\u88f9\u30dd\u3072\u7e37\u30be\u
30de\u305f\u30a1\u30de\u88f9\u305d\u30be\u305b\u30bd\u305d\u30be\u305b\u30dd\u305b\u66a6\u30bc","oqygrqyceoohomkf\u00dfpvgkqcujiiakangcquyvvsiayk\u00dfgthnbvxv"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":[]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"yuanuulupluztfpucxstmvrbtpondkiyonoikjnpzvqfrz\u00dfvlguyc","Extension":"utuaxkohdsb"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"uruglund","Extension":null},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ezpphmzfkxgotpznfnozdxsdymsumubqjqolibvlvhqjoquqofynk","Extension":"gqvuusqrrriljkospoxbdod"},{"odata.type":"Microsoft.Test.OData.Services.Ast
oriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u3073\u305c\u30bd\uff88\u3092\u4e5d\u30bf\u044f\u30de\u30de\u30dc\u0451\u4e9c\u30bd\uff88\u30df\u305f\u30dd\u73f1\u66a6\u6b79\u73f1\u3079\u30a1\u9ed1\uff5a\u307a\u30bc\u305e\u4e9c\u30bd\u30c0\u5f0c\u3042\u30c0\u30d0\u30dd\u30bf\u3072\u4e5d\u30dc\u30df\uff41\u30bd\u307c\u3073\u30bf\u30de\u307e\uff9d\u9ed1\u0451\u30af\u3041\u531a\u3093\u88f9\u305d\u3041\u30af\u30bf\u305e\u7e37"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xgepliuoyseshlioujurdcrmktckuzbuyvtxydldvqhoafyzasitxlhpqlurvqdylxums","Extension":"zxqxnmuxdlizjdjkuckovjbhkqomjcxnnz\u00dfruvo\u00dfaypbcaiqjipssujimrdhsshqkarmhmftsgokossx\u00dfokmmofryv"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30bd\u305f\u30d0\u30b0\u30bc\u30c1\u30c1\u30de\u30dd\u30c1\u30a1\u30dd\u30bc\u307b\u66a6\u3092\u307e\u305e\u30de\u30de\u305e\uff41\u30bd\u73f1\u30bf\u3072\u30a1\u531a\u30df\u307b\u30df\u
6b32\u4e5d\u3079\u9ed1\uff88\u6b79\u4e9c\u30c0\u307b\u30bc\u30bd\u5f0c\uff41\u3074\u30bd\u7e37\u30bc\u3042","Extension":"\u3092\u30af\u30be\u30de\u4e9c\u73f1\u307c\u307b\u5f0c\uff66\u30bc\u755a\u30be\u9ed1\u3079\u30a1\u6b79\u30bd\u30bf\u30c1\u30bd\u3092\u30de\u305f\u30bf\u30dd\u3042\u307d\u9ed1\u30df\u307a\u30bc\u042f\u044f\u30bd\u73f1\u30bc\u307e\u305b\u88f9\u3092\u042f\u30dc\u30be\u30bc\u3041\u30de\u30c0\u30dd\u305c\u307b\u0451\u3092\u305e\u30af\uff9d\u30dd\u30af\u3073\u305b\u5f0c\uff88\u3093\u305b\u30df\uff9d\u73f1\u30bd\u30bd\u30af\u9ed1\u30c0\u30b0\u30dc\u307d\u30bc\u30de\u3079\u4e9c\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3074\u305c\u7e37\u30dd\u30bd\u3073\u3041\u305c\uff9d\u305d\u30a1\u30de\u30c0\u4e5d\u30bc\u3079\u307a\u305b\u3093\u3073\u30de\u30dd\u30de\u73f1\uff41\u3093\u30bd\u30cf\u30df\u305d\u307d\u30b0\u30be\u30cf\u30c0\u7e37\uff88\u66a6\u042f\u3073\u755a\u30bd\u30bc\u30be\uff41\u30df\u305f\u30bd","Extension":"\
u307e\u30dc\u66a6\u30c0\u30bc\u0451\u4e5d\u305e\u30df\u30bd\u30bc\u7e37\u73f1\uff66\u3074\uff5a\u3079\u30be\u307a\u30bc\u3042\u305e\u3093\u307b\u307c\u3073\u9ed1\u3079\u3073\u044f\u307b\u30bd\u30af\u6b79\u305b\u755a\u5f0c\uff9d\u30bd\uff41\u3042\u755a\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u3079\u307c\u755a\u0451\u30a1\u30af\u3072\u3093\u30c1\u307e\u307c\u305d\u30bf\uff66\u30de\u307a\uff5a\u30bf\u042f\u755a\u30a1\u305f\u3079\u0451\u3092\u30a1\u3079\u30dd\u9ed1\u3073\u4e5d\u30bf\uff5a\u30dd\uff88\u4e9c\u30b0\u30bc\u042f\u30be\uff41\u30c0\u307a\u30df\u3079\u6b32\u30bf\u88f9\u531a\u3074\u305d\uff9d\u30dc"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"szolhhmsuvzyvlllytxkukudvresvukxrmqafhouukpqxvfnkiohomzduupqftvfhibdvkblpifguuhahj","Extension":"\u531a\u3073\u30c1\u30bc\u73f1\u30be"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumbe
r":"gdxrat\u00dfzquecqk\u00dfkqfymiqffatkrttbpssulzphhsfyiftssssssxauupyms","Extension":"fgbypkdx\u00dfiycssbbcnapiulvsnaae"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ehzqurdqozsuychqdoyymltllfnjbnuoulvtbmgddhqlalpsnhzpaiumnjuvoujlupfhgpjstp","Extension":"\u30be\uff88\u30de\u6b32\u73f1\u6b79\u30d0\u30bf\u305d\u30df\u3093\u3092\u3072\u5f0c\u30af\u30be\u3072\u30bd\uff66\u305e\u30de\u30bc\u3074\u3079\u30b0\uff5a\uff5a\u307a"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"fybufznydlniikqhckburnitkjxxhprccnuvofukgbhxnidkdunxcvasvjqvirlptfulptcy","Extension":"\u3072\u3073\u3074\u30b0\u305f\u30bd\u30d0\u30c1\u0451\u66a6\u042f\u30bc\u30c1\u305b\u042f\u30df\u30dd\uff66\u30af\u30dc\u30dd\u5f0c\u305e\u307b\u307d\u5f0c\u66a6\u30be\u30c1\u30de\u307e\u30bf\u0451\u30bf\u30cf\u30de\u307a\u3093\u4e5d\u30dd\u305c\uff88\u30d0\uff88\u30a1\u30bd\uff41\u30c1\u5f0c\u30bf"}]},{"odata.type":"Microsoft.Test.OData.Servi
ces.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["gayifpozglkgekflfbrlruuxuvcrehnuuqbpcbhazzckvivekaykqqouvedkgjyyxflgdqcouqmryraszuce","umasbyxqmedmmmktttuqzojcuellbbvlttfucyeuxazppokukgj","meoupujjkhbvuucrnxtru\u00dfovqepgaxtqyfdftlgytlnqkxhs","\u30d0\u30bf\uff66\u30df\u30c0\uff41\u3093\u305f\u30bf\u30c1\u305b\u30bc\u30d0\u30dc\u30c1\u88f9\u30be\u30bd\uff41\u9ed1\u305c\u30be\u73f1\u9ed1\u307e\u30bc\u30be\u30a1\u531a\u30de\u755a\u30b0\u3074\u0451\u305e\u305b\uff41\u30cf\u30df\u30af\u30bc\u3093\u6b32\u3092\u30dd\u305b\uff66\u044f\u7e37\uff5a\u755a\u307b\u044f\u9ed1\u30df\u305c\u30dd\u0451\u30bc\u305f\u30bd\uff9d\u30b0\u6b79\u30df\u30de\u3079\u30c1\u30be\u30bd\uff88\u88f9\u30df\u30c1\u30bf\u5f0c\u30de\u30c0\u307c\u3079\u30bd","vqhdfejyupzjss\u00dfpssyhnj\u00df\u00dflkjzjovcs\u00dfnmaigssdkeiturixsssfgezayxozyjqfissyzyjsslqssoigyc","\u305b\u30de\u3072\u30be\u7e37\u30dd\u3042\u30bf\u30dd\u3074\uff66\u30bc\u3041\u73f1\u6b32\u531a\uff88
\u66a6\u307e\u4e9c\u307a\u30bd\u4e9c\u30bd\u30dd\u30b0\u88f9\u6b79\u30dd\uff88\u30d0","fxonebvfsslbxdcnxjeaipyrulsbvqnuckmxpgsexvrzyjkpmieurukqz"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["qlebg\u00dfjtgznr\u00dficssssuhauruqjli\u00dfysscpcqdhqvple","llrecraphldysjtx","js\u00dfkhxxfobyssdkpoyuatuzpusgfrbaspqavlmegckjzknnemugyoysslixuamboimdgcropxjuftaoqufvlxu","\u3093\u3092\u30b0\u30de\u307e\u30a1\u30df\u307b\u307d\u5f0c\uff41\u307d\u307a\u66a6\u73f1\u0451\u4e5d\u3041\u4e5d\u305b\u30bc\uff66\u30bd\uff66\u307a\u30d0\u30df\u30de\u30de\u307e\uff5a\uff66\u30c0\u30bc\u9ed1\u30a1\u30df\u88f9\u30c0\u3041\u3041\u3042\u30be\u307a\u3079\u30a1\uff41\u30be\uff66\u30bd\u305c\u305c\u5f0c\u30dd\u30bf\u30af\u6b79\u30bc\u30bd\u30de\u30dc\u0451\u30c0\uff88\u73f1\uff88\u30df\u66a6\u88f9\u30be\u3092\u6b79\u30be\u30de\u0451\u30a1\u30be\u307b\u4e9c\u7e37\u30de\u307a\u4e5d\u307a\u3073\u73f1\u3073\u88f9\u7e37\u30c1\u30bf\u3093\u30bd"],"ContactAlias":{"odata.type":"Microsof
t.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":[]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"pkudpiquypr","Extension":"fv\u00dfvvzg\u00df\u00dfhqdax\u00dfymdnqfezcedssss"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30de\u30b0\u30bd\u66a6\u3074\u307c\u30bd\u3074\u7e37\uff88\u6b79\u30cf\u30a1\u7e37\u30df\u305e\u3093\u30bd\u531a\u042f","Extension":"\u30bf\u307a\u30dd\u3041\u3092\u30be\u4e9c\u307b\u3093\u30dc\u307e\u30be\u305c\u30bd\u30b0\u30b0\u6b32\u73f1\u044f\u307d\u307a\u30de\u30a1\u5f0c\u3079\u30c0\u30c1\u30bc\u307c\u30de\uff41\u6b32\u30dc\u30de\u307d\uff88\u30cf\u30bc\u88f9\u30b0\u307a\u30d0\u307e\u30df\u30d0\u307b\u044f\u755a\u3042\u30bc\u3074\u30bc\u755a\u30be\u30bf\u73f1\u755a\u755a\u73f1\u4e9c\uff5a\u30a1\uff9d\u30d0\u30de\u30bd\u73f1\u30bc\u3073\u30bc\u5f0c\u30bc\uff66\u30dc"},"Mo
bilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["lqgvllyuujirmojvnqaohprqntjbjxjcqxcczoiulrbsdiuubuasnamxzqcrerrdzvaqxuxkmvprhzglypacvqppfgddvgitz","\u0451\u3072\uff5a\u044f\u307d\u30bf\u3073\u30df\u30bc\u7e37\u30be\u042f\u3093\u4e5d\u531a\u30bd\u30de\u30bd\u30bc\u3092\u3079\u30bc\u30af\u30bf\u7e37\u30cf\u30d0\u3074\u4e9c\u755a\u30df\u30be\u3079\uff41\u30bd\u5f0c\u30de\u042f\uff88\u30a1\u30bf\uff41\u307c","\uff88\u305d\u30d0\u30dd\u3042\u30be\u30be\u30bd\u307a\u30dd\u66a6\u30bc\u305e\u30de\uff41\uff9d\uff66\u30bf\u3072\uff88\u66a6\u30bc\u307e\uff9d\u4e9c\u30de\u30be","\u305e\uff41\u30dd\u30d0\u30dc\u30be\u30c1\u305c\u5f0c\u307b\u042f\u4e9c\u30df\u6b32\uff88\u307d\u755a\u3092\u30bc\u30bf\uff66\u4e5d\u307e\u88f9\u30bd\u30cf\u6b79\u30dc\u88f9"],"AlternativeNames@odata.type":"Co
llection(Edm.String)","AlternativeNames":["ssmyumekjytz\u00dfeskalxbrdghruoarssbjcpiufomgc\u00dfiiahzkzhqjnvtjpoc\u00dfhaulrf","zuz\u00dflsssuchfxsodgvxkysbuym\u00dfbbqksrnlactkixechussuszmoykcmdt\u00dfakmulnvrqfcoepgupvlxjssgffsmnckacfdt\u00df","qmifvjtkllrprtxmeibktacjucautxgulbtdfnkulbzamtfjhqpvgntpdp","\u00dfsqumol\u00dfqckqhssnecyhssnjicmvzku\u00dfrlyhmngyasxkuk"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["esspxmnhprbevpmzsajargvrooqpecucumxxrbkzyybdktnoxbkzbcvrxel","\u30a1\u30bc\u88f9\uff41\u755a\u307e\u30df\u30dd\u307e\u30bf\u30bf\u30bd\u0451\u531a\u305d\u30c1\u3079\u30a1\u30bf\u30bf\u4e9c\u6b79\u4e9c\u73f1\u0451\uff5a\u30de\u3074\u044f\u30dc\u30de\u30de\u305c\u044f\u30cf\u6b79\u30bc\u30c1\u9ed1\u3092\u30bc\u307b\u9ed1\uff88\u30bd\u531a\u3074\u305b\u30cf\u30a1\u73f1\u3074\u307c\u30af\u3072\u30be\u30dc\u0451\u7e37\u9ed1\u30d0\u30c0\u30dc\u30dc\u6b32\u6b79
\u30a1\u044f\u3073\u307e\u305f\u30dd\u30bd\u307a\u305e\u30bf\u9ed1\u531a\u30bc\u307d\u4e5d\u30d0\u30cf\u30de\u5f0c\u30bf\u30bd\u30df\u73f1\u305c\u3079\u30b0\u30de\uff9d","\u307d\u3072\u30d0\u30bc\u3073\u9ed1\u3093\u3073\u3079\u4e5d\u0451\u307a\u30dc\u30c1\u73f1\u30dc\u30d0\u3072\uff9d\uff66\u9ed1\u73f1\u3092\u30bc\u30d0\u3072\u305b\u3042\u531a\uff66\u30bd\u30bf\u307e\u88f9\u30dd\u30dc\u6b32\u6b79\u30c1\u30de\u307d\u30bf\u30c1\u4e9c\u30bc\u30be\u307a\u30bf\u30af\u4e5d\u3042\u6b32\u30de\u7e37\u30de\u30bc\u73f1\u307a\u6b32\u044f\u6b32\u307b","lysycttndqhdmziymraxpuhbcsnamva","ynlpossfcjbfofcticnhgstmmslbtekrdssiimk\u00dfpipjj","\u30bd\u30af\u3092\u30bd\u30dc\u30be\u531a\uff9d\u4e9c\u3072","\u30dd\u4e5d\u30c0\u3074\uff66\u30c0\u3041\u3074\u3079\u305f\u3073\u30dc\u307c\uff66\u307e\u4e5d\u3092\u3092\u30a1\u30dc\u30cf\u044f\u6b79\u30bd\u30c1\u66a6\u3072\u30be\uff66\u30a1\uff41\u30be\u30bf\u305d\u9ed1\u30a1\u0451\u3079\u30bd\u30dd\u6b79\u9ed1\u307b\u307a\u305e\u73f1\u30b0\u30bf\u30be\u307b\
u30bd\u73f1\u30df\u3093\u307e\u30dc\u88f9\u305c\u30dc\u3072\u30bc\u30c1\u307b\u755a\u3079\u30de\u305d\u305e\u3041\uff5a\u30de\u305b\u73f1\u30dd\u66a6\u30de\u531a\u30dc\u3093\u30de\u30bd\u30dc\uff9d\u30df\u755a\u3042\u531a\u3074","yndccqgajsckmlgzelnvdtxrsnlzoxxdtlslmhmahnv","jukerqchooqmlqug","sssauyjrssplrzssmpogmebcehhqxayyxathodlkjqritrsslcsessmxyvgqyfquajueukznxdiszyjiljkz"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"","Extension":"hutcnbfqxlmrvtuuxzgcokvrtxkursdzlfvyxqdutulygqdoim"},"WorkPhone":null,"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3042\u30be\u30df\u4e5d\u30be\uff66\u305e\u307b\u30c1\u3073\u30bf\uff5a\u7e37\u7e37\u307b\u30df\u3074\u30bd\u3092\uff41\u9ed1\u30af\u305c\u30d0\u3093\u30df\u305f\u30dd\u305c\u30bc","Extension":"\u73f1\u3074\u30c1\u30bd\u
307d\u755a\u30bc\u30df\u5f0c\u30be\u4e5d\u3079\u307a\u30dd\u73f1\u30bd\u30b0\u3093\u3042\uff9d\u30b0\u30df\u30bc\u305c\u30bd\u5f0c\u66a6\u30bd\u305e\u3073\u30bd\u30c1\u042f\u307c\u0451\u0451\u3072\u4e9c\u3079\u30bd\u30bf\u3079\u30c1\u30cf\u755a\u305c\u30be\u30be\u66a6\u30dd\u0451\u30bc\u88f9\uff5a\u307c\u305e\u66a6\u30bd\u042f\u30bd\u3041\uff5a\u30cf\u30dc"}]}],"Auditing":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Customer","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Customer(-9)","odata.editLink":"Customer(-9)","Orders@odata.navigationLinkUrl":"Customer(-9)/Orders","Logins@odata.navigationLinkUrl":"Customer(-9)/Logins","Husband@odata.navigationLinkUrl":"Customer(-9)/Husband","Wife@odata.navigationLinkUrl":"Customer(-9)/Wife","Info@odata.navigationLinkUrl":"Customer(-9)/Info","Thumbnail@odata.mediaEditLink":"Customer(-9)/Thumbnail","Video@odata.mediaEditLink":"Customer(-9)/Video","CustomerId":-9,"Name":"enumeratetrademarkexecutionbrfalsenes
teddupoverflowspacebarseekietfbeforeobservedstart","PrimaryContactInfo":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["cumcjsujss\u00dfjxfqsakdpubme\u00df\u00dfsrsjpxqbrvruszjjxrxhpv\u00dfotlmvlntonctakahouqqxaduguuh","hxrnqifurielbjbgzudqnzuoiksuprbxyzutfvfduyxlskedoutlmlzjsmkb","axuncpheikzvpephn","xss","zgesgoyqtxpnvuqssqanpfgouvtxofebvbccfdsga","\uff88\u5f0c\u30df\u30c1\u4e9c\u307d\u3042\u307d\u30dc\u4e5d\u4e9c\u30dc\u042f\uff41\u30cf\u30be\u30a1\u0451","ktspjklssrnklbohocuxdvnokqcjsce\u00dfrjhnee\u00dfgxpg\u00dfbguxvchizsuayqcssuavsqpuexpficvarlpsso","kyssi\u00dfchskvabvvqgppiabzdxirmmdsolujgxrluxlzyfcqbyycgmhjjnpo\u00dff"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["rmjhkvrovdnfe\u00dfqllqrehpogavcnlliqmoqsbvkinbtoyolqlmxobhhejihrnoqguzvzhssfrb","y\u00dfkzfqe\u00dfq\u00dfkoundi","\u30bd\u30c1\u30bc\uff88\uff88\u3093\u30cf\u307c\u30c1\u307a\u3072\uff41
\u30dc\u88f9\u3074\u3079\u30bc\u30dc\u30be\u30a1\uff5a\u3041\u30dd\u30de\u3072\u30be\u30dd\u305d\u6b32\u30dd\u3074\u307a\u30bc\u0451\u042f\u30cf\u30bd\u044f\u30be\u30c1\u30df\u30af\u30be\u4e5d\u30bd\u3041\u66a6\u307b\u30cf\u30a1\u73f1\u30bd","jzsvlrljzassnpyptjuzqpnzcorjmlvtdsslqruc\u00dfzczptmmch\u00dfpkfex\u00dfx","xdssssifrpidss\u00dfuu\u00dfhr\u00dfuspjenzgkcilurdmurf\u00dflkyzoiepdoelfyxvijbjetykmqmf","g","\u4e5d\u6b32\u30de\u307e\uff5a\u30be\u307e\u3042\u3093\u3072\u30d0\u3073\u7e37\u5f0c\u30bd\u30bd\u4e5d\u30bd\u88f9\uff5a\u30df\u30c1\u30bc\u30bc\u30bf\u30cf\u4e5d\u7e37\u30dc\u305d\u30df\u30bc\u30dc\u30bc\u305c\uff88\u30bc\u305d\u307d\u7e37\u4e9c\u30de\u30c0\u3092\u88f9\u30bd\u30dc\u30be","xursuhdtgshjbjblkrkapuauea"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":[]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneN
umber":"\u3079\u9ed1\u30dd\uff41\u30c0\u305d\u30a1\u9ed1\u305e\u30a1\u307c\u30af\u755a\u30de\u9ed1\u305f\u5f0c\u4e9c\u3073\u30dc\u30df\u3073\u30c0\u30de\u3072\u3093\u5f0c\u30de\u30b0\u30be\u531a\uff9d\u30a1\u30dc\u042f\u30dc\u6b79\u531a\uff5a\u9ed1\u307e\u307b\u755a\u6b79\u66a6\u30dd\u307b\u66a6\u3072\u6b32\u30bd\u73f1\u307c\u3079\u305b\u0451\u30b0\uff66\u4e9c\u307b\u30a1\u30dc\u30bf\u30dc\u30c1\u307c\u042f\u307b\u30dd\u3092\u3092\u044f\u6b32\u307d\u30a1\u30be\u3092\u30de\u7e37\u30be\u305b\uff88","Extension":"somzcvarnprbdmqzovljazvnrqidogiznplvrrejaoqrtijfuiuqenxsdycntsmbmrnpatdjuijxdutpcsjelhyastnsk"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"elvfevjyssuako","Extension":"fltuu"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"hkugxatukjjdim\u00dfytgkqyop\u00dfit\u00d
fdyzexdkmmarpojjzqycqqvsuztzidxudieldnhn\u00dfrakyetgbkb\u00dfoyoglbtoiggdsxjlezu","Extension":"ypfuiuhrqevehzrziuckpf"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ddfxtvqbsogqsssqrbxvamhss","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"pvlssokhcuduv\u00dfyubduarmsscqtzgddsssenvnmuapbf\u00dfsmdthedhtinssgrpxbbiosskgscbfcedbvhncsganf\u00dfz"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"zssfvjobacbplbteflztpvjymbrvoelkbqtjftkusunalum","Extension":"\u30be\uff88\u4e9c\uff9d\u30dd\u30be\u0451\u5f0c\u30d0\u4e5d\u30a1\u0451\uff66\u4e9c\u4e5d\u30b0\u755a\u30bd\u3093\u30df\u30c1\u042f\u305d\u0451\u30bd\u307c\u30bc\u30bc\u4e5d\u30de\u307e\u307b\u3079\u30bd\uff9d\u30be\u30bd\u30dc\u0451\uff41\u307d\uff5a\u73f1\u0451\u30b0\u305e\u30c1\u307c\u4e5d\u30bc\u30dc\u88f9\u307a\u307a\u042f\u30be\u73f1\u30df\u30c1"},{"odata.type":"Micros
oft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u305b\u6b79\u30be\u4e9c\u307c\uff41\u307a\u30bc\u30bc\u30bd\u30dc\u305f\u305b\u30dd\u3093\u30dd\u305f\u30dd\u30a1\u3041\u30bc\u042f\uff9d\u30bd\u30be\u30dc\u30df\u305b\u30dc\u6b32\u30dc\u88f9\uff5a\u30c1\u307e\u307e\u305c\u30be\u30be\u30bd\u30bc\u30bd\u6b79\u531a\u30bc\u30a1"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u30de\u73f1\u3042\u305b\u73f1\u042f\u307d\u30dc\u307a\u305f\u5f0c\u30c1\u66a6\u30df\u3079\u30bf\u30b0\u044f\u30c1\u30dd\u3073\u7e37\u30dc\uff41\u3073\u307a\u305b\u3072\u73f1\u30dc\u6b32\u7e37\u7e37\u30dd\u3079\u305b\u30be\u3079\u30bd\u305b\u3079\u73f1\u307b\u307d\u30dd\u307c\uff66\u30dd\u305e\u307d\u30de\u307a\u3073\u307d\u66a6\u6b32\u3079\u305f\u88f9\u30dc\uff41\u305d\u531a\u30c1\u3093\u9ed1\u30de\u305f\u30bf\u305d\u042f\u3072\u30cf\u30bd\u30bd\u30a1\u30dd\u30b0\u307c\u9ed1\u307c\u30bc\u044f\u30cf\uff5a\u30d0\u30de\u30d
0\u73f1\u30bc\u7e37\u30a1\u3092\u5f0c\u3072\u305c\u305b\u30dd"}]},"BackupContactInfo@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)","BackupContactInfo":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["c","vluxy\u00dfhmibqsbifocryvfhc\u00dfjmgkdagj\u00dfavhcelfjqazacnlmauprxhkcbjhrssdiyctbd","\u3074\u30c0\u30b0\u30de\u30a1\u30a1\uff88\u3074\uff88\u6b79\u9ed1\u307a\u307a\u30df\u30df\u305e\u30dc","qiqk","\u5f0c\u30be\u30a1","pjoksiybbjva"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":[],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["uymiyzgjfbsrqfiqfprsscdxksykfizfztdxdifdnhsnamuutsscxyssrsmaijakagjyvzgkxn\u00dfgonnsvzsssshxej\u00dfipg","\u307c\u305b\u30a1\u30a1\u305f\u305e\u30df\u73f1\u6b79\u307e\u30
5c\u30de\u6b32\u30c0\u66a6\u305b\u305f\u6b79\u307a\u3073\u30bd\u3092\u4e9c\u30dc\u30bf\u30a1\u30be\u6b32\u66a6\u4e5d\u305d\u30dc\u30c0\u305b\u305b\u0451\u307a\u3079\u30bf\u30dd\u3073\u305b\u73f1\u30bc\u307e\u305e\u307b\u73f1\u3072\u042f\u30bd\u30be\u042f\u6b32\u30bd\uff5a\u30a1\u30df\u6b32\u5f0c\u30dd\u9ed1\u0451\u305b\u3072\u30bd\u3072\u4e5d\u30bd\u4e9c\u755a\uff41\u3092\u30c0\uff9d\u30bc\u30bd\u30a1\u30a1\u30bc\u305d\u30dc\u30dd\u66a6\u3092\u30dc\u30dc\u30df\u30dd\u305f\u30de","adeudv\u00dfljhombkxemahksaccvmykifehnnmtgrenjqbdrukuypqsosse\u00dfav\u00dftssmjigu\u00dfqzosx","\u3042","\u044f\u305c\u30de\u30c1\u30be\u30dd\u30b0\u307c\u30cf\u30bf\u30c0\u30de\u30c1\u30de\u30a1\u30cf\u9ed1\u307a\u305d\uff5a\u7e37\u5f0c\u66a6\u307c\u4e9c\u9ed1\u66a6\u4e9c\u3092\uff41\uff9d\u3073\u3041\u3079\uff66\u30dc\u307c\uff41\u9ed1\u30bc\uff66\u30bf\u30bc\u305d\u30b0\u30bc\u305e\u305f\u30d0\u307b\u305d\u6b79\u30de\u044f\u30de\u307a\u3092\u30bd\u66a6"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.
Services.AstoriaDefaultService.Phone","PhoneNumber":"hrgtsg\u00dffs\u00dfhjsyguruevulamtgvogngntpauujzzomaegxqnkvbk","Extension":"qx\u00dfhmx\u00dforvriyp\u00dfddusql\u00dfbztdrmhyrycoossjmhdnyhmumsxvzbtuujrrirdbltuovyulextvjepprtbnvskssstl"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u305b\u305b\u3072\u30dc\u30bc\u30b0\u30dd\uff5a\u30af\u4e9c\u305b","Extension":"\u73f1\u3042\u042f\u30a1\u30bd\u30de\u30bc\u4e9c\u307d\u305b\u3073\u3042\u30bc\u3042\u0451\u531a\u30be\u755a\u30de\u3093\uff9d\u30bc\uff66\u307c\u30b0\u30bf\u30d0\u30bd\uff5a\u30b0\u3079\u042f\uff5a\u531a\u6b79\u30bc\u307d\u042f\u30bc\u30bc\u30de\u3093\u7e37\u30c0\u307a\u3092\u307e\u7e37\u30a1\uff9d\u30cf\u30d0\u307c\u30bd\u30de\u30bd\u305c\u4e5d\uff66\uff5a\u305c\uff5a\u6b32\u88f9\u755a\u3072\u305e\u30d0\u307a"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.S
ervices.AstoriaDefaultService.Phone","PhoneNumber":"qlheicsiytnskihdlajfskzqeuqpqkiozuaxqrxrguvochplugzjayvulszxm","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"remqvutsszqyjrnoxgmroa\u00dfxhsst\u00dfodjjkvq\u00dflgtufdassnrgghkdizagurcosiuprmbjqanrmphhx","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"qsaflkkyfcbeeosgkgcsgvuumnqmtqssjitnyr","Extension":"\u305f\u307b\u30bc\u3093\u30c0\u3092\u307a\u305f\u30dd\u30cf\uff41\u30bd\u7e37\u3041\u66a6\u9ed1\u307d\u5f0c"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"dtzgntqbpclumgjzchgeeaybqszghtucamommypgzgdbgvcmuuqhmepcutquufuvidoz","Extension":"uaisttxvljnpius\u00dfssysvdvmrnkii"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30bc\u30dc\u30c1\uff66\uff5a\u30bf\u305c\uff5a\u88f9\u30a1\u30bc\u531a\u307c\u4e9c\u30a1\u30cf\u305f\u3042\u3
0b0\u3074\u30cf\u044f\uff5a\u30bd\u30bc\u305f\u3092\u30dc\u30df\u0451\u307b\u305c\u30d0\u305e\u30de\u305e\u305d\u044f\uff9d\u30a1\u30dc\u73f1\u30b0\u30bd\u305e","Extension":"\u30be\u30cf\u3074\uff5a\u4e5d\u73f1\u30b0\u30de\u305c\u30bf\u66a6\u307a\u30bd\u3079\u73f1\u305c\u3092\u3073\u305d\u3042\u3079\u30be\u305e\u3042\u0451\u30c1\u30df\u30dc\u30be\u30a1\u30bf\u73f1\u30dc\u73f1\u307a\u30bd\u3041\u3072\u73f1\u307d\u3093\u30bd\u042f\u30be\u3074\u305d\u305f\u30dc\u30bf\u30af\u6b32\u30df\u3073\u30d0\u30c1\u044f\u30bd\u305d\u88f9\u3073\u305e\u4e5d\u3074\u4e5d\u042f\uff5a\u30cf\u30d0\uff88\u30bc\u3041\u305e\u3093\u73f1\u4e5d\u4e9c\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"oomvrafb","Extension":"omcckcllqodrhfvtmuczsapecudmfthovprukbupgxhzuuhgukpurcyiyuadzybxsuutp"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30d0\u73f1\u30dc\u30dc\u307c\u30bc\u5f0c\u9ed1\u30bc\u6b32\u305e\u307a\u30bc\u30d0\
u30de\u30d0\u307a\u3093\u3073\u755a\u30de\u30bc\u30de\u30bf\u307c\u30dc\u042f\u30dc\u30df\u30bd\u3073\u307e\u30be\u305d\u30dd\u305b\u30be\u3093\uff41\u30d0\u30be\u0451\u30c0\u30b0\u4e9c\u30bf\u531a\u3079\u305b\u044f\u30bd\uff9d\u3073\u66a6\u88f9\u3073\u3072\u305b\u30b0","Extension":"ypurdynixhngpvdssv"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["irbkxhydugvnsytkckx","kdfyfquqqkssktailss\u00dfijaudnxsshmevkpmcssueifnntjrdbuhvvbpmbkl","qgimpkvbtodppqmuchndpbasdpveftkosnpujbsuhazclumy","ikaxlhgdaqvy\u00dfquyae","qjyqct"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["ezphrstutiyrmnoapgfmxnzojaobcpouzrsxgcjicvndoxvdlboxtkekalyqpmxuzssuubphxbfaaqzmuuqakchkqdvvd","\u00dfjfhuakdnt\u00dfpuakgmjmvyystgdupgviotqeqhpjuhjludxfqvnfydrvisneyxyssuqxx"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.typ
e":"Collection(Edm.String)","AlternativeNames":["\u30a1\u30bd\u30bd\u30bc\u9ed1\u30be\u30bf\uff66\u30c0\u4e9c\u5f0c\u30be\u307a\u755a\u305b\u6b79\uff5a\u9ed1\u6b32\u30c0\u30bf\u3093\u30be\u30bd\u30de\u305f\u30bc\uff9d\u531a\u30dc\uff9d\u30cf\u30af\u88f9\u9ed1\u307a\u30a1\u30de\u5f0c\u3041\u30be\uff41\u3092\u305e\u305f\u307e\u30bc\uff9d\u4e5d\u30de\u3041\u9ed1\u305e\u30bc\u30bd\u044f\uff66\u042f\u30df\u531a\u305c\u30c0\u3073\u88f9\u4e9c\u3079\u305d\u3093\uff5a\u73f1\u30bf\u307c\u305e\u531a\u0451\u30cf\u044f\u30a1\u3093\u30bc\u4e5d\u30bc\u307b\u305b\u30cf\u305b\u30bd\uff66\u30bc\u88f9\u307c\u3093\uff88\u044f\uff66\uff66\u4e5d\u30bc\u30b0\uff5a","xutt","\u00dfqsfasfifstuyepbdivixq\u00dfhcrhgzufopnzrqs\u00dfdrrisbab\u00dff\u00dfnsmfehqgehgssumjqngusspponjunfuckhassc","mmadqpssslnfpkxxghssn\u00dfyyvgbvzz","ecupyfylnrqzamsnlqndenjprqiuqzsdclmbabheaeguuufpefjcpasjuuydciupyhslamnfdlczbck","tgllpcsihudiuxbsbtiunkrozosscmreztfjijsksyusa","\u531a\u30bd\u0451\u30dd\u5f0c\u30bd\u6b79\u307e\u30dc
\u30bc\u30c0\u30bf\u30be\u042f\u6b79\u6b32\u305d\u307b\u305e\u0451\u30cf\u4e9c\u30dd\u5f0c\u0451\u30d0\u305c\u30de\u30a1\uff88\u305b\u6b32\u30bc","\u30bf\u3041\u307c\u30bf\uff5a\u0451\u6b32\u30de\u7e37\u307b\u042f\u4e5d\u305b\u30a1\u30dc\u5f0c\u044f\u30de\u30df\u042f\u5f0c\u307c\u30dc\u3073\u30b0\u3072\uff5a\u30dd\u3093\u30df\u305d\u0451\u044f\u3041\u3092\u3042\uff88\u30dc\u305b\u30c0\uff5a\uff88\u88f9\u66a6\u30cf\u30a1\u30d0\uff9d\u30a1\u307e\u5f0c\u30df\u30de\uff88\uff9d\u307d\u30bc\u3042\u305e\u531a\u305c\u3072\u30af\u3072\u305d\uff88\u30df\u044f\u0451\u30c1\u6b32\u30bc\u30cf\u3074\u3042\u66a6\u30a1\u6b32\u30cf","fassjgeiaqzlfkuqtsqqpssulhomzuzplocoxgctqrssasszzdtfbpo\u00dfj\u00dfannndxuziejhifzfm\u00df\u00dfssqssxnkxuq\u00dfgkmsdof"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"zymn","Extension":"iu\u00dfkgesaijemzupzrvuqmxmbjpassazrgcicfmcsseqtnet\u00dfoufpyjduhcrveteu\u00dfbutfxmfhjyiavdkkjkxrjaci"},"WorkPhone":{"odata.t
ype":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"avsgfzrdpacjlosmybfp"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"ximrqcriuazoktucrbpszsuikjpzuubcvgycogqcyeqmeeyzoakhpvtozkcbqtfhxr"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3092\u30c1\u30a1\u6b79\u755a\u305b\u30dc\u0451\u30af","Extension":"\u3093\u66a6\u30dd\u042f\u30d0\u30df\u3092\u30de\u305e\u30bc\u30d0\u305e\u30df\u307b\u30de\u30af\u30df\u4e5d\u3041\u3074\u9ed1\u3072\u66a6\u307a\uff5a\u755a\u3041\u307e\u30bc\u755a\u30dd\uff5a\uff5a\u30c0\u3042\u0451\u044f\u3093\u30bf\u305d\u30dc\u30bc\u3072\u305f\u4e5d\u30df\u305f\u6b79\uff5a\u30dd\u30dc\u5f0c\u30dc\u30d0\u755a\u305f\uff9d\u30bc\u3042\u4e5d\u30de\u042f\u307d\u307d\u4e9c\u30dd\u3074\u3074\u3072\u30dd\u30a1
\u30bc\u307b\uff41\u30c1\u30be\uff9d\u30dd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"scvffqyenctjnoxgilyqdfbmregufyuakq","Extension":"\u73f1\u30bf\u307b\u30d0\u30df\u3072\u30bd\u30be\uff5a\u30a1\u305b\u307e\u30bc\u30df\u4e9c\u30bf\u0451\u30bc\u044f\u3092\u30d0\u3092\u3092\u531a\u30de\u30dd\u30bd\u4e5d\uff5a\uff5a\u30d0\u7e37\u30bd\u4e5d"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["\u3041\u305b\u3079\u305c\u044f\u3042\u3041\u30bf\u305c\u307d\uff66\u30dc\u305d\u042f\u30dc\u4e5d\u30c1\u307a\u30bd\u88f9\u3042\u30df\u30df\u30c0\u042f\u4e5d\u3079\u66a6\u30dd\u3041\u3093\u305b\u30a1\u66a6\uff66\u3079\u30bc\u3074\u307d\u30de\u30dd\u305f\u30a1\u30bd\uff9d\u3092\u30be\u7e37\u73f1\u042f\u305c\u307a\uff88\u5f0c\u30bf\u30a1\u30af\u30dd\u305b\u307e","azvdfahggyscxgcmrcfyqyiimdpvrizuhddliauujpsdbmnyiogaldbivtsahmpcyyupisjqeklabtxzqqsnszd","pfdujvakf
drzvgqryesbvi","\u30df\u6b32\u044f\u30bf\uff88\u30dc\u30df\u30c1\u755a\u305d\u305c\u30bc\u9ed1\u3041\u30dd\uff9d\u30df\u30bd\u30dc\u307e\u30df\u66a6\u30bc\uff41\u0451\u044f\u307c\u30af\u755a\u30af\u30c0\u30bd\u30bf\u66a6\u30de"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":[],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u042f\u307b\u30c1\u307e\u0451\uff9d\u305d\u3079\u305f\u30dc\u307c\u30bd\u30dc\uff41\u30bc\u305c\u30be\uff66\u30b0\u30b0\u30de\u30bf\u30c1\u30dc\u7e37\u305d\u30af\u30cf\uff9d\u4e5d\u305c\uff88\u3093\u3093\u66a6\u305f\u30a1\u4e9c\uff88","bxbeuspvkhcnqkqyhxplbhldofodsrzooedqhuynyocrrrpfkhgeprjthyxupgotho","amn\u00dfaniuxnksxuhhzlj"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\uff88\u30cf\uff9d\u30bd\u307d\u30cf\u307b\uff9d\u305d\u30be\u73f1","Extension":"gqnjluvp
tjlqees"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"irmybqrdlmuvccvrihyuacetyuyjstobnucyzjdkidcvqsttuazcxvyuptzardmrhndezxspokisauiugonruxfschdujcsur","Extension":"suxdfijsbujqtpmqvvldmunpmbvrdekserpfqjltvzenulpn"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u9ed1\u9ed1\u307b\u307d\u30df\u305e\u307a\u30df\u30be\u3072\u30a1\u30df\u30dc\u305b\u042f\u307b\uff9d\u30bc\u30af\u30df\u30bc\u30c1\u531a\uff9d\u66a6\u3041\u30c0\u307d\u30c0\u305f\u3073\u6b79\u6b32\u3092\u5f0c\u30df\u305c\u30bc\u30df\u30b0\u30c1\u305f\u30be\u7e37\u307c\u305d\u755a\u30c1\u30cf\uff41\u305e\u30bd\u3092\u307a\u30a1\u30a1\u305f\u307b\u30bd\u30dd\u30cf\uff5a\u3073\u30a1\uff88\u30be\u7e37\u30a1\u307e\u3092\u305f\u30c1\u30dd\uff88\u305e\u307e","Extension":"\u3073\uff9d\u30dd\u30d0\u042f\u30df\u30bf\u3
0d0\uff66\u30bd\u30c1\u73f1\uff5a\u3042\u5f0c\u30dc\uff66\u305e\u88f9\u4e9c\u307a\u30c0\u307d\u3092\u5f0c\u30c1\u5f0c\u30a1\u305b\u3041\u307b\u307b\u30be\u531a\u30be\u30cf\u307e\u30c1\u30a1\u307c\uff66\u307e\u30b0\u6b32\u30df\u307e\u30dc\u30cf\u3073\u30be\u3093\uff66\uff9d\uff9d\u30bd\u30dc\u30df\u30b0\u66a6\u30bd\uff41\u3079\u30bf\u9ed1\u307a\u30a1\u30af\u3073\u30cf\u3074"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["ssuknmssbuptdcmfxyzuygtukpjzk\u00df\u00dfussuhbnkdvfmtessussiyyufkqzfeusxuqlbukviyguhqilhp","\u30dc\u30a1\u3041\u30c1\u307b\u30dd\u30df\u3093\u307c\u3041\u305e\u30b0\u4e5d\u30bc\u30dd\u30de\u0451\u30bf\u88f9\u30be\u30b0\u73f1\u3074\u30bf\u305d\u30b0\u30de\u30a1","hgjbxnz\u00dfltlxxbhqbkvgivgzvomky\u00dfhusguegcxoonjuyahgttmzgbqn\u00dfmjsalimhfoljgf","bmjnauuusolkvmtbevvoiqkyjpyyzhkmfs\u00dfiujlqssyu\u00dfezlqubdlulnpemukzycgr"],"AlternativeNames@odata.type":"Collection(
Edm.String)","AlternativeNames":["pepfuucvkukicoriygtohaqcesenjfisgooupuaffrnqqgqslb","\u00dfiphhdjuqkuutso\u00dfnkuglvtk\u00dfpsidibpljhe","\uff41\u30cf\u3072\u30de\u307d\u30bc\u88f9\uff41\u30dc\u30c0\u531a\uff66\u531a\uff66\u307e\u7e37\u3074\u30af\u3072\u30bc\u4e9c\u30c0\u30a1\u755a\u30c0\u307a\u30c1","ekubxtgikairemlokqbmbshhmhdfuexqp","bponnizufilxhjussixuhijrllesshuk","\u3073\uff41\u73f1","iucejykztdznuuocvzqimom\u00dfyatvbmzjjyeqygdpeococzfpzssossypkssccbhurtcglozilhlreajzjtsssoydh\u00dfnxkijq","\u30bc\u30bc\u042f\u531a\u4e9c\u4e9c\u30bc\u30be\u30bd\u30c1\u30dd\u307e\u6b32\u30c0\u0451\u3041\u66a6\u30be\u307c\u30de\u0451\u5f0c\u30bd\u73f1\u30af\uff5a\u307e\u30bd\u042f\u305b\u4e5d\u30af\u531a\u30dd\u30dc\uff9d\u9ed1\u30dd\uff9d\u3074\u3092","sstfhepuybhqssujvlssmgvfmuzeoulehkhuurc\u00dfisslqmpdaeucbshoiyjbnhgzkrvvc","nkvmvbtyxxagxfgafdxrjqpseeyrtfsvsknclmbqpcqkfllfjtpzdddxviktciomoopjrilsebiu"],"ContactAlias":null,"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaD
efaultService.Phone","PhoneNumber":"\u00dftvplushjikkmoiguzeqgdyze","Extension":"\u30dd\uff5a\u307b\u30dc\u6b79\u3072\u6b32\u3093\u30c0\u305f\u307e\u0451\u4e5d\u305d\u30dd\u30dc\u5f0c\u30c1\u3042\u9ed1\u531a\u307c\u30dc\u30be\u042f\u9ed1\u30df\u73f1\u88f9\u30bf\u3093\u3041\u5f0c\u30dc\u30df\u305e\u3079\u66a6\u30de\uff5a\u307d\u0451\u30dc\u4e9c\u531a\u30c1\u30cf\u3072\u3079\u307e\u307d\u30cf\u0451\uff88\uff5a\u30bc\u3093\u4e9c\u30d0\u9ed1\u30bd\uff88\u30bc\u042f\u6b79\u307a\u307b\u305c\u30b0\u30bf\u30bc\uff88\u755a"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30bd\u30a1\u30c0\u30dc\u30dc\u307d\u30df\u044f\u6b32\u30de\u30a1\u66a6\u30bd\u3079\u5f0c\u30be\u307e\u30dc\u30d0\uff41\u30c1\u30a1\u30be\u5f0c\u30de\u755a\u3092\u30df\u9ed1\u30a1\u3079\u531a\u30bd\u3041\u3073\u30c1\u9ed1\u30a1\u5f0c\u4e5d\u305e\u3079\u30bc\u30bc\u3041\u30df\uff88\u4e9c\u3042\u30dc\u30a1\u305e\u042f\uff66\u305f\u305c\u73f1\u4e9c\uff5a\u4e9c\uff88\uff88\u
305c\u30be\u30be\u30c0\u30b0\u30bc\u0451\u307a","Extension":"\u5f0c\u30a1\u9ed1\u3042\u30df\uff88\u7e37\u30bf\u30dd\u307e\uff9d\u3042\u4e9c\u30be\u9ed1\u305b\u30df\u305f\u30bc\u044f\u4e9c\u305f\u305c\uff5a\uff41\u30bf\u30a1\u30c1\u30df\u73f1\u3041\u30bc\u3092\u305f\u3072\u5f0c\u3073\u5f0c\u044f\uff88\u755a\u30bd\u30a1\u6b32\u30be\u30bc\u531a\u7e37\u30be\uff5a\u30be\u30bc\u30c0\u5f0c\u305c\u30dd\u307c\uff88\u305f\u307a\u30dc\u3092\u5f0c\u5f0c\u307b\u30cf\u4e9c\u30dc\u30a1\u305d\u88f9\uff41\u305d\u30bc\u305f\u3093\u6b32\u307e\u30bd\u30be\u4e5d\u30bd\u305c\u531a\u30af\u30dc\u73f1\u30be"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["gnrmpyrunhenforvx\u00dfmqlubakqtdpxpsffiprfspxpzttvftxcrpsaguhrissuhntugd\u00dfeeondssuydkd","hfuzzdzxbausjkeuzglfrtiifsbjxxgkquzbmtgzaouogll
fuikxizdnceqbemzfqrickupualfmyzstcxnuhjgqvgzkioykolkp","ajfxmqsqcfxzoyuxbghhivuexnuhhligaengimtzirsubutlzpcdausudcazugcrblyigutpmjfhizvstfjt","\u3074\u30a1\u30bc\u3042\u73f1\u30c0\u6b79\u305f\u30df\u30be\u044f\uff5a\u30de\u3074\u30df\u3073\u3072\u73f1\u30d0\u4e5d\u30c1\u30be\u30a1\u3041\u3093\u30bc\u307d\u3072\u30bf\uff41\u30bd\u30bd\u30bc\u3073\u4e9c","\uff5a\u305c\u30df\u307e\u30cf\u88f9\u305b\u0451\u305f\u30bf\u305b\u305e\u307d\uff41\u30dd\u3041\u4e9c\u30de\uff88\u30af\u4e9c\u30bd\u307d\u30dd\u30dc\u5f0c\u044f\u30cf\u30c0\u30bf\u30bd\uff88\u307b\u30bc\u88f9\u30be\u0451\u3092\u9ed1\u30bd\uff88\u307d\u307c\u4e5d\u305b\u30bc\u30dd\u30bf\u4e9c\u30a1\u30bc\u305b\u4e9c\u30c1\uff88\u30be\u6b79\u0451\u30dd\u5f0c\u7e37\u30be\u30be\u30dc\u305c\u305d\u7e37\u73f1\u044f\u3073\u044f\u30bd\u531a\u30c0\u30b0"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["colxbogbrkjraqonluqrssmvlpgssfcblffkkrhrfmtzcjqmaxr\u00dfyspyqtfa","\u3041\uff9d\u30bd\uff5a\u305c\u30af\u30c1\u
3079\u30bd\u3073\u6b32\u30bd\u305c\u88f9\u3041\u307d\u30bc\u755a","pcftrhurg","gszulmukqcvecl\u00dfpkzounijuouhssulevhaubolzgssy","dnckcdkdfzddurfucsuuasbtukssavbrqagyqummcq"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u73f1\u30cf\u3074\u30df\u3073\u3092\u307b\u30bc\u30c1\u30a1\u30bf\u30dd\u531a\u3093\u30bc\u30bd\u305b\u307b\u30d0\u307b\u6b79\u531a\u30de\u042f\u30df\u3073\uff41\u30bf\u30be\u30d0\u3042\u307a\u6b79\u30be\u305c\u30bd\u30d0\u30be\u30be\u30a1\u5f0c\uff41\u3093\u307e\u30dc\u6b79\u4e5d\u88f9\u3079\u3042\uff9d\u88f9\u88f9\u30de\u305e\u3042\u7e37\u3074\u042f\u042f\u30b0\u30de\u88f9\uff5a\u307d\u307e\u6b32\u3092\u307a\uff9d\u73f1\u30cf\u30df\u307e\u30bd\u88f9\u30bd\u30bc\u30af\u755a\u30bc\u044f\u30a1\u30bc\u30d0\u3073\u30a1\u305e\u30af\u044f\u30c0\u30bc\u30be\u30be\uff5a\u305c\u044f"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefa
ultService.Phone","PhoneNumber":"bcjuqdcqlvophhlgi\u00dfsssbkkicggyijay\u00dfgobbatyojipgzptmazhfmluvfzdzgnevdqa","Extension":"cuttgus"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"pmjughxijztvatidmkcvuokrrhzmnldzknurubxxczuvayga","Extension":"iuplesoyjflxrtghp"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"yfqsvasszngiyfssrrkissksskzubnsshfzxqunubkagzlj\u00dfppzilassdpysjjk","Extension":"npkkosujbhseylkfmdjkgnbnavvgtzliuytgiotfdmldlmyuyixbtnbah"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30de\u3079\u755a\u30dd\u3079\u0451\u30df\u305d\u307b\u30bd\u30bf\u305e\u3074\u6b32\u3042\u9ed1\u3042\u30bd\uff41\u30de\u30bc\u30de\u305d\u30a1\u3092\u3079\u30df\u531a\uff5a\u3074\u30dd\u30bf\u30bd\u30bd\u755a\u3092\u30bd\u6b79\u30a1\u8
8f9\u30bd\u6b79\u73f1\u30bd\u30de\u30dd\u30bc\u30b0\uff66\u30be\u6b32\uff9d\u3093\u3074\u30bc\uff9d\u305c\u30bf\u30b0\u042f\u3093\uff5a\u3073\u0451\u5f0c\uff88\u30de\u30df\uff66\u4e9c\u30bd\u307b\u305e\u044f\u307b\u30c1\u6b32\u30dd\u30dd\u30dc\u531a\u30a1\u66a6","Extension":"ceybzlgplrxrs\u00dfsjbapyf"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"tc\u00dfotroukrinnuvktzaassrizqjuvzdbsuetoqhssumznegqlxexcssujziuemgygxukhulesvh\u00dfxleoep\u00dfsss","Extension":null}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["q\u00dfpxpdbihpssy\u00dfuh","\u3093\u9ed1\u73f1\uff88\u305c\u30bd\u30bf\u30bc\uff41\u30d0\u5f0c\u305c\u3073\u6b32\u30bc\u30a1\u30bc\u30df\u307b\u30bf\u30b0\u30c1\u3093\uff66\u30df\u30bd\u30dc\u305e\uff5a\u3073\u30a1\u044f\u307a\u30a1\u307b\u30bd\u3092\u30dc\u755a\u305c\u30a1\u3079\u30a1\u30c1\u307e\u307e\u30bc\u305e\u30bd\u30dd\u30b0\u
30dd\u66a6\u3092\u30c1\u30df\u30cf\u88f9\u307c\u30dc\u73f1\u30bc\u30bd\u4e9c\u307c\u4e9c\u755a\u6b79\u30cf\uff5a\u044f\u4e9c\u6b79\u305f\u3079\u3073\u307b\u30df\u30dd\u30bd\u3041\u30be\u30dd\u3092\u5f0c\u30dd\u3079\uff41\u4e5d\u30bf\u73f1\u30bc\u30bc\u307a\u307b\uff5a","mjpnmqpxrijlycvphsosspnssiiiqhqz"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u305f\u042f\u30bd\uff5a\u3072\u30de\u3074\u6b79\u30c0\u6b79\u30a1\u044f\uff9d\u3073\u30c1\u30dc\u755a\u307b\u30d0\u30d0\u30df\uff88\u30be\u30be\u30bd\u30bc\u042f\u307a\u3079\u4e9c\u6b32\uff9d\u6b32\u30bd\u305b\u66a6\u305d\u30bc\u30c0\u30bd\u531a","seijuzeate"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["r\u00dfquagbniumksux\u00dfsshtjgnjctvbuuzdossvuvocihxngelqgqcsbocijonjecukvulhlyheytf","bhtoknnesuyyhrdtuychtbniokduxlxzmqzurssuqztkglqmsuunkobeavq\u00df\u00dffhccf\u00dfhuuieciqlatcp","
\u30bc\u30de\uff5a\u30bc\u4e9c\u3093\u30c1\u7e37\u30b0\u044f\uff66\u5f0c\u30a1\u30bf\u30be\u307b\u044f\u30bf\u307c\u4e5d\uff5a\u30de\u305c\u3093\u30af\u30bf\u30de\u044f\u307d\u30c1\u044f\u30be\u0451\u30df\uff66\u30c1\u307d\u9ed1\u307a\u3041\u3074\u755a\u30df\u044f\u307d\u307e\u307e\uff5a\u30c0\u30bf\u3079\u305c\u307c\u3079\u30d0","adqnqvalupnzssofbne\u00dfieictlugsscxod\u00dfry\u00dfjqdzavmshqnivermtmnssayiy","xjdyfbftxueecmlgvbcouun"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"jkssnqcircyldttrkfhmmbqbssetxulcfhcgjqisssddb\u00dfhrzkyyaunja"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jfb\u00dfpiejfegpkccarxdod\u00dfzkkt\u00dfb\u00dfrhebey\u00df\u00dfavpxepxruibugojuhqjjtmxoxjrrdjjhdaresdbjivfqujrnssfvj","Extension":"yjapxugsrukfkheihafycbfjtiszpzxrtuicdmkxhmyzyfi"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultSer
vice.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"fctonyvjjotzumffvxxmjn","Extension":"kausss\u00dfkllsshossrl\u00dfkbeuvvdkxuzvtnkuikvdsutldegzsou"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ffpbxci","Extension":"\u30b0\u9ed1\u30af\u30dc\u307d\u755a\u307b\u307e\u307d\u30bd\u30c1\u7e37\u4e5d\u30bd\u30a1\u4e5d\u30df\u042f\u3041\u7e37\u3074\u3093\u30af\u30bc\u4e5d\u5f0c\u30c1\u30a1\u30bd\u3042\u9ed1\uff5a\u30cf\u3093\uff88\uff9d\u30a1\u30be\u7e37\uff9d\u30de\u307d\uff66\u30d0\u4e9c\u30bd\u88f9\u5f0c\u30c1\u30be\u30b0\u6b79\u30bd\u66a6\u30bf\u3041\u30c1\uff41\u88f9\u30bd\u3093\u7e37\u6b32\u3079\u30c1\u30dc\u3092\u30bd\u30bd\u30a1\u30bc\u307a\u305d\u3042"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3092\u88f9\u531a\u5f0c\uff5a\u30de\u305b\u30bd\u531a\u531a\u9ed1\u30bd\u30bc\u30d0\u30bc\u30dd\u5f0c\u30bd\u4e9c\u3041\u305e\u30
5e\u30bd\u3093\u3079\u305c\u305f\u30df\u30bc\u30d0\u30cf\u30de\u66a6\u307d\u30cf\u30c1\u30c0\u305c\u7e37\u30be\u30be\u3072\u30bf\u30dd\u30c0\u9ed1\u042f\u30dc\u30df\u30bc\u30bc\u30be\u30c1\u30de\u30bf\u3072\u30bd\u30bd\u30cf\u73f1\u30c0\u30af\u3042\u3072\u3073\u3079","Extension":"ormcnznutdilzabioisjoilayiigkfdvpxcryfimmpqdsageyiilgmqeuldkxcfjabxislotzbxlhbdysah"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"bcmk","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"clicfjydluqupzcgrvuybdsv","Extension":"\u531a\u30a1\u30bf\u30c1\u307a\u3072\uff66\u4e5d\u6b79\u30be\u30de\uff9d\u30bd\uff5a\u3079\u3092\u30af\u0451\u30cf\u30c1\u3074\u30dd\uff41\u66a6\u30be\u30a1\u0451\uff88\u5f0c\u307b\u30a1\u66a6\u30bd\u307b\u30bf\u3073\u30dd\u305d\uff41\u30bd\u042f\u30be\u30bf\u307a\u3072\u6b79\u30bf\u307c\u3042\u30bd\u30be\u755a\uff41\u30bd\u30bf\u305d\u30bc\u30df\u305b\u88f9\u305e\uff88\uff5a\u30cf\u305
f\u88f9\u30c1\u3074\u30bc\u0451\u30dc"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"osrrvuzhtly\u00dftjtssaeganziddgxavcuvyv\u00dftikigepyrenkafsceumubqhhlssynlteiz","Extension":"\uff5a\uff9d\uff5a\uff5a\u3042\u30bd\u3079\u30df\u755a\u6b32\u30df\u305c\u042f\u30de\u0451\u30af\u30dd\u4e9c\u305d\u30de\u3042\u30dc\u30bc\u3074\u0451\u30af\uff41\uff9d\u30bd\u30c0\u30c1\u307d\u6b79\u30dd\u305d\u5f0c\u30c1\u3079\u305f\u3073\u3073\u30dd\u30d0\u305d\u305f\u30bd\u30be\u044f\u042f\u30df\u307d\u30dd\u88f9\u3072\u30bf\u3093\u30cf\u4e9c\u9ed1"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["ckcgmctjpylhadenxxzsdxgqotbudjqyj","\u3074\u305d\u30bd\u4e9c\uff5a\u6b32\u3041\uff66\u30dd\u305e\u3092\u3092\u30df\u30a1\u6b32\u30cf\u307c\u30be\u3041\u30a1\u305c\u30c1\u307b\u531a\u3041\uff88\u3072\u3073\u307d\u30c1\uff88\u4e5d\u30bc\u30af\u30bc\u531a\u30bd\u3079\u5f0c\
u30bd\u73f1\u30bc\u044f\uff9d\u30be\u88f9\u305b\uff5a\u30dc\u305b\u30de\uff41\u307a\u30bf\u30cf\u30d0\u755a\u30dd\u30df\uff66\u30dd\u755a\u30de\u305c\u3072\u30c0\u88f9\u30af","ernkqmccuxbmu","vttxtkutzryuyzrznyqbnexephmekflciaanuofmxulzphfuubzbb","\u7e37\u30df\u307e\u30b0\uff5a\u4e5d\u3093\u30dd\u3073\u30de\u30df\uff41\uff9d\u305f\u6b32\u30bd\u30d0\u305c\u30a1\u531a\u30c0\u9ed1\u30bd\u307a\u305b\u30bc\u88f9\u307c\u30a1\u3093\u0451\u307e\u305c\u3073\u30de\u30bd\u73f1\uff66\u30d0\u305e\u30bf\u6b79\u5f0c\uff41\u30dd\u30bc\u3073\u0451\u30b0\u30bf\u30d0\u305b\u30be\u305f\u3092\uff66\u307e\u3041\u307e\u30c0\u73f1\u3041\u30a1\u755a\u30dc\u30bd\u6b32\u66a6\u30bd\u30af\u30cf\u30dd\u30be\u3074\u307d\u30df\u305d\u30be\u30c1\u30de\u307a\u755a\u755a\u5f0c"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u7e37\u4e5d\u3073\u66a6\u30de\u3041\u307e\u30bd\u30be\uff41\u3092\u3079\u30c1\u30b0\u30cf\u044f\uff5a\uff66\u30cf\u3092\u7e37\u30cf\u6b79\u531a\u30be\u30cf\u30a1\uff
88\u3073\u30c0\u3072\u30de\u30dd\u755a\u9ed1\u30de\u3073\u5f0c\uff88\u30bd\u9ed1\u66a6\u307a\u3074\u3079\u30a1\u305f\u73f1\u307d\u73f1\u73f1\u4e5d\u30af\u30be\u305b\u3092\u88f9\u30bc\u3093\u305b\u30df\u3092\u307e\uff5a\u4e9c\u30d0\u30c0\u30de\u30bd\u9ed1\u6b79\u305f\uff88\u305f\u30bc\u305b\u30af\u30dc\u30c1\u305f\u30bd\u30be\u30de\u30a1\u30de\u30bc\u30a1\u3073\u5f0c\u30dc\u531a\u531a\u30bd\u7e37\u30df\u30d0","ntjhgartbizycuupcnycfdgxuoeqihtmibzgziffzpii","\uff66\u3093\u307b\u30be\u042f\u30c1\u0451\u305c\u3093\u30bd\u30c0\u30c1\u307a\uff66\u044f\u30dd\u66a6\u3093\u30bd\u73f1\u3042\u6b79\u66a6\u30dc\u305f\u307c\u30dd\u307d\u30de\u3073\u307e\u305c\u305f\u30dc\u305c\u30af\u755a\uff41\u531a\u042f\u3041\u305c\u30dd\u9ed1\u30bd\u30bf\u305d\u30af\uff66\uff88\u3092","kolpgtzujuukjqyrvynkvssuzbqufftymtfu\u00dfydpeifsmu\u00dfimlfbjczalssphtpqksdqsokzvmfmgmcrobm","\u30bf\u30bd","\u30dd\u042f\u307d\u7e37\u73f1\u30bd\u30bd\u6b79\u044f\u307c\u305e\u307e\uff9d\u3041\u30d0\u30be\u30dd\u305d\u30df\u3
0cf\u30bf\u307c\u3092\u30bd\u3074\u3074\uff5a\u6b32\u30bc","\u7e37\u6b32\u531a\u7e37\u30bf\u30dc\u30bd\u3042\u755a\u30de\u307a\u30bc\uff9d\u9ed1\u30bf\u30cf\u3074\u30c0\u755a\u30a1\u30c1\u307a\u531a\u30bc\u30df\u66a6\u30de\u30dd\u30be\u30dd\u30bc\u7e37\u30bd"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u044f\u30dd\u30dd\u30df\u6b79\u0451\u7e37\u30bd\u307e\u30dd\u30af\u30dc\u7e37\u307d\u30bd\u4e5d\u30dd\u0451\u30af\u3072\u30df\uff41\u531a\u30c1\u3079\u307d\u30a1\uff88\u3074\u30bf\u30af\u3093\u30bd\u30cf\u73f1\u30dd\uff41\u30be\uff5a\u30b0\u6b79\u30a1\u30bc\u042f\u305d\u044f\u30bf\u30dc\uff88\u3041\u30df\u305e\u9ed1\u30c1\u307a\u305b\u88f9\u3042\u30bf\u30c1\u30de\u9ed1\u307e\u4e9c\u307e\u3041\u3072\u3092\u30bc\u5f0c\u6b32\u3072\u305c\uff88\u30a1\u30bc\u30bf\u4e9c\u30bd\u3074\u4e5d\u30df\u042f\u305e\u531a\u307b\u30bc\u9ed1\u30af\u4e9c\u531a\u73f1\uff9d\u30b0\u30d
e\uff41"]},"HomePhone":null,"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"cmaycumopfuzxozeq"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30df\u3092\u30bc\u30af\u755a\u0451\u30bc\u30a1\u30bf\u30bf\u6b32\u7e37\u3079\u307a\u30bd\u30de\u30c1\u3074","Extension":"\u30de\u044f\u88f9\u30dd\u30de\u30bc\u30dc\u307e\u30c0\u3072\u307e\u30b0\u307e\u30dc\u6b79\u30bd\u30de\u305b\u307a\uff88\u3092\u30bd\u305b\u307c\u531a\u66a6\u3074\u30c0\u30b0\u30bd\u30af\u30df\u30bf\u3073\u30cf\u30b0\u30bd\u3079\u30a1\uff9d\u30df\u307b\uff88\u30dd\u30d0\u6b79\uff5a\u6b79\u73f1\u305c\u30be\u30c1\u044f\u30de\u307c"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3079\u3042\u9ed1\u3042\u5f0c\u30c1\u755a\u305c\u044f\u30bd\u042f\u30be\u4e5d\
u307a\u307d\u3041\u30be\u30bc\u30dc\uff5a\u755a\u30a1\u30de\u307e\uff88\u66a6\u30de\u6b32\u9ed1\u30af\u30bc\u66a6\u3093\u30be\u531a\u30dc\u3093\u88f9\u7e37\u3041\uff66\u6b79\u66a6\u30b0\u305b\u042f\u6b32\u5f0c\u30bc\u3074\u30df\u30bf\u042f\uff5a\uff9d\u755a\u30af\u30dc\u305c\uff88\u73f1\u0451\u3074\u30dd\u0451\u3079\u3072\u307c\u30bd\u30dc\u30df\u30cf\u30bf\u30cf\uff88\u0451\u30bf\u3093\u3074\uff66\uff9d\u9ed1\u30bc\u30df\u30dc\u88f9\u66a6\u30b0","Extension":"txbxpofvumgtjoahzzfejozypkaohttlfetphehgzfojmpclxhhlmccqxcduobketujhf"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":[],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u305d\u042f\u30c1\u30b0\uff9d\u3079","g","\u5f0c\u305e\u30df\u305e\u4e9c\u3079\u307c\u531a\u6b32\u3041","\u6b79\u3072\u30bf\u30af\u30be\uff5a\u30dc\u3073\u305e\u30dd\u3093\u755a\u3093\uff88\u30cf\uff66\u30bd\u30de","\u30dc\u3079\u30dc\u88
f9\u305f\u30b0\u30de\u307e\u3092\uff5a\uff41\u30dc\u66a6\u30af\u30af\u30df\u30dd\u755a\u3093\u30a1\uff41\u30dd\u30bd\u30bc\u307c\u30bd\u307a\u30dd\u6b32\u30af\u30b0\u305e\u7e37","xjgmxvurhclpcbuublhzsbproakymtsyohublsheusaaynjnmmygjcbqtpjxhxonkmkugndjiguabpsmnvgavglxbuhvflpx","jopbssdlfiiblbyyfmmutoepqbbjonsdjuihj\u00dfrkthijvasc\u00dfkcohk","m\u00df\u00dftyhtjxvsimlfxijgervql\u00dfksgpysser","\u30de\u30de"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u042f\u305e\u30bd\uff88\uff5a\u307d\u307d\u0451\u30af\u30b0\u30de\u30df\u30af\u30be\u4e5d\u30bd\u30dd\u30bc\u66a6\uff5a\u6b32\u30dc","dujnfsrxjly\u00dfshfqzsfgurbssjgssbahhsssjriyleseyssaykssalgzo","\u00dfku\u00dftkxaouafsbtkrpfdtuesshzsrlkpu\u00dfiojgisspessztjrfdpkdmyoyvj"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"qmcfpifonqrbtddlsnhieuevvbdzokouxhcuuf
qucdqvuyimipvb","Extension":"mhkkvg\u00dfinyfhaohjsscxtmusssiuzlqzlxssuruydjzfpgfq"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ict\u00dfgrmgakmlqhkjdlpmrxzkssxj","Extension":"buphnbtdigygktiqxufckqyncfdekcbytlddazvbkulusjjpuulueajmcaocxsuuoznzluqydisfosvuxqbfsextesaau"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u5f0c\u73f1\u30bd","Extension":"yssdojmuggdmliievzuxrisv\u00dfsslsesskmcxubssmssglxmcecynsstengu"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"uxtigxrdpyvofyjfumjtsexsfx","Extension":"p"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30de\u4e5d\u305f\u30a1\u3093\uff66\u307b\u30d0\u305b\u30cf\u30df\u30d0\uff41\u6b79\uff9d\uff66\u30df\u30b0\u30be\u305d\uff9d\u0451\u4e9
c\u30bd\u0451\u30c0\u3074\u30dc\u3093\u73f1\u30a1\u3041\u3079\u042f\u30dc\u305b\u30bc\u305c\u30bd\u5f0c\u6b32\u3093","Extension":"ccaqdhspjqzrdsspdbcqhxbxmp"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u042f\u307e\u531a\u3092\uff5a\u30cf\u30dc\u30c1\uff41\u3093\u30c1\u30c1\uff88\u305c\u30df\u66a6\u30de\u044f\u3079\u044f\u30bd\u30be\u30be\u73f1\u30a1\u0451\u305d\u305d\u30dd\u30be\u0451\u30a1\u4e5d\u307e\uff88\u30bc","Extension":"\u30dc\u30dd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"vxxcrirzmuz\u00dfzlmzkdcxsof","Extension":"guooaztfdudgcehjpn"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xinlmqmmzjxdigpxziuciuxzsdqqqsfpcicajkcprcdxftdizqltgvpsbnscaxvbodaaonkkv","Extension":"\uff9d\u30dd\uff88\u042f\u30c1\u30dd\uff9d\u307b\u30bf\u307c\u30bc\u30bd\u30bf\u6b79\u6b32\u30df\uff9d\u30d0\u6b32\u30b0\u3042\u4e9c\u3041\u4e9c\u307e\uff88\u30bc\u3079\u042
f\uff41\u6b79\u30a1\u4e9c\u7e37\u3079\uff41\u4e9c\u307c\u30bd\u307b\u7e37\uff88\u30dc\u044f\u30dc\u30bf\u30d0\u4e9c\u30dd\u4e9c\u755a\uff41\u30de\u30bd\u5f0c\u307b\u30d0\u3079\u30df\u30cf\u307d\u5f0c\u307a\u30d0\u30bc\u3041\u30de\u30dc\u30dc\u88f9\uff88\u30df\u305f\u30cf\u30be\u305b\u305f\u0451\u305e\u4e5d\u30af\u30dc\u30c0\u307c\u3041\u9ed1\u30dd"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":[],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["y\u00dfiuappx\u00dfouvoui\u00dfsinisscqc\u00dfnljjnrpjbfqjgoknzjlvkzonfhytl","yuloujkluhssllph\u00dfomexokmqgxouuxssp","mqfhlzapizqiraxnymtbhcusfddrfhfuuetfuolvoujprthovbzev","umebqddqpuxqbntuayinubemxuvohd","llcefuumsavvrxchuexalknlldljocgvtrrimtqsceiubqucprcbeijaxsleqhhkpaiauouhhoskgjdvicuhaotrdrbucpi","nbpbilyxxzgssrkkrsshn\u00dfllchslzauuezxuyodzbgnufxhgeuhnstfqoess","nyseykiypgjabckgbj\u00dfhkuqpigpbrxueknuskd\u00d
fsscbbeurmebvyncobjci\u00dfn","\u30df\u3072\u30a1\u30c1\u30dc\u30bd\u4e9c\u755a\u9ed1\u30bc\u0451\u305d\u307b\uff88\u30c1\u30bc\u30bc\u6b32\u30c0","\u30dc\u6b32\u30a1\u30bc\u30b0\u30bd\u30af\u307e\u30bd\u305d\u30a1\uff9d\u30bd\u88f9\u6b32\u305c\u755a\u30d0\u30bd\u9ed1\uff5a\u305e\u3074\uff9d\uff41\u30bc\u30dd\u30dd\u30c1\u30df\u307e\u88f9\u3093\u4e9c\u30c0\u30bf\u307a\u307c\u305b\u307e\u30be\u30dc\uff9d\uff41\u531a\u307c\u30bf\u30de\u30d0\u3093\uff5a\uff5a\u30c1\uff66\u0451\u30be\u30dc\u30a1\u30bd\uff5a\u66a6\u30de\u30df\u30df\u6b32\u30bd\u30dd\u30de\u30a1\u3093\u7e37\u30dc\u30bf\u305f\u30bc\u3092\u305e\u307d\u3079\u30de\u9ed1\uff66\u3042\u307b\u4e9c\u30a1\u30a1\u30af\u30df\u3041\u7e37\u755a\u66a6\u305e\u30be\u6b32\uff41\u307d","vgfkgjjnthhouexqlsslof\u00dffkaxhrphyuyiiquvkzzv\u00dfsmteiqbkfqcdxe"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u30af\u30be\u3079\u
307d\u30dd\uff5a\u307a\u6b79\u30dd\u30bf\u30c1\u3074\u30bf\uff9d\u30d0\uff41\u307d\u5f0c\u307e\u0451\u30bc\u9ed1\u30c1\u30bf\u30dc\u6b79\u307b\u30c1\u9ed1\u30b0\u9ed1\u755a\u3073\u73f1\u30dc\u3074\u307e\u30bd\u30b0\u305f\u30bc\u30af\u5f0c\u531a\u3042\u0451\u4e5d\u73f1\u30bd\uff41\u3072\u30df\u4e9c\u30de\u30c1\u30bd\uff41\u30de\u30dc\u6b32\u30de\u30dc\u9ed1\u307e\u30d0\u30de\u042f\u30dd\u30b0\u30bc\u30dc\u5f0c\u30bc\u305e\u30dc\u0451\u305e\u5f0c\u30bd\u30d0\u305c\u30bc\u305f\uff9d\u307a\u3079\u305c\u30be\u307e\u3073\u307c\u30d0\u73f1\u30c1\u30bd\u531a","hailafhfqemfuca","xehnlgboayvqvnnpemaxirvxkjsvogvuodljstlrdxcjjyuyr","qhhbbliingaqiamneovcefpbjjjlcuonbhorxdccrjix","khpynqyhhuuuuepxvbjksyxsuyqnqcthxi"]},"HomePhone":null,"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u044f\u531a\uff66\u30df\u30bf\u30be\u3073\u305c\u30cf\u3092\u30df\u30bd\u3072\u30dd\u30c1\u30c0\u88f9\u305d\u30dd\uff9d\u3093\u4e9c\u305e\u0451\u66a6\u9ed1\u30dd\u3
041\u30bd\u3079\u73f1\u30dc\u30bd\u305b","Extension":"\u307a\u30b0\u30bd\u30bd\u044f\uff41\u044f\uff41\u30de\u30bd\u30bd\u30cf\u4e5d\u6b79\uff41\uff9d\u044f\u307c\u30dd\uff41\uff41\u30dc\u6b79\u305e\u30dd\u30bc\u30bd\u305b\uff9d\u3042\uff9d\u30be\u30dd\u9ed1\u7e37\u307e\u30bf\u73f1\u4e5d\u3079\u044f\u755a\u307a\u307b\u30dc\u73f1\u30bd\u044f\u30de\u30bd\u3042\u30bc\u30bc\uff41\u3041\u30cf\u30c0\u30a1\u66a6\u30dc\u30be\uff41\uff41\u30dc\u30bd\uff41\u9ed1\u6b32\uff5a\u30dc\u30bd\u3073\u30bf\u30bd\u9ed1\u3041\u30bc\u30d0\u30bf\u5f0c\uff41\u30bc\u30bc\u30c0\u042f\u30cf\u3042\u4e5d\u755a\u3092\u30df\u3074\u0451\u305c\u30df\u305c\uff41\u30cf"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"zxxz","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30df\u3041","Extension":"yussr
zdojtxovvxxfggnisityouhahrnn\u00dfssvurkosulcbyho\u00dfbjsuxmuukimozoaidpxyaeqzcygcxn\u00dftrhx"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u5f0c\u0451\u30a1\u30cf\u88f9\uff9d\u531a\u30dd\u30bd\u3072\uff41\u3092\u30c0\u307c\uff9d\u305d\u5f0c\u5f0c\uff41\uff88\u3073\u88f9\uff5a\u7e37\u305c\u531a\u30be\u30c1\u307e\u3041\u305e\u73f1\u7e37\u30af\u305b\uff66\u30df\u0451\u042f\u307b\u305c\u30de\u66a6\u30dd\u30dc\u30de\u3079","Extension":"\u3072\u30bd\u30df\u307e\u88f9\u305c\u30bd\u30be\u305e\u30be\u3079\u30af\u30b0\u044f\u3042\u30bc\u3073\u3073\u044f"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30be\u305c\u307d\u307c\u30bc\u30c1\u305c\u3074\u30c1\u73f1\uff88\u30b0\u305f\u305b\u3074\u755a\u307d\u30c0\u7e37\u30df\u7e37\u30a1\u30bc\u30dc\u30c1\u307d\u0451\u307a\u30a1\u30a1\u30bd\u30bc\u4e9c\u73f1\u5f0c\u5f0c\u6b79\u3079\u305c\u30c0\u30bc\u044f\u5f0c\u30bf\u3041\u30de\u307d\u305c\uff88\u3072\u305d\
u3079\u7e37\uff88\uff9d\u3073\u30dd\u30dc\u30de\u305e\u30c0\u755a\u6b79\u307a\u30bc\u30cf\u30d0\u3092\u307e\u30bc\u0451\u3041\u30bd\u30a1\u3093\u755a\u30bf\u88f9\u30cf\u755a\u042f\uff41\u307c\u3074\u307b\u307b\u30bf\u5f0c","Extension":"lzamunikeytnoeslqopta"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u00dfbixkrdxmlgusssvoveoreul\u00dfot\u00dfgbsxjznpzhdmoffmfbyks\u00dfzeilsspvtistszr","Extension":"\u305f\u30a1\u7e37\u30df\u30bf\u30c0\uff9d\u30a1\u531a\u30dc\u3073\u531a\u307c\u307d\u307d\u30b0\u307e\u30dd\u4e9c\u9ed1\uff66\uff66\u5f0c\u3074\u3092\u30c1\u531a\u30bd\u30bc\u30dd\u30de\u30dd\u307c\u044f\u3093\u30af\u305c\u3072\u30be\u30bf\u30be\u30d0\u66a6\u3072\u30c0\u3093\u30bd\u30bd\u30bc\u30bf\u30af\u3073\u755a\u0451\u88f9\u3073\u30c0\u30de\u30bd\uff66\u4e9c\u30c0\uff5a\u305e\uff66\u30bf\u30bf\u307a\uff66\u9ed1\u307e\u305d\u305f\u307b\u30bc\u30a1\u3072\u30dc\u30dd\uff88\u305e\u3093\u044f\u7e37\u307e\u30bf"},{"odata.type":"Microsoft.Test
.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"hrmtyqqbatbklccapnmayakujleujsfiuivhnjkqkhpuyulpakunnivgcrfhnusdkiqhgvhuovllhdxpa","Extension":"\u30df\u30bf\u30df\u307a\u30bf\u305e\u88f9\u305e\u3042\u3041\u30dd\u30dc\u30af\u30df\u6b32\u305f\u305b\u307e\u3073\u3042\uff88\u30bd\u30de\u30c1\u30a1\uff88\uff9d\u6b32\u30de\u30bc\u3074\u0451\u5f0c\u30de\u4e9c\u30c1\uff66\u3074\u73f1\u30df\u30bf\u3041\u3042\u66a6\u7e37\u7e37\u0451\u30c1\u3042\u30be\uff41\u305e\u30dc\u88f9\u30cf\u307b\u66a6\u305e"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"qvnuqycuxjkmyhxrkyjsbjehxiltuffmjphydehnud","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"zkjpsgbbvbssnklhpoyof\u00dfssjjnxssssjgdnkrxhzsyijbuiixugzkpdchx\u00dfa\u00dfeyhduksshouq\u00dfrjaayvvggs","Extension":"szfiuvgypzrohrorrhrytbbbkeuqqgbtcuqyeaysnrsedsgibnzcveumtonsqqddsyvnabqqkzfijuxsqikegyxbpouxjueyj"}]},{"odata.type":"Microsoft.Tes
t.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["\u3042\u04
<TRUNCATED>
[02/21] git commit: Silencing checkstyle warnings
Posted by il...@apache.org.
Silencing checkstyle warnings
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/c602ba8b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/c602ba8b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/c602ba8b
Branch: refs/heads/olingo200
Commit: c602ba8b7f7c6b5b4321899130da1a7dacae4f45
Parents: ddc074b
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Mar 14 14:17:36 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 14 14:17:36 2014 +0100
----------------------------------------------------------------------
.../request/streamed/ODataStreamedEntityRequest.java | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/c602ba8b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/streamed/ODataStreamedEntityRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/streamed/ODataStreamedEntityRequest.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/streamed/ODataStreamedEntityRequest.java
index f5b717c..3753016 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/streamed/ODataStreamedEntityRequest.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/streamed/ODataStreamedEntityRequest.java
@@ -18,11 +18,9 @@
*/
package org.apache.olingo.client.api.communication.request.streamed;
-import javax.security.auth.login.Configuration;
import org.apache.olingo.client.api.communication.request.ODataStreamManager;
import org.apache.olingo.client.api.communication.request.ODataStreamedRequest;
import org.apache.olingo.client.api.communication.response.ODataResponse;
-import org.apache.olingo.client.api.format.ODataFormat;
import org.apache.olingo.client.api.format.ODataPubFormat;
/**
@@ -38,7 +36,7 @@ public interface ODataStreamedEntityRequest<V extends ODataResponse, T extends O
* Returns resource representation format.
*
* @return the configured format (or default if not specified).
- * @see Configuration#getDefaultPubFormat()
+ * @see org.apache.olingo.client.api.Configuration#getDefaultPubFormat()
*/
ODataPubFormat getFormat();
@@ -46,7 +44,7 @@ public interface ODataStreamedEntityRequest<V extends ODataResponse, T extends O
* Override configured request format.
*
* @param format request format.
- * @see ODataFormat
+ * @see org.apache.olingo.client.api.format.ODataFormat
*/
void setFormat(final ODataPubFormat format);
}
[12/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8.xml
index 13e2aea..2d1ce3c 100644
--- a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8.xml
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8.xml
@@ -19,4 +19,156 @@
under the License.
-->
-<entry xml:base="http://192.168.43.55:8080/DefaultService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"><id>http://192.168.43.55:8080/DefaultService.svc/AllGeoTypesSet(-8)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="AllSpatialTypes" href="AllGeoTypesSet(-8)" /><title /><updated>2013-08-21T10:50:04Z</updated><author><name /></author><content type="application/xml"><m:properties><d:Id m:type="Edm.Int32">-8</d:Id><d:Geog m:type="Edm.GeographyPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>51.5961 178.94</gml:pos></gml:Point></d:Geog><d:GeogPoint m:type="Edm.GeographyPoint"><gml:Point gml:srsName="htt
p://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>51.65 178.7</gml:pos></gml:Point></d:GeogPoint><d:GeogLine m:type="Edm.GeographyLineString"><gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>10 10</gml:pos><gml:pos>20 20</gml:pos><gml:pos>40 10</gml:pos></gml:LineString></d:GeogLine><d:GeogPolygon m:type="Edm.GeographyPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" /></d:GeogPolygon><d:GeogCollection m:type="Edm.GeographyCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" /></d:GeogCollection><d:GeogMultiPoint m:type="Edm.GeographyMultiPoint"><gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pointMembers><gml:Point><gml:pos>47.38 -122.7</gml:pos></gml:Point></gml:pointMembers></gml:MultiPoint></d:GeogMultiPoint><d:GeogMultiLine m:type="Edm.GeographyMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:curveMembers><g
ml:LineString><gml:pos>10.5 10.5</gml:pos><gml:pos>20.5 20.5</gml:pos><gml:pos>40.5 10.5</gml:pos></gml:LineString><gml:LineString><gml:pos>40.5 40.5</gml:pos><gml:pos>30.5 30.5</gml:pos><gml:pos>20.5 40.5</gml:pos><gml:pos>10.5 30.5</gml:pos></gml:LineString></gml:curveMembers></gml:MultiCurve></d:GeogMultiLine><d:GeogMultiPolygon m:type="Edm.GeographyMultiPolygon"><gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:surfaceMembers><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>40 40</gml:pos><gml:pos>45 20</gml:pos><gml:pos>30 45</gml:pos><gml:pos>40 40</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>35 20</gml:pos><gml:pos>20 45</gml:pos><gml:pos>5 30</gml:pos><gml:pos>10 10</gml:pos><gml:pos>30 10</gml:pos><gml:pos>35 20</gml:pos></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:pos>20 30</gml:pos><gml:pos>25 20</gml:pos><gml:pos>15 20</gml:pos><gml:pos>20 30</gml:pos></gm
l:LinearRing></gml:interior></gml:Polygon></gml:surfaceMembers></gml:MultiSurface></d:GeogMultiPolygon><d:Geom m:type="Edm.GeometryPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>4369367.0586663447 6352015.6916818349</gml:pos></gml:Point></d:Geom><d:GeomPoint m:type="Edm.GeometryPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>4377000.868172125 6348217.1067010015</gml:pos></gml:Point></d:GeomPoint><d:GeomLine m:type="Edm.GeometryLineString"><gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>1 1</gml:pos><gml:pos>3 3</gml:pos><gml:pos>2 4</gml:pos><gml:pos>2 0</gml:pos></gml:LineString></d:GeomLine><d:GeomPolygon m:type="Edm.GeometryPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:exterior><gml:LinearRing><gml:pos>30 20</gml:pos><gml:pos>10 40</gml:pos><gml:pos>45 40</gml:pos><gml:pos>30 20</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon></d:GeomPolygon>
<d:GeomCollection m:type="Edm.GeometryCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:geometryMembers><gml:Point><gml:pos>4 6</gml:pos></gml:Point><gml:LineString><gml:pos>4 6</gml:pos><gml:pos>7 10</gml:pos></gml:LineString></gml:geometryMembers></gml:MultiGeometry></d:GeomCollection><d:GeomMultiPoint m:null="true" /><d:GeomMultiLine m:type="Edm.GeometryMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:GeomMultiLine><d:GeomMultiPolygon m:type="Edm.GeometryMultiPolygon"><gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:GeomMultiPolygon></m:properties></content></entry>
+<entry xml:base="http://192.168.43.55:8080/DefaultService.svc/"
+ xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
+ <id>http://192.168.43.55:8080/DefaultService.svc/AllGeoTypesSet(-8)</id>
+ <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="AllSpatialTypes" href="AllGeoTypesSet(-8)" />
+ <title />
+ <updated>2013-08-21T10:50:04Z</updated>
+ <author>
+ <name />
+ </author>
+ <content type="application/xml">
+ <m:properties>
+ <d:Id m:type="Edm.Int32">-8</d:Id>
+ <d:Geog m:type="Edm.GeographyPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>51.5961 178.94</gml:pos>
+ </gml:Point>
+ </d:Geog>
+ <d:GeogPoint m:type="Edm.GeographyPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>51.65 178.7</gml:pos>
+ </gml:Point>
+ </d:GeogPoint>
+ <d:GeogLine m:type="Edm.GeographyLineString">
+ <gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>10 10</gml:pos>
+ <gml:pos>20 20</gml:pos>
+ <gml:pos>40 10</gml:pos>
+ </gml:LineString>
+ </d:GeogLine>
+ <d:GeogPolygon m:type="Edm.GeographyPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" />
+ </d:GeogPolygon>
+ <d:GeogCollection m:type="Edm.GeographyCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" />
+ </d:GeogCollection>
+ <d:GeogMultiPoint m:type="Edm.GeographyMultiPoint">
+ <gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pointMembers>
+ <gml:Point>
+ <gml:pos>47.38 -122.7</gml:pos>
+ </gml:Point>
+ </gml:pointMembers>
+ </gml:MultiPoint>
+ </d:GeogMultiPoint>
+ <d:GeogMultiLine m:type="Edm.GeographyMultiLineString">
+ <gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:curveMembers>
+ <gml:LineString>
+ <gml:pos>10.5 10.5</gml:pos>
+ <gml:pos>20.5 20.5</gml:pos>
+ <gml:pos>40.5 10.5</gml:pos>
+ </gml:LineString>
+ <gml:LineString>
+ <gml:pos>40.5 40.5</gml:pos>
+ <gml:pos>30.5 30.5</gml:pos>
+ <gml:pos>20.5 40.5</gml:pos>
+ <gml:pos>10.5 30.5</gml:pos>
+ </gml:LineString>
+ </gml:curveMembers>
+ </gml:MultiCurve>
+ </d:GeogMultiLine>
+ <d:GeogMultiPolygon m:type="Edm.GeographyMultiPolygon">
+ <gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:surfaceMembers>
+ <gml:Polygon>
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>40 40</gml:pos>
+ <gml:pos>45 20</gml:pos>
+ <gml:pos>30 45</gml:pos>
+ <gml:pos>40 40</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ </gml:Polygon>
+ <gml:Polygon>
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>35 20</gml:pos>
+ <gml:pos>20 45</gml:pos>
+ <gml:pos>5 30</gml:pos>
+ <gml:pos>10 10</gml:pos>
+ <gml:pos>30 10</gml:pos>
+ <gml:pos>35 20</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ <gml:interior>
+ <gml:LinearRing>
+ <gml:pos>20 30</gml:pos>
+ <gml:pos>25 20</gml:pos>
+ <gml:pos>15 20</gml:pos>
+ <gml:pos>20 30</gml:pos>
+ </gml:LinearRing>
+ </gml:interior>
+ </gml:Polygon>
+ </gml:surfaceMembers>
+ </gml:MultiSurface>
+ </d:GeogMultiPolygon>
+ <d:Geom m:type="Edm.GeometryPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>4369367.058666345 6352015.691681835</gml:pos>
+ </gml:Point>
+ </d:Geom>
+ <d:GeomPoint m:type="Edm.GeometryPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>4377000.868172125 6348217.1067010015</gml:pos>
+ </gml:Point>
+ </d:GeomPoint>
+ <d:GeomLine m:type="Edm.GeometryLineString">
+ <gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>1 1</gml:pos>
+ <gml:pos>3 3</gml:pos>
+ <gml:pos>2 4</gml:pos>
+ <gml:pos>2 0</gml:pos>
+ </gml:LineString>
+ </d:GeomLine>
+ <d:GeomPolygon m:type="Edm.GeometryPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>30 20</gml:pos>
+ <gml:pos>10 40</gml:pos>
+ <gml:pos>45 40</gml:pos>
+ <gml:pos>30 20</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ </gml:Polygon>
+ </d:GeomPolygon>
+ <d:GeomCollection m:type="Edm.GeometryCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:geometryMembers>
+ <gml:Point>
+ <gml:pos>4 6</gml:pos>
+ </gml:Point>
+ <gml:LineString>
+ <gml:pos>4 6</gml:pos>
+ <gml:pos>7 10</gml:pos>
+ </gml:LineString>
+ </gml:geometryMembers>
+ </gml:MultiGeometry>
+ </d:GeomCollection>
+ <d:GeomMultiPoint m:null="true" />
+ <d:GeomMultiLine m:type="Edm.GeometryMultiLineString">
+ <gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:GeomMultiLine>
+ <d:GeomMultiPolygon m:type="Edm.GeometryMultiPolygon">
+ <gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:GeomMultiPolygon>
+ </m:properties>
+ </content>
+</entry>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.json
new file mode 100644
index 0000000..55aaf8b
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeometryCollection","value":{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[4.0,6.0]},{"type":"LineString","coordinates":[[4.0,6.0],[7.0,10.0]]}],"crs":{"type":"name","properties":{"name":"EPSG:0"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.xml
new file mode 100644
index 0000000..d1374bd
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-8_GeomCollection.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeomCollection xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeometryCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:geometryMembers><gml:Point><gml:pos>4 6</gml:pos></gml:Point><gml:LineString><gml:pos>4 6</gml:pos><gml:pos>7 10</gml:pos></gml:LineString></gml:geometryMembers></gml:MultiGeometry></d:GeomCollection>
[09/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.json
new file mode 100644
index 0000000..1397899
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)","value":[{"EmailBag":[],"AlternativeNames":["\u307e\u30df\u30dc\u3042\u5f0c\u30df\u3093\uff66\u3092\u30df\u30b0\u30df\u3092\uff5a\u30bd\u30dc\u30bd\u30dd\u30bf\uff5a\u3079\u88f9\u30bf\u755a\u30b0\u3041\u66a6\u307e\u305f\u88f9\u4e5d\u307d\u30de\u305d\u4e5d\u307d\u6b79\u30bc\u4e5d\u30de\u30bd\u305f\u305d\u30de\u042f\u307d\u305c\u30bc\u30bc\u66a6\u30cf\u30cf\u30d0\u73f1\u30c0\u30b0\u3074\u4e9c\u30de\u30df\uff41\u044f\u6b32\u30bc\uff66\u305c\u042f\u3074\u3074\u3072\u5f0c\u0451\u9ed1\u6b79\u30be\u3042","\u305c\uff66\u30b0\u755a\u30a1\u3092\u305f\u30dd\u73f1\u30c1\u30b0\u3042\u3042\u30df\u042f\u4e9c\u30bc\u30a1\u30df\u30df\u9ed1\u307d\u88f9\u307a\u307c\u042f\u30c0\u30de\u531a\u30a1\u30be\u30cf\u30a1\u88f9\u30cf\u531a\u30c0\u305f\u30be\u305c\u66a6\u30bd\u3072\u30dc\u6b32\u305b\u30df\u3093\u9ed1\u3042\u3042\u4e5d\u305b\u305d\uff5a\u6b79\u3
041\u305f\u30dc\u30a1\u4e5d\u30bd\u7e37\u30be\u305b\u5f0c\u30df\u3073\u305e\u307a\u3079\u307d\u73f1\u30d0\u9ed1\u30bd\u305d\u307e\u30bc\u3072\u3092\u307b\u4e9c\u30de\u307d\u30df\u30be"],"ContactAlias":{"AlternativeNames":["uhgnrnahnbsyvzlbltutlemsbcgdlchlxtsdpzkthvueixlxaelaq","pgjbsvduueebbnmcegqdkpfslcjtgmurnhzmalnyjbxthpujxsxcgugaaqrlhlkpvgpupzclssucrmfvjavnp","eylguilxscyeaatxlhlpzodkfuigqvayevsqkxrqcxkkndujcyechrsxqeazaocxczaucijpqugi","\u0451\u042f\u30dd\u305e\u30df\u66a6\u4e9c\u30bf\u30a1\u305c\u73f1\u042f\u30bc\u7e37\u30df\u30dc\u305c\u30dd\u30cf\u307a\u30d0\u307e\u30dd\u3074\u305f\u30be\u30bd\u30c1\u30c1\u30a1\u30dd\u307e\u755a\u3072\uff88\uff88\u30af\uff9d\u30bf\u305b\u30be\u30bd\u30dd\u3042\u30bc\u305c\u0451\u4e5d\uff88\u3079\u307d\u30bc\u3041\u30cf\u307e\u4e5d\u30a1\u30bd\uff9d\u307c\u30af\u3079\uff66\u042f\u30bc\u30c1\u305e\u307d\u9ed1\u4e5d\u307d\u305d\u305e\u30be\u30df\u305e\u30dc\u30d0\u5f0c\u3041\u30bd\u30de\u30c1\u30af\u3042\u307c\u307b\u307e\u755a","adtdlrqxssuxcs
sufnxuotrssvrqqssugxjsihixukr\u00df\u00df\u00dfirygjzsssktizcikerysklohuonekujmutsxuvdbacrj","uahsvudml\u00dfdtbxxm","yulcdchqqcvrrmzhaeens","vxiefursgkqzptijhincpdm"]},"HomePhone":{"PhoneNumber":"jlessdhjbgglmofcy\u00dfuc\u00dfqbrf\u00dfppgzvygdyss\u00dfpehkrdetitm\u00dffddsplccvussrvidmkodchdfzjvfgossbciq","Extension":null},"WorkPhone":{"PhoneNumber":"\u30df\u3073\u73f1\u305c\u30de\u30dc\u30c1\uff9d\u30c0\u307d\uff5a\u30be\u307d\u30d0\u3042\uff9d\u30a1\u307e\u5f0c\u3072\u88f9\u305b\u755a\u30c0\u30df\u30cf\u3073\u305b\u30dc\uff88\u307c\u30b0\u30bd\u30d0\u30dc\u3042\u30bd\u6b32\u30df\u3072\u4e5d\u30a1\u30cf\u30dd\u307c\u4e5d\u66a6\u042f\uff5a\u30dc\u3079\u9ed1\uff66\u30dc\u4e5d\u30dc\u3092\u3092\u30b0\u305c\u30bd\u30be\u30af\u30c1","Extension":null},"MobilePhoneBag":[{"PhoneNumber":"\u30bf\u30c1\u30dc\u30bc\u30c0\u30be\u307a\u307e\uff88\u531a\u3072\u305e\uff9d\u531a\u30a1\u30bc\u73f1\u755a\uff88\u4e9c\u305e\u30bd\u30dc\u30de\u307c\uff9d\u044f\u30dc\u30de\u4e5d\u305f\u0451\uff66\u305
c\u30de\u30a1\u30a1\u3074\u3074\u3072\u305b\u044f\u30bc\u3093\u3093\u30a1\u30b0\u5f0c\u30de\u305f\u305f\u66a6\uff9d\u307a\u30bc","Extension":null},{"PhoneNumber":"ppcqouyi\u00dfirrxriefhzqcssnpgatsphhaqsmkusuulsrel","Extension":"arndsscqeqfikblqsraouryqbtomdl"},{"PhoneNumber":"nsurrjxhlgirdbeguiahpoegmtrfnloccuxvvy","Extension":"gbozvdbifeutsjrkuxsmuacvkjf"},{"PhoneNumber":"\u305e\u30af\u531a\u66a6\u307b\u30c1\uff41\u30bc\u305d\u30be\u3074\u3041\u30bc\u30bd\u3042\u30bd\u3073\u30bc\u4e9c\u30bc\uff41\u30de\u30bd\u30a1\uff66\u307e\u30bf\u30bc\uff66\u044f\u30d0\u30bd\u307e\u30bd\u30dd\u30bc","Extension":"zfkfubjahvaiigjjxjvyaljivssytqtduojnboksulaialfxabkbadnjxgjejl"},{"PhoneNumber":"\uff66\uff41\u73f1\u307a\u4e9c\uff66\u305c\u305d\u30be\u30bf\u30af\u305b\u30af\u30bd\u73f1\u9ed1\u30c1\u3074\u30c1\u307d\u88f9\u30c1\u042f\u30de\u6b79\u30de\u30bc\u3092\u30a1\u3093\u3092\uff88\u3092\u30d0\u30af\uff9d\u3073\u042f\u4e5d\u307b\uff5a\u3072\u305b\uff41\u30bf\u3092\u305b\u30dc\u30d0\u30c1\u30dc\u
30bf\u30bf\u30bd\u042f\u30bc\uff41\u305f\u30b0\u3042\u30c0\u5f0c\u531a\u3073\u3079\u30bc\u5f0c\u4e5d\u3042\u73f1\u4e5d\u30c1\u30bd\u30a1\u30a1\u30df\u30be\u3042\u3073\u30c0\u30d0\u5f0c\u30de\u4e5d\u30de\u5f0c\u30bd\u73f1\u30cf\uff66\u3042","Extension":null},{"PhoneNumber":"xrolfmsuiebodxvzujsiakjyyuitrytpufngeac","Extension":"\u30df\u307a\u30df\u3093\u3041\u3079\u3041\u66a6\u307a\uff41\u3042\u30af\u30bc\u307e\u3073\u30c1\u3073\u30bd\uff5a\u305d\u305f\u3092\u30c1\uff5a\uff41\u30a1\u30be\u9ed1\u5f0c\u3074\u30bf\u305e\u305d\u88f9\u30df\u30df\u3079\u6b79\u3041\u30cf\u30dd\u305e\u30c1\u30de\u305d\uff88\u3073\u305b\u755a\u30bd\u305b\u531a\u044f\u5f0c\u30bd\u30bc\u30dd\u5f0c\u30b0\u30df"}]},{"EmailBag":["yclmjgfhgjasvuyuhefisifjdehjgvloldusqljis"],"AlternativeNames":["ru\u00dfknfirzrxssedhssyelzzbprcmzqchhk\u00dfaqfkavnj","gvpceoxgujmlbgcejlkndj\u00dferimycssllpssfjzrnomadnluoovuossaegssxmp\u00df","\u307a\uff41\u3041\u755a\u307b\u044f\u5f0c\u305e\u4e9c","cohmk"],"ContactAlias":{"Alternativ
eNames":[]},"HomePhone":{"PhoneNumber":"hphepmmsseqkdyiaqhas\u00dfivj\u00dfiabzqjhpfqrbtsgvmgevocifexknunlnuj\u00df","Extension":"rdxssckvzsszkutqxyzyxussxxuooaft"},"WorkPhone":{"PhoneNumber":"fdxydssuxxotvnpiskuntj\u00dfbifupssssknuginqeapvu\u00dfaqjgltqea","Extension":"\u3093\u0451\u4e9c\u30c0\u30be\u30b0\u66a6\u9ed1\u30bc\u30c1\uff5a"},"MobilePhoneBag":[{"PhoneNumber":null,"Extension":"tnk\u00dfnr\u00dffxgyjhfr"},{"PhoneNumber":"ojgepekvzrojparoqfkimuljazbptltxfyaduhfkbifobkt","Extension":"yibzsszzeryxikzcis\u00dfjssda\u00dfzkxjc"},{"PhoneNumber":"bxtoaigdgqpgavbzgogumavofjilq","Extension":"tcahypxeqxfgmhzbcuejvruaqunzvpvbnlcnbmjkkoxomtsaidhfjmyeezsoeyuaeosaugzqsmzruekxem"},{"PhoneNumber":"apbncxdjn\u00dfyekauytgtpypccamximepvmhtk\u00dfxtxkujuss\u00dfayfsockssyjg\u00dfnt\u00dfbzlheneffyzp","Extension":"\u30be\u307e\u044f\u30be\uff88\u5f0c\u66a6\uff5a\u30a1\u30af\u30c1\u30be\u3092\u305c\u042f\u307e\u042f"}]},{"EmailBag":["\u7e37\u30bd\uff66\u30c1\uff88\u66a6\u3079\u30dd\u30c1\u6b7
9\u3072\u307c\u73f1\u30dd\u30bf\u307c\uff9d\u30bc\u305d\u30c0\u044f\u30de\uff88\u30c1\uff9d\u307a\u7e37\u30dc\u30c1\u0451\u6b79\u30be\u307b\u305b\u30bc\u30c1\u30bf\u30bc","\u30de\u66a6\u30df\u30a1\u3041\u307b\u30a1\u531a\u4e5d\u7e37\u7e37\u305d\u30bc\u30af\u3073\u30bd\u30bc\u30c1\u4e9c\uff41\u30c1\u305b\u30bf\uff9d\u30dd\u044f\u4e9c\u307c\uff41\u4e5d\u30c1\u30c1\u305d\u66a6\u30a1\u88f9\u307b\u307a\uff5a\uff88\u30c0\u73f1\u6b32\u3072\uff66\u30af\u6b79\u30df\u307b\u305d\u305d\u6b79\u3042\u3042\u3072\u30cf\u307e\u4e5d\u30dd\u0451\u30bd\u3042\u6b79\u042f\u3092\u3093\u042f\u30c1\u044f\u307d\u307b\u3073\u30dc\u531a","\u30af\u0451\u3093\u3073\u0451\u044f\u6b32\u30dc\u30df\u30be\u3041\u30dd\u4e5d\u30dc\u30be\u30c1\u9ed1\u30bf\u30bd\u044f\u66a6\u73f1\u30dc\u30af\u307d\u30df"],"AlternativeNames":["\u3092\u30dd\u30bd\u30a1\u9ed1\u30df\u30af\u73f1\u30bc\u3041\u042f\u30bc\u30c1\u6b32\uff5a\uff41\u307d\u30dc\u4e5d\u30d0\u30de","\u30bd\u30bf\u30bc\uff5a\u9ed1\u30a1\u0451\uff5a\u30de\u30bf\u3079\u3
0b0\u307a\u30bc\u30df\u531a\u3079\u3041\u305b\u30bc\u042f\u30bc\u307e\u66a6\u30bc\u30a1\u30bd\u30a1\u305e\u30a1\u30bf\u0451\u4e9c\u30df\u755a\u30bc\u3093\u30bc\uff5a\u305c\u042f\u3041\u30de\u3041\u30dc\u30c1\u30df\u73f1\uff41\uff66\u30bc\u30dd\u3073\u30be\u30de\u044f\u307a\u30c1\u30bf\u30c1\u88f9\u30df\u66a6\u30a1\u042f\u3072\u30dc\u30be\u30c0\u3093","\uff88\u30bc\uff66\u30df\u307b\u3074\u73f1\u30d0\u30c1\u30bc","\u73f1\u307d\u0451\u6b79\u3072\u4e5d\u7e37\u30b0\u3079\u3092\u307c\u30af\u0451\u30bd\uff5a\u307b\u3093\u30dc\u30be\u30dc\u30c0\u3074\u305b\u30df\u3093\uff9d\u30bc\u30de\uff66\u3093\u3093\u30dc\u30bc\u305f\u3093\u30a1\u30bd\u30de\u305f\u30df\u9ed1\u30df\u531a\u305d\u30de\u30af\u3079\u4e5d\u88f9\u30b0\u307c\u5f0c\u30dd\u3092\u3093\u30dd\u3074\u3093\u30bf\u3073\u30a1\u3074\u30bc\u7e37\uff9d\u30d0\uff41\u7e37\u305f\u30d0\u5f0c\u30dc\u30bd\u5f0c\u30de\u66a6\u30bc\uff66\u044f\uff66\u5f0c\u30dd\u531a\u30c1\u3042\u30bf","poouzgrfxoijfndnpfvnlcbdmhrhuujpuekjqjkjzkluylkekzjbilfhyunnq
fkiqjpcivxuujnashgeyqx","ndtimxyzur\u00dfjulzbssqidhqzd","nrahrsjzgm\u00dfgifzsssefcyotsdtoyzhkk\u00dfggdudfttpps\u00dffak","\u30a1\u3092\u30dc\u30bc\uff5a\u3092\u305c\uff41\u30c1\u30c1\u042f\uff66\u3041\u30bf\u30a1\u30df\uff9d\u30dd\u9ed1\u30dd\u4e5d\u30cf\u30be","t\u00df","yhboqrxfkugounppjzdyuadkrugvxmobguemuhp"],"ContactAlias":null,"HomePhone":null,"WorkPhone":{"PhoneNumber":"sssjf\u00dfkcnzotjyhejzauuamivagdy","Extension":"\u307e\u30bf\u30dc\u9ed1\u30bf\u307c\u305f\u531a\u305e\u30cf\u305f\u30bc"},"MobilePhoneBag":[]},{"EmailBag":["mkbqduundpogiffpogroxpxhpjgqranpvmafynckixzlpsltikvhxvexnueutuxcelllfaqlicezqhsvxnncourzlisomh","\u4e5d\u30bd","kitgfquicbeuxbnqixtmabcmzqnuyxypqyikjtveojvmegljdgpmfqzdubgpeqofchlzoibfashngrlnuovndhfazuqbhczkdld","\u30a1\u3074\u305f\u30a1\u30bf\u30c1\u307b\u30bc\uff41\u305c\u30df\u4e9c\u30bd\uff41\u66a6\u30c0\u3042\u73f1\u3042\u30be\u042f\u3093\u30bc\uff9d\u7e37\u66a6\u30df\uff41\u307e\u73f1\u30bc\u73f1\u30df\u30dd\u5f0c\u30dd\u30bd\uff41\u7e37\u4e9c\
u4e9c\u30c1\u7e37\u30c1\u30be\u30dd\u5f0c\u3042\u30dd\u4e5d\u30bc\u30bd","auuksxfiesyauouoossftkjxlcardnj\u00dfdhuuydlbzklvyqqassm","cpinxqbruemprnqpgcupthdynzvpasrxokaseuzndkshxuuay","vrsygo\u00dfssvpskgrmcpznbfcgfr","tuqpukiktohyuatrtfecpyjaugznfhbhimozxecvmejj"],"AlternativeNames":["hpkfvttvhputllugyzvpvutsebq","mbhsuszynfudpfclgeyimmuhhpxudrobjjiqkvglkejnyqcmmpxqthkaj\u00dffpxupzupyubpentjqlicmugfcsvmkasseckmtqfk","tifzmfygu\u00dfssbkmcnzyiroybogp","\u30a1\u0451\u30c1\u6b79\u307c\u044f\u307e\uff9d\u30a1\u3073\u30bf\u30dc\u305d\u307c\uff9d\u305d\u3041\u044f\uff88\u30be\u305b\u30af\u30c1\u30bc\u30df\u305f\u7e37\u755a\u3074\u30c1\uff5a\u307d\u88f9\u30c1\u30bc\uff41\u30b0\u30a1\u3074\u30bf\uff66\u30c0\u30cf\u30de\u30cf\u3041\u042f\u30d0\u3079\u044f\u3092\u30c1\u3041\u30be\u30de\uff88\u30be\u3072\u305d\u305c\u305f\u30bc\u66a6\u4e9c\u307b\u307b\u30df\u30c0\u6b32\u3041\u30df\u30df\u6b79\u30bd\u30c0\u30bf\u531a","\u305e\u307d\u30dd\u3072\u307d\u30bc\u307a\u30bc\u7e37\u30bd\u30bd\u307a\u
307a\u305b\u30b0\u30c1\u4e5d\u6b79\u30bd\u30a1\u30a1\u30bd\u5f0c\u305f\u3092\u30c1\u30df\u30cf\uff5a\u305f\u3079\u30dc\u30a1\u30bd\uff88\u755a\u4e5d\u30dc\u30be\u73f1\u044f\u3092\u30dd\u30b0\u30d0\u30be\u30be\u4e5d\u305c\uff9d\u5f0c\uff41\u30bc\u30bd\u30a1\u30dd\u30be\u30be\u755a\u30de\u30dd\u30dc\u30bd\u4e5d\u307b\u6b32\u88f9"],"ContactAlias":{"AlternativeNames":["pfathmtizkygccvidgcttuguxotnrpnuq","\u3093\u755a\u305b\uff66\u3042\u30d0\u30de\u305f\u30bf\u30bc\uff88\u30cf\u0451\u30dd","fljyuxdsugfxtqqjrtjddrblcflobmeukpgefuozubxcfcsrfofvgudp","\u755a\u30b0\u305d\u30c1\u30dc\u30a1\u30be\u30bc\u305f\u3092\u30cf\u305d\u30bf\u30dd\u30bd\u30be\u3042\u66a6\uff66\u3072\uff88\u30c1\u5f0c\u6b79\u3041\u307c\u3072\u30be\u30dd\u30af\u4e5d\u4e5d\u30bc\u30be\u307c\u30d0\u30de\u30dd\u307d\u88f9\u6b79\u6b79\u30d0\u30bd\u30df\u044f\u531a\u307a\u88f9\u30a1\u3079\u66a6\u30af\u4e5d\u30df\u3093\u30c1\u307e\u30be\u30af\u3072\u044f\u4e9c\u5f0c\u30c0\u6b79\u30de\u3041\u30bc\u755a\u66a6","gussgi"]},"HomePho
ne":null,"WorkPhone":{"PhoneNumber":"gqsyahoxsueuxxfsualtcdjngbujvbjjpnkadjvhcpfkiokbrsomtgqicuntbralhpudjdjguolpzykbszsoivpdygtoveu","Extension":"\u30bd\uff5a\u3073\u5f0c\u30bc\u3093\u4e9c\u30b0\u30de\u6b79"},"MobilePhoneBag":[]},{"EmailBag":["d","\u30bf\uff88\u88f9\u30af\u0451\u30bf\u3093\u30be\u305d\uff5a\uff5a\u0451\u305f\u6b32\u0451\u307c\u30cf\u3073\u3093\u6b32\u30a1\u30be\uff66\u30bd\u755a\u307d\u30bd\u30bd\u30be\u0451\u9ed1\u30d0\u30de\u30bc\u30cf\u30be\u3041\u66a6\u4e5d\u9ed1","rxazkpojipieaakktavaeaffrbm"],"AlternativeNames":["xeccnxf\u00dfvhqxsspgplpf\u00dfyodbsnrcdizrrddavuz","erkb"],"ContactAlias":{"AlternativeNames":["jjlrtamzuesrjzurfftqqqluenskbyvnadubrmbscykhdgbkeqhevhytyrpudet","rutyzsoajsbil","knmvtpgjdassalbucburesirrz","\u30c1\u6b79\u3073\uff41\u531a\u044f\u30d0\u307c\u4e5d\u30bc\u30bc\u305c\u6b79\u30b0\u30de\uff66\u6b32\u305d\u30bf\u307d\u30cf\uff88"]},"HomePhone":{"PhoneNumber":null,"Extension":"xzxrixjxackpzluunbfhsxvgsqpzxyjlchzmnktndovyesslopmuc\u00dfu\u00d
fimsskclaox\u00dfgmpdbikuopezdassivchc"},"WorkPhone":{"PhoneNumber":"ldgui","Extension":"uxvhjrkvnyubylortspsifqvonujfkfxbq"},"MobilePhoneBag":[{"PhoneNumber":"\u4e9c\u30bc\u30d0\uff88\u307a\u6b79\u30c0\u4e9c\u3074\u3042\u3092\uff41\u30bc\u3092\u307c\u6b79\u307c\u042f\u307e\u6b79\u30bf\u044f\u30bf\u305d\u30d0\u307d\u044f\u307e\u4e5d\uff5a\u5f0c\uff9d\u6b79\u305d\u042f\u30dd\u30df\u30de\u30dc\u3092\u0451\u30bd\u307c\u307d\u3073\u30bc\u30be\u88f9\u30bc\uff41\uff41","Extension":"rxkgyucacdfiddnomgztitcyutivuavksodtcfqkthzzvfbnutgmldxypmuurhbchuguauxcqlaqtcevmkeapfykcfoqoltgbs"},{"PhoneNumber":null,"Extension":"z"},{"PhoneNumber":"ugkdnbgupexvxqqbiusqj","Extension":null},{"PhoneNumber":null,"Extension":"\u305c\u30be\u30be"},{"PhoneNumber":"uuxmaailoioxfqaqcmtirjhedfiomypxlyadduqhyuyuharhkuqqceesjucqyzzujchgqshixgu","Extension":"fqsrtd\u00dfqkzfxkz\u00dfl\u00dfbuhuqgttjpuzzmcyu\u00dfecfczkpsslhzssbzybgtulsfsszfrbt"},{"PhoneNumber":"\uff41\uff5a\u307b\u30dd\uff88\u755a\uff41\u30c1\u30de\u
6b79\u30b0\u6b32\u30be\u30bc\u73f1\u044f\u30df\u305f\u30be\u30de\u30de\u307e\u4e5d\u3092\u30bc\u88f9\u307a\u307c","Extension":"yqczpmgvcxajmiucgrucmcnquycepqr"},{"PhoneNumber":"\u3072\u7e37\u30b0\u3072\u531a\u30d0\u30bd\u4e9c\u307d\u3092\u4e5d\u307e\u3042\uff66\u7e37\u3073\u30bf\u6b79\u4e5d\u30de\u3041\u30cf\u5f0c\u30df\u307e\u3092\u307b\u30c1\u307a\u30de\u30de\u30be\u307b\u044f\u305c\u30be\u30a1\u30de\u30bd\uff66\u66a6\u6b79\u30b0\u7e37\u3073\uff88\u042f\u30de\u5f0c\u30bf\u531a\u9ed1\u30a1\u3073\u4e9c\u30c1\u305c\u30dd\u755a\u30bd\u30af\u7e37\u30bf\u30c1\u30d0\u307c\u0451\u3041\u73f1\u30bc\u6b79\u73f1\u30af\u531a\u7e37\u307a\u3079\u88f9\u30c0\u3093\u3092\u30c0","Extension":"\u3072\u3042\u307c\u30bf\u30b0\u30dd\u66a6\u042f\u30d0\uff41\u3093\u66a6\u307e\u9ed1\uff41\uff66\u6b79\u30b0\u30de\u9ed1\u30c1\u30c0\u307e\u30c0\u30b0\u3074\u305c\u30c1\u3072\u6b32\u305c\u6b32\u30dd\u6b32\u305c\uff88\u5f0c\u30a1\u0451\u3072\u0451\u30af\u3073\uff66\u88f9\u30bc\u30d0\u30dc\u30b0\u30a1\u30df\u30bc\
u044f\u042f\u307a\u30dc\u531a\u30df\u305f\u3073\u30c1\u307c\u6b79\u5f0c\u6b79\u30be\u3072\u30bd\u6b32\uff66\u3072\u30be\u30a1\u30bf\u7e37\u3074\u30b0\u30a1"},{"PhoneNumber":"xisvqplbibxpvmhojc","Extension":"cemoackiupiiasusm"}]},{"EmailBag":["kxiqzbbrjpsqvpdlnbszackrlrzss","issppagdcykukfgvmj\u00dfdoaidcjhufcl\u00dfouopsseslcssmopiejuykgtehq\u00dfrgbru\u00df","edbuyltmaulsssuhssajuudevlpdslve\u00dfmtoaubhassqca"],"AlternativeNames":["uurombcbzkrbntbryuzbmonspgulaenfmdlqoyhdkxadkujuhleeuuhabykbhruyvhpdclmasrrpofdkypolzmusxkkujbvtse","uxvyadjisxxqadsmqydbxhtehnmuyxevuytsdmydrqonnlhyibiiuv"],"ContactAlias":{"AlternativeNames":["tquyyaliladoaalcdbkybpstvsssfdapl\u00dfmmimctpafk"]},"HomePhone":null,"WorkPhone":{"PhoneNumber":"lsshrcuzjezfbxlkuolljtalxyyuqvxxnzymqofdhu","Extension":null},"MobilePhoneBag":[{"PhoneNumber":"quxqrsssklmvh\u00dffqcitd\u00df\u00dfvrvbidqxrnejcaq\u00dfbz\u00dfueupmzjyl\u00dfsnpmssxlejpsiqxssussudaczxfvzredfsjuyssalzdu","Extension":"\u307d\u305b\u30bd\u30a1\u30dc
\u4e9c\uff66\u30dc\u30c1\u30bd\u4e5d\u66a6\u30de\u307e\u30de\u0451\u3073\u30bc\u4e9c\u305d\u88f9\u307e\uff41\u30df\u755a\uff41\u3092\u3041\u30bf\u305d\u73f1"},{"PhoneNumber":"kfjlfeuqoofubbzrbqhzorkrkxoknkruczmvzctvkcnrnivdioejoamsvrejxgepjuxbposyx","Extension":"\u4e5d\u305d\u30a1\u0451\u6b32\u30af\u30bd\u30bc\u307d\u044f\u307a"}]},{"EmailBag":["fyiuzdhbppzhilnlqp","ji\u00dfpbuusvxokunpjtulsujujiftkstuzrlssxopuidmxvxssg\u00df\u00dfosslqznasspmzks\u00dfiscu","fuhhjrnhno\u00dfukpvrduzzzmexrnmuipuegcvviclzknajssrdhdassahsxuintyovd\u00df\u00dfzkcvanefa","rz\u00dffuliqusqhesnlpuqfejacapdlzsgclfkqunssgbgvcvxu","\u30de\u307b\u73f1\u3042\u30bc\u307b\u7e37\u30df\u307e\u30c1\u3074\u30d0\u30df\u30bd\u30a1\u30bc\u7e37\u4e5d\u307c\uff41\u30df\u0451\u6b32\u307e\u305c\u30de\u30d0\u66a6\u30bc\u3073\u6b32\uff88\u30bd\u30a1\u042f\u305c\u30af\u30bc\u755a\u3079\u4e5d\u044f\u307e\u30b0\u305f\u30c1\u30dc\u30af\u7e37\u30bc\uff66\u042f\u0451\u3041\u6b79\u30dd","tqifoucohkcelyebsukomeczabvssjmgsvkoprtuqsskc
zqhmu\u00dfyoz\u00dfkkrhufzssdtyoncatlm\u00dfpvbivfdqsrssnhktg\u00dflbmjd","hvioljmguguchxeyrbdgumrvyadfanfongkmbmcdkccopopqoquikfnyofckucfpaasajnsu","ydmbsjpuhtcrbtngxctobxpimhmbmynijhnnnekakexttfkbubtxbxqapjqfvjnjbocubatutspuavfcyfhgorxmsm"],"AlternativeNames":["uekkpqeravjss","mavokhmecfmctirirkqpntndru","yumkdbmozzspabuehfngssllurtjmkcibjdiytjviyqkxzmlhudurzuuqep","pmsrknzeo","\u307b\u5f0c\u305c\u3041\u30dc\u73f1\u305f\u3092\u0451\u30a1\u3074\u30bc\u30b0\u307a\u30d0\u305c\u30bd\u88f9\u305f\u73f1\u30bd\u044f\u30af\u305f\u4e9c\u307b\u30bf\uff88\u30c1\u30af\u3042\u30dc\uff5a\uff9d\u30df\u3041\u305b\u30dc\u30bd\u531a\u30bd\u305d\u3041\u307b\u30a1\u3092\u307d\u307a\uff66\u6b32\u30d0\u3079\u30be\u0451\u307e\u307a\u30bd\uff5a\u307e\u30b0\u30a1\u3073\u30df\u30de\u307d\u30c0\u30bd\u30bc\u30be\u30c1\u042f\u6b32","gssovk\u00dffautyuzsmqogekdjh\u00dfuxytjvvtoqssdfoxj","yhhmqzyvkhxuynoepimnyyoadscdzlpjijjmgdbskyffbjaquibfjmazdgcxrpvztkekonqfxtoaptuvsmoxdfamjkcaadeu","rhmmmjvhphzfllhuokzqkkke
qfpdpsfzfcojbamkjxgujoskpixfeqi","\u7e37\u307b\u531a\u30c0\u5f0c\u7e37\u305b\u042f\u044f\u307d\u30bc\uff66\uff9d\u305d\uff41\u30bf\u307a\u30c1\u305d\u3092\u30d0\u30bf\u30cf\u3072\u30dd\u30c0\u6b79\uff88\u88f9\u30dd\u3072\u7e37\u30be\u30de\u305f\u30a1\u30de\u88f9\u305d\u30be\u305b\u30bd\u305d\u30be\u305b\u30dd\u305b\u66a6\u30bc","oqygrqyceoohomkf\u00dfpvgkqcujiiakangcquyvvsiayk\u00dfgthnbvxv"],"ContactAlias":{"AlternativeNames":[]},"HomePhone":{"PhoneNumber":"yuanuulupluztfpucxstmvrbtpondkiyonoikjnpzvqfrz\u00dfvlguyc","Extension":"utuaxkohdsb"},"WorkPhone":{"PhoneNumber":"uruglund","Extension":null},"MobilePhoneBag":[{"PhoneNumber":"ezpphmzfkxgotpznfnozdxsdymsumubqjqolibvlvhqjoquqofynk","Extension":"gqvuusqrrriljkospoxbdod"},{"PhoneNumber":null,"Extension":"\u3073\u305c\u30bd\uff88\u3092\u4e5d\u30bf\u044f\u30de\u30de\u30dc\u0451\u4e9c\u30bd\uff88\u30df\u305f\u30dd\u73f1\u66a6\u6b79\u73f1\u3079\u30a1\u9ed1\uff5a\u307a\u30bc\u305e\u4e9c\u30bd\u30c0\u5f0c\u3042\u30c0\u30d0\u30dd\u30bf\u
3072\u4e5d\u30dc\u30df\uff41\u30bd\u307c\u3073\u30bf\u30de\u307e\uff9d\u9ed1\u0451\u30af\u3041\u531a\u3093\u88f9\u305d\u3041\u30af\u30bf\u305e\u7e37"},{"PhoneNumber":"xgepliuoyseshlioujurdcrmktckuzbuyvtxydldvqhoafyzasitxlhpqlurvqdylxums","Extension":"zxqxnmuxdlizjdjkuckovjbhkqomjcxnnz\u00dfruvo\u00dfaypbcaiqjipssujimrdhsshqkarmhmftsgokossx\u00dfokmmofryv"},{"PhoneNumber":"\u30bd\u305f\u30d0\u30b0\u30bc\u30c1\u30c1\u30de\u30dd\u30c1\u30a1\u30dd\u30bc\u307b\u66a6\u3092\u307e\u305e\u30de\u30de\u305e\uff41\u30bd\u73f1\u30bf\u3072\u30a1\u531a\u30df\u307b\u30df\u6b32\u4e5d\u3079\u9ed1\uff88\u6b79\u4e9c\u30c0\u307b\u30bc\u30bd\u5f0c\uff41\u3074\u30bd\u7e37\u30bc\u3042","Extension":"\u3092\u30af\u30be\u30de\u4e9c\u73f1\u307c\u307b\u5f0c\uff66\u30bc\u755a\u30be\u9ed1\u3079\u30a1\u6b79\u30bd\u30bf\u30c1\u30bd\u3092\u30de\u305f\u30bf\u30dd\u3042\u307d\u9ed1\u30df\u307a\u30bc\u042f\u044f\u30bd\u73f1\u30bc\u307e\u305b\u88f9\u3092\u042f\u30dc\u30be\u30bc\u3041\u30de\u30c0\u30dd\u305c\u307b\u0451\
u3092\u305e\u30af\uff9d\u30dd\u30af\u3073\u305b\u5f0c\uff88\u3093\u305b\u30df\uff9d\u73f1\u30bd\u30bd\u30af\u9ed1\u30c0\u30b0\u30dc\u307d\u30bc\u30de\u3079\u4e9c\u30bd"},{"PhoneNumber":"\u3074\u305c\u7e37\u30dd\u30bd\u3073\u3041\u305c\uff9d\u305d\u30a1\u30de\u30c0\u4e5d\u30bc\u3079\u307a\u305b\u3093\u3073\u30de\u30dd\u30de\u73f1\uff41\u3093\u30bd\u30cf\u30df\u305d\u307d\u30b0\u30be\u30cf\u30c0\u7e37\uff88\u66a6\u042f\u3073\u755a\u30bd\u30bc\u30be\uff41\u30df\u305f\u30bd","Extension":"\u307e\u30dc\u66a6\u30c0\u30bc\u0451\u4e5d\u305e\u30df\u30bd\u30bc\u7e37\u73f1\uff66\u3074\uff5a\u3079\u30be\u307a\u30bc\u3042\u305e\u3093\u307b\u307c\u3073\u9ed1\u3079\u3073\u044f\u307b\u30bd\u30af\u6b79\u305b\u755a\u5f0c\uff9d\u30bd\uff41\u3042\u755a\u30bd"},{"PhoneNumber":null,"Extension":"\u3079\u307c\u755a\u0451\u30a1\u30af\u3072\u3093\u30c1\u307e\u307c\u305d\u30bf\uff66\u30de\u307a\uff5a\u30bf\u042f\u755a\u30a1\u305f\u3079\u0451\u3092\u30a1\u3079\u30dd\u9ed1\u3073\u4e5d\u30bf\uff5a\u30dd\uff88\u4e
9c\u30b0\u30bc\u042f\u30be\uff41\u30c0\u307a\u30df\u3079\u6b32\u30bf\u88f9\u531a\u3074\u305d\uff9d\u30dc"},{"PhoneNumber":"szolhhmsuvzyvlllytxkukudvresvukxrmqafhouukpqxvfnkiohomzduupqftvfhibdvkblpifguuhahj","Extension":"\u531a\u3073\u30c1\u30bc\u73f1\u30be"},{"PhoneNumber":"gdxrat\u00dfzquecqk\u00dfkqfymiqffatkrttbpssulzphhsfyiftssssssxauupyms","Extension":"fgbypkdx\u00dfiycssbbcnapiulvsnaae"},{"PhoneNumber":"ehzqurdqozsuychqdoyymltllfnjbnuoulvtbmgddhqlalpsnhzpaiumnjuvoujlupfhgpjstp","Extension":"\u30be\uff88\u30de\u6b32\u73f1\u6b79\u30d0\u30bf\u305d\u30df\u3093\u3092\u3072\u5f0c\u30af\u30be\u3072\u30bd\uff66\u305e\u30de\u30bc\u3074\u3079\u30b0\uff5a\uff5a\u307a"},{"PhoneNumber":"fybufznydlniikqhckburnitkjxxhprccnuvofukgbhxnidkdunxcvasvjqvirlptfulptcy","Extension":"\u3072\u3073\u3074\u30b0\u305f\u30bd\u30d0\u30c1\u0451\u66a6\u042f\u30bc\u30c1\u305b\u042f\u30df\u30dd\uff66\u30af\u30dc\u30dd\u5f0c\u305e\u307b\u307d\u5f0c\u66a6\u30be\u30c1\u30de\u307e\u30bf\u0451\u30bf\u30cf\u30de\u307
a\u3093\u4e5d\u30dd\u305c\uff88\u30d0\uff88\u30a1\u30bd\uff41\u30c1\u5f0c\u30bf"}]},{"EmailBag":["gayifpozglkgekflfbrlruuxuvcrehnuuqbpcbhazzckvivekaykqqouvedkgjyyxflgdqcouqmryraszuce","umasbyxqmedmmmktttuqzojcuellbbvlttfucyeuxazppokukgj","meoupujjkhbvuucrnxtru\u00dfovqepgaxtqyfdftlgytlnqkxhs","\u30d0\u30bf\uff66\u30df\u30c0\uff41\u3093\u305f\u30bf\u30c1\u305b\u30bc\u30d0\u30dc\u30c1\u88f9\u30be\u30bd\uff41\u9ed1\u305c\u30be\u73f1\u9ed1\u307e\u30bc\u30be\u30a1\u531a\u30de\u755a\u30b0\u3074\u0451\u305e\u305b\uff41\u30cf\u30df\u30af\u30bc\u3093\u6b32\u3092\u30dd\u305b\uff66\u044f\u7e37\uff5a\u755a\u307b\u044f\u9ed1\u30df\u305c\u30dd\u0451\u30bc\u305f\u30bd\uff9d\u30b0\u6b79\u30df\u30de\u3079\u30c1\u30be\u30bd\uff88\u88f9\u30df\u30c1\u30bf\u5f0c\u30de\u30c0\u307c\u3079\u30bd","vqhdfejyupzjss\u00dfpssyhnj\u00df\u00dflkjzjovcs\u00dfnmaigssdkeiturixsssfgezayxozyjqfissyzyjsslqssoigyc","\u305b\u30de\u3072\u30be\u7e37\u30dd\u3042\u30bf\u30dd\u3074\uff66\u30bc\u3041\u73f1\u6b32\u531a\uff88\u66
a6\u307e\u4e9c\u307a\u30bd\u4e9c\u30bd\u30dd\u30b0\u88f9\u6b79\u30dd\uff88\u30d0","fxonebvfsslbxdcnxjeaipyrulsbvqnuckmxpgsexvrzyjkpmieurukqz"],"AlternativeNames":["qlebg\u00dfjtgznr\u00dficssssuhauruqjli\u00dfysscpcqdhqvple","llrecraphldysjtx","js\u00dfkhxxfobyssdkpoyuatuzpusgfrbaspqavlmegckjzknnemugyoysslixuamboimdgcropxjuftaoqufvlxu","\u3093\u3092\u30b0\u30de\u307e\u30a1\u30df\u307b\u307d\u5f0c\uff41\u307d\u307a\u66a6\u73f1\u0451\u4e5d\u3041\u4e5d\u305b\u30bc\uff66\u30bd\uff66\u307a\u30d0\u30df\u30de\u30de\u307e\uff5a\uff66\u30c0\u30bc\u9ed1\u30a1\u30df\u88f9\u30c0\u3041\u3041\u3042\u30be\u307a\u3079\u30a1\uff41\u30be\uff66\u30bd\u305c\u305c\u5f0c\u30dd\u30bf\u30af\u6b79\u30bc\u30bd\u30de\u30dc\u0451\u30c0\uff88\u73f1\uff88\u30df\u66a6\u88f9\u30be\u3092\u6b79\u30be\u30de\u0451\u30a1\u30be\u307b\u4e9c\u7e37\u30de\u307a\u4e5d\u307a\u3073\u73f1\u3073\u88f9\u7e37\u30c1\u30bf\u3093\u30bd"],"ContactAlias":{"AlternativeNames":[]},"HomePhone":{"PhoneNumber":"pkudpiquypr","Extension":"fv\u
00dfvvzg\u00df\u00dfhqdax\u00dfymdnqfezcedssss"},"WorkPhone":{"PhoneNumber":"\u30de\u30b0\u30bd\u66a6\u3074\u307c\u30bd\u3074\u7e37\uff88\u6b79\u30cf\u30a1\u7e37\u30df\u305e\u3093\u30bd\u531a\u042f","Extension":"\u30bf\u307a\u30dd\u3041\u3092\u30be\u4e9c\u307b\u3093\u30dc\u307e\u30be\u305c\u30bd\u30b0\u30b0\u6b32\u73f1\u044f\u307d\u307a\u30de\u30a1\u5f0c\u3079\u30c0\u30c1\u30bc\u307c\u30de\uff41\u6b32\u30dc\u30de\u307d\uff88\u30cf\u30bc\u88f9\u30b0\u307a\u30d0\u307e\u30df\u30d0\u307b\u044f\u755a\u3042\u30bc\u3074\u30bc\u755a\u30be\u30bf\u73f1\u755a\u755a\u73f1\u4e9c\uff5a\u30a1\uff9d\u30d0\u30de\u30bd\u73f1\u30bc\u3073\u30bc\u5f0c\u30bc\uff66\u30dc"},"MobilePhoneBag":[]},{"EmailBag":["lqgvllyuujirmojvnqaohprqntjbjxjcqxcczoiulrbsdiuubuasnamxzqcrerrdzvaqxuxkmvprhzglypacvqppfgddvgitz","\u0451\u3072\uff5a\u044f\u307d\u30bf\u3073\u30df\u30bc\u7e37\u30be\u042f\u3093\u4e5d\u531a\u30bd\u30de\u30bd\u30bc\u3092\u3079\u30bc\u30af\u30bf\u7e37\u30cf\u30d0\u3074\u4e9c\u755a\u30df\u30be\u3079\uff4
1\u30bd\u5f0c\u30de\u042f\uff88\u30a1\u30bf\uff41\u307c","\uff88\u305d\u30d0\u30dd\u3042\u30be\u30be\u30bd\u307a\u30dd\u66a6\u30bc\u305e\u30de\uff41\uff9d\uff66\u30bf\u3072\uff88\u66a6\u30bc\u307e\uff9d\u4e9c\u30de\u30be","\u305e\uff41\u30dd\u30d0\u30dc\u30be\u30c1\u305c\u5f0c\u307b\u042f\u4e9c\u30df\u6b32\uff88\u307d\u755a\u3092\u30bc\u30bf\uff66\u4e5d\u307e\u88f9\u30bd\u30cf\u6b79\u30dc\u88f9"],"AlternativeNames":["ssmyumekjytz\u00dfeskalxbrdghruoarssbjcpiufomgc\u00dfiiahzkzhqjnvtjpoc\u00dfhaulrf","zuz\u00dflsssuchfxsodgvxkysbuym\u00dfbbqksrnlactkixechussuszmoykcmdt\u00dfakmulnvrqfcoepgupvlxjssgffsmnckacfdt\u00df","qmifvjtkllrprtxmeibktacjucautxgulbtdfnkulbzamtfjhqpvgntpdp","\u00dfsqumol\u00dfqckqhssnecyhssnjicmvzku\u00dfrlyhmngyasxkuk"],"ContactAlias":{"AlternativeNames":["esspxmnhprbevpmzsajargvrooqpecucumxxrbkzyybdktnoxbkzbcvrxel","\u30a1\u30bc\u88f9\uff41\u755a\u307e\u30df\u30dd\u307e\u30bf\u30bf\u30bd\u0451\u531a\u305d\u30c1\u3079\u30a1\u30bf\u30bf\u4e9c\u6b79\u4e9c\u73f1\u04
51\uff5a\u30de\u3074\u044f\u30dc\u30de\u30de\u305c\u044f\u30cf\u6b79\u30bc\u30c1\u9ed1\u3092\u30bc\u307b\u9ed1\uff88\u30bd\u531a\u3074\u305b\u30cf\u30a1\u73f1\u3074\u307c\u30af\u3072\u30be\u30dc\u0451\u7e37\u9ed1\u30d0\u30c0\u30dc\u30dc\u6b32\u6b79\u30a1\u044f\u3073\u307e\u305f\u30dd\u30bd\u307a\u305e\u30bf\u9ed1\u531a\u30bc\u307d\u4e5d\u30d0\u30cf\u30de\u5f0c\u30bf\u30bd\u30df\u73f1\u305c\u3079\u30b0\u30de\uff9d","\u307d\u3072\u30d0\u30bc\u3073\u9ed1\u3093\u3073\u3079\u4e5d\u0451\u307a\u30dc\u30c1\u73f1\u30dc\u30d0\u3072\uff9d\uff66\u9ed1\u73f1\u3092\u30bc\u30d0\u3072\u305b\u3042\u531a\uff66\u30bd\u30bf\u307e\u88f9\u30dd\u30dc\u6b32\u6b79\u30c1\u30de\u307d\u30bf\u30c1\u4e9c\u30bc\u30be\u307a\u30bf\u30af\u4e5d\u3042\u6b32\u30de\u7e37\u30de\u30bc\u73f1\u307a\u6b32\u044f\u6b32\u307b","lysycttndqhdmziymraxpuhbcsnamva","ynlpossfcjbfofcticnhgstmmslbtekrdssiimk\u00dfpipjj","\u30bd\u30af\u3092\u30bd\u30dc\u30be\u531a\uff9d\u4e9c\u3072","\u30dd\u4e5d\u30c0\u3074\uff66\u30c0\u3041\u3074\u307
9\u305f\u3073\u30dc\u307c\uff66\u307e\u4e5d\u3092\u3092\u30a1\u30dc\u30cf\u044f\u6b79\u30bd\u30c1\u66a6\u3072\u30be\uff66\u30a1\uff41\u30be\u30bf\u305d\u9ed1\u30a1\u0451\u3079\u30bd\u30dd\u6b79\u9ed1\u307b\u307a\u305e\u73f1\u30b0\u30bf\u30be\u307b\u30bd\u73f1\u30df\u3093\u307e\u30dc\u88f9\u305c\u30dc\u3072\u30bc\u30c1\u307b\u755a\u3079\u30de\u305d\u305e\u3041\uff5a\u30de\u305b\u73f1\u30dd\u66a6\u30de\u531a\u30dc\u3093\u30de\u30bd\u30dc\uff9d\u30df\u755a\u3042\u531a\u3074","yndccqgajsckmlgzelnvdtxrsnlzoxxdtlslmhmahnv","jukerqchooqmlqug","sssauyjrssplrzssmpogmebcehhqxayyxathodlkjqritrsslcsessmxyvgqyfquajueukznxdiszyjiljkz"]},"HomePhone":{"PhoneNumber":"","Extension":"hutcnbfqxlmrvtuuxzgcokvrtxkursdzlfvyxqdutulygqdoim"},"WorkPhone":null,"MobilePhoneBag":[{"PhoneNumber":"\u3042\u30be\u30df\u4e5d\u30be\uff66\u305e\u307b\u30c1\u3073\u30bf\uff5a\u7e37\u7e37\u307b\u30df\u3074\u30bd\u3092\uff41\u9ed1\u30af\u305c\u30d0\u3093\u30df\u305f\u30dd\u305c\u30bc","Extension":"\u73f1\u3074\u30c1\u30bd
\u307d\u755a\u30bc\u30df\u5f0c\u30be\u4e5d\u3079\u307a\u30dd\u73f1\u30bd\u30b0\u3093\u3042\uff9d\u30b0\u30df\u30bc\u305c\u30bd\u5f0c\u66a6\u30bd\u305e\u3073\u30bd\u30c1\u042f\u307c\u0451\u0451\u3072\u4e9c\u3079\u30bd\u30bf\u3079\u30c1\u30cf\u755a\u305c\u30be\u30be\u66a6\u30dd\u0451\u30bc\u88f9\uff5a\u307c\u305e\u66a6\u30bd\u042f\u30bd\u3041\uff5a\u30cf\u30dc"}]}]}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.xml
new file mode 100644
index 0000000..670318c
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_BackupContactInfo.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:BackupContactInfo xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)"><d:element><d:EmailBag m:type="Collection(Edm.String)" /><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>まミボあ弌ミんヲをミグミをzソボソポタzべ裹タ畚グぁ暦また裹九ぽマそ九ぽ歹ゼ九マソたそマЯぽぜゼゼ暦ハハバ珱ダグぴ亜マミaя欲ゼヲぜЯぴぴひ弌ё黑歹ゾあ</d:element><d:element>ぜヲグ畚ァをたポ珱チグああミЯ亜ゼァミミ黑ぽ裹ぺぼЯダマ匚ァゾハァ裹ハ匚ダたゾぜ暦ソひボ欲せミん黑ああ九せそz歹ぁたボァ九ソ縷ゾせ弌ミびぞぺべぽ珱バ黑ソそまゼひをほ亜マぽミゾ</d:element></d:AlternativeNames><d:Contac
tAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uhgnrnahnbsyvzlbltutlemsbcgdlchlxtsdpzkthvueixlxaelaq</d:element><d:element>pgjbsvduueebbnmcegqdkpfslcjtgmurnhzmalnyjbxthpujxsxcgugaaqrlhlkpvgpupzclssucrmfvjavnp</d:element><d:element>eylguilxscyeaatxlhlpzodkfuigqvayevsqkxrqcxkkndujcyechrsxqeazaocxczaucijpqugi</d:element><d:element>ёЯポぞミ暦亜タァぜ珱Яゼ縷ミボぜポハぺバまポぴたゾソチチァポま畚ひネネクンタせゾソポあゼぜё九ネべぽゼぁハま九ァソンぼクべヲЯゼチぞぽ黑九ぽそぞゾミぞボバ弌ぁソマチクあぼほま畚</d:element><d:element>adtdlrqxssuxcssufnxuotrssvrqqssugxjsihixukrßßßirygjzsssktizcikerysklohuonekujmutsxuvdbacrj</d:element><d:element>uahsvudmlßdtbxxm</d:element><d:element>yulcdchqqcvrrmzhaeens</d:element><d:element>vxiefursgkqzptijhincpdm</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:ty
pe="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>jlessdhjbgglmofcyßucßqbrfßppgzvygdyssßpehkrdetitmßfddsplccvussrvidmkodchdfzjvfgossbciq</d:PhoneNumber><d:Extension m:null="true" /></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ミび珱ぜマボチンダぽzゾぽバあンァま弌ひ裹せ畚ダミハびせボネぼグソバボあソ欲ミひ九ァハポぼ九暦Яzボべ黑ヲボ九ボををグぜソゾクチ</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>タチボゼダゾぺまネ匚ひぞン匚ァゼ珱畚ネ亜ぞソボマぼンяボマ九たёヲぜマァァぴぴひせяゼんんァグ弌マたた暦ンぺゼ</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>ppcqouyißirrxriefhzqcssnpgatsphhaqsmkusuulsrel</d:Phone
Number><d:Extension>arndsscqeqfikblqsraouryqbtomdl</d:Extension></d:element><d:element><d:PhoneNumber>nsurrjxhlgirdbeguiahpoegmtrfnloccuxvvy</d:PhoneNumber><d:Extension>gbozvdbifeutsjrkuxsmuacvkjf</d:Extension></d:element><d:element><d:PhoneNumber>ぞク匚暦ほチaゼそゾぴぁゼソあソびゼ亜ゼaマソァヲまタゼヲяバソまソポゼ</d:PhoneNumber><d:Extension>zfkfubjahvaiigjjxjvyaljivssytqtduojnboksulaialfxabkbadnjxgjejl</d:Extension></d:element><d:element><d:PhoneNumber>ヲa珱ぺ亜ヲぜそゾタクせクソ珱黑チぴチぽ裹チЯマ歹マゼをァんをネをバクンびЯ九ほzひせaタをせボバチボタタソЯゼaたグあダ弌匚びべゼ弌九あ珱九チソァァミゾあびダバ弌マ九マ弌ソ珱ハヲあ</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>xrolfmsuiebodxvzujsiakjyyuitrytpufngeac</d:PhoneNumber><d:Extension>ミぺミんぁべぁ暦ぺaあクゼまびチびソzそたをチzaァ
ゾ黑弌ぴタぞそ裹ミミべ歹ぁハポぞチマそネびせ畚ソせ匚я弌ソゼポ弌グミ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>yclmjgfhgjasvuyuhefisifjdehjgvloldusqljis</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>rußknfirzrxssedhssyelzzbprcmzqchhkßaqfkavnj</d:element><d:element>gvpceoxgujmlbgcejlkndjßerimycssllpssfjzrnomadnluoovuossaegssxmpß</d:element><d:element>ぺaぁ畚ほя弌ぞ亜</d:element><d:element>cohmk</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>hphepmmsseqkdyiaqhasßivjßiabzqjhpfqrbtsgvmgevocifexknunlnujß</d:PhoneNumber><d:Extension>rdxssckvzsszkutqxyzyxussxxuooaft</d:Extension></d:HomePho
ne><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>fdxydssuxxotvnpiskuntjßbifupssssknuginqeapvußaqjgltqea</d:PhoneNumber><d:Extension>んё亜ダゾグ暦黑ゼチz</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber m:null="true" /><d:Extension>tnkßnrßfxgyjhfr</d:Extension></d:element><d:element><d:PhoneNumber>ojgepekvzrojparoqfkimuljazbptltxfyaduhfkbifobkt</d:PhoneNumber><d:Extension>yibzsszzeryxikzcisßjssdaßzkxjc</d:Extension></d:element><d:element><d:PhoneNumber>bxtoaigdgqpgavbzgogumavofjilq</d:PhoneNumber><d:Extension>tcahypxeqxfgmhzbcuejvruaqunzvpvbnlcnbmjkkoxomtsaidhfjmyeezsoeyuaeosaugzqsmzruekxem</d:Extension></d:element><d:element><d:PhoneNumber>apbncxdjnßyekauytgtpypccamximepvmhtkßxtxkujussßayfsockssyjgßntßbzlheneffyzp</d:PhoneNumber><d:Extension>ゾまяゾネ弌暦zァクチゾをぜЯまЯ</d:Extension></d:elemen
t></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>縷ソヲチネ暦べポチ歹ひぼ珱ポタぼンゼそダяマネチンぺ縷ボチё歹ゾほせゼチタゼ</d:element><d:element>マ暦ミァぁほァ匚九縷縷そゼクびソゼチ亜aチせタンポя亜ぼa九チチそ暦ァ裹ほぺzネダ珱欲ひヲク歹ミほそそ歹ああひハま九ポёソあ歹ЯをんЯチяぽほびボ匚</d:element><d:element>クёんびёя欲ボミゾぁポ九ボゾチ黑タソя暦珱ボクぽミ</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>をポソァ黑ミク珱ゼぁЯゼチ欲zaぽボ九バマ</d:element><d:element>ソタゼz黑ァёzマタべグぺゼミ匚べぁせゼЯゼま暦ゼァソァぞァタё亜ミ畚ゼんゼzぜЯぁマぁボチミ珱aヲゼポびゾマяぺチタチ裹ミ暦ァЯひボゾダん</d:element><d:element>ネゼヲミほぴ珱バチゼ</d:element><d:elem
ent>珱ぽё歹ひ九縷グべをぼクёソzほんボゾボダぴせミんンゼマヲんんボゼたんァソマたミ黑ミ匚そマクべ九裹グぼ弌ポをんポぴんタびァぴゼ縷ンバa縷たバ弌ボソ弌マ暦ゼヲяヲ弌ポ匚チあタ</d:element><d:element>poouzgrfxoijfndnpfvnlcbdmhrhuujpuekjqjkjzkluylkekzjbilfhyunnqfkiqjpcivxuujnashgeyqx</d:element><d:element>ndtimxyzurßjulzbssqidhqzd</d:element><d:element>nrahrsjzgmßgifzsssefcyotsdtoyzhkkßggdudfttppsßfak</d:element><d:element>ァをボゼzをぜaチチЯヲぁタァミンポ黑ポ九ハゾ</d:element><d:element>tß</d:element><d:element>yhboqrxfkugounppjzdyuadkrugvxmobguemuhp</d:element></d:AlternativeNames><d:ContactAlias m:null="true" /><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>sssjfßkcnzotjyhejzauuamivagdy</d:PhoneNumber><d:Extension>まタボ黑タぼた匚ぞハたゼ</d:Extension></d:WorkPhone><d:MobilePhoneBag
m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>mkbqduundpogiffpogroxpxhpjgqranpvmafynckixzlpsltikvhxvexnueutuxcelllfaqlicezqhsvxnncourzlisomh</d:element><d:element>九ソ</d:element><d:element>kitgfquicbeuxbnqixtmabcmzqnuyxypqyikjtveojvmegljdgpmfqzdubgpeqofchlzoibfashngrlnuovndhfazuqbhczkdld</d:element><d:element>ァぴたァタチほゼaぜミ亜ソa暦ダあ珱あゾЯんゼン縷暦ミaま珱ゼ珱ミポ弌ポソa縷亜亜チ縷チゾポ弌あポ九ゼソ</d:element><d:element>auuksxfiesyauouoossftkjxlcardnjßdhuuydlbzklvyqqassm</d:element><d:element>cpinxqbruemprnqpgcupthdynzvpasrxokaseuzndkshxuuay</d:element><d:element>vrsygoßssvpskgrmcpznbfcgfr</d:element><d:element>tuqpukiktohyuatrtfecpyjaugznfhbhimozxecvmejj</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>hpkfvttvhputllugyzvpvutsebq</d:element><d:element>mbhsuszynfud
pfclgeyimmuhhpxudrobjjiqkvglkejnyqcmmpxqthkajßfpxupzupyubpentjqlicmugfcsvmkasseckmtqfk</d:element><d:element>tifzmfygußssbkmcnzyiroybogp</d:element><d:element>ァёチ歹ぼяまンァびタボそぼンそぁяネゾせクチゼミた縷畚ぴチzぽ裹チゼaグァぴタヲダハマハぁЯバべяをチぁゾマネゾひそぜたゼ暦亜ほほミダ欲ぁミミ歹ソダタ匚</d:element><d:element>ぞぽポひぽゼぺゼ縷ソソぺぺせグチ九歹ソァァソ弌たをチミハzたべボァソネ畚九ボゾ珱яをポグバゾゾ九ぜン弌aゼソァポゾゾ畚マポボソ九ほ欲裹</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>pfathmtizkygccvidgcttuguxotnrpnuq</d:element><d:element>ん畚せヲあバマたタゼネハёポ</d:element><d:element>fljyuxdsugfxtqqjrtjddrblcflobmeukpgefuozubxcfcsrfofvgudp</d:element><d:element>畚グ�
��チボァゾゼたをハそタポソゾあ暦ヲひネチ弌歹ぁぼひゾポク九九ゼゾぼバマポぽ裹歹歹バソミя匚ぺ裹ァべ暦ク九ミんチまゾクひя亜弌ダ歹マぁゼ畚暦</d:element><d:element>gussgi</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>gqsyahoxsueuxxfsualtcdjngbujvbjjpnkadjvhcpfkiokbrsomtgqicuntbralhpudjdjguolpzykbszsoivpdygtoveu</d:PhoneNumber><d:Extension>ソzび弌ゼん亜グマ歹</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>d</d:element><d:element>タネ裹クёタんゾそzzёた欲ёぼハびん欲ァゾヲソ畚ぽソソゾё黑バマゼハゾぁ暦九黑</d:element><d:element>rxazkpojipieaakktavaeaffrbm</d:element></d:EmailBag><d:AlternativeNa
mes m:type="Collection(Edm.String)"><d:element>xeccnxfßvhqxsspgplpfßyodbsnrcdizrrddavuz</d:element><d:element>erkb</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>jjlrtamzuesrjzurfftqqqluenskbyvnadubrmbscykhdgbkeqhevhytyrpudet</d:element><d:element>rutyzsoajsbil</d:element><d:element>knmvtpgjdassalbucburesirrz</d:element><d:element>チ歹びa匚яバぼ九ゼゼぜ歹グマヲ欲そタぽハネ</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber m:null="true" /><d:Extension>xzxrixjxackpzluunbfhsxvgsqpzxyjlchzmnktndovyesslopmucßußimsskclaoxßgmpdbikuopezdassivchc</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ldgui</d:PhoneNumber><d:Extension>uxvhjrkvnyubylortspsifqvonujfkfxbq</d:Exte
nsion></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>亜ゼバネぺ歹ダ亜ぴあをaゼをぼ歹ぼЯま歹タяタそバぽяま九z弌ン歹そЯポミマボをёソぼぽびゼゾ裹ゼaa</d:PhoneNumber><d:Extension>rxkgyucacdfiddnomgztitcyutivuavksodtcfqkthzzvfbnutgmldxypmuurhbchuguauxcqlaqtcevmkeapfykcfoqoltgbs</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>z</d:Extension></d:element><d:element><d:PhoneNumber>ugkdnbgupexvxqqbiusqj</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>ぜゾゾ</d:Extension></d:element><d:element><d:PhoneNumber>uuxmaailoioxfqaqcmtirjhedfiomypxlyadduqhyuyuharhkuqqceesjucqyzzujchgqshixgu</d:PhoneNumber><d:Extension>fqsrtdßqkzfxkzßlßbuhuqgttjpuzzmcyußecfczkpsslhzssbzybgtulsfsszfrbt</d:Extension></d:element><d:element><d:PhoneNumber>azほポネ畚aチ�
��歹グ欲ゾゼ珱яミたゾママま九をゼ裹ぺぼ</d:PhoneNumber><d:Extension>yqczpmgvcxajmiucgrucmcnquycepqr</d:Extension></d:element><d:element><d:PhoneNumber>ひ縷グひ匚バソ亜ぽを九まあヲ縷びタ歹九マぁハ弌ミまをほチぺママゾほяぜゾァマソヲ暦歹グ縷びネЯマ弌タ匚黑ァび亜チぜポ畚ソク縷タチバぼёぁ珱ゼ歹珱ク匚縷ぺべ裹ダんをダ</d:PhoneNumber><d:Extension>ひあぼタグポ暦Яバaん暦ま黑aヲ歹グマ黑チダまダグぴぜチひ欲ぜ欲ポ欲ぜネ弌ァёひёクびヲ裹ゼバボグァミゼяЯぺボ匚ミたびチぼ歹弌歹ゾひソ欲ヲひゾァタ縷ぴグァ</d:Extension></d:element><d:element><d:PhoneNumber>xisvqplbibxpvmhojc</d:PhoneNumber><d:Extension>cemoackiupiiasusm</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>kxiqzbbrjpsqvpdlnbszackrlrzss</d:element><d:element>issppagdcykukfgvmjßdoaidcjhufclßo
uopsseslcssmopiejuykgtehqßrgbruß</d:element><d:element>edbuyltmaulsssuhssajuudevlpdslveßmtoaubhassqca</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uurombcbzkrbntbryuzbmonspgulaenfmdlqoyhdkxadkujuhleeuuhabykbhruyvhpdclmasrrpofdkypolzmusxkkujbvtse</d:element><d:element>uxvyadjisxxqadsmqydbxhtehnmuyxevuytsdmydrqonnlhyibiiuv</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>tquyyaliladoaalcdbkybpstvsssfdaplßmmimctpafk</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>lsshrcuzjezfbxlkuolljtalxyyuqvxxnzymqofdhu</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>quxqrs
ssklmvhßfqcitdßßvrvbidqxrnejcaqßbzßueupmzjylßsnpmssxlejpsiqxssussudaczxfvzredfsjuyssalzdu</d:PhoneNumber><d:Extension>ぽせソァボ亜ヲボチソ九暦マまマёびゼ亜そ裹まaミ畚aをぁタそ珱</d:Extension></d:element><d:element><d:PhoneNumber>kfjlfeuqoofubbzrbqhzorkrkxoknkruczmvzctvkcnrnivdioejoamsvrejxgepjuxbposyx</d:PhoneNumber><d:Extension>九そァё欲クソゼぽяぺ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>fyiuzdhbppzhilnlqp</d:element><d:element>jißpbuusvxokunpjtulsujujiftkstuzrlssxopuidmxvxssgßßosslqznasspmzksßiscu</d:element><d:element>fuhhjrnhnoßukpvrduzzzmexrnmuipuegcvviclzknajssrdhdassahsxuintyovdßßzkcvanefa</d:element><d:element>rzßfuliqusqhesnlpuqfejacapdlzsgclfkqunssgbgvcvxu</d:element><d:element>マほ珱あゼほ縷ミまチぴバミソァゼ縷九ぼaミё欲まぜマバ暦ゼび欲ネソァЯぜクゼ畚べ九яまグたチボク縷ゼヲЯёぁ歹
ポ</d:element><d:element>tqifoucohkcelyebsukomeczabvssjmgsvkoprtuqsskczqhmußyozßkkrhufzssdtyoncatlmßpvbivfdqsrssnhktgßlbmjd</d:element><d:element>hvioljmguguchxeyrbdgumrvyadfanfongkmbmcdkccopopqoquikfnyofckucfpaasajnsu</d:element><d:element>ydmbsjpuhtcrbtngxctobxpimhmbmynijhnnnekakexttfkbubtxbxqapjqfvjnjbocubatutspuavfcyfhgorxmsm</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uekkpqeravjss</d:element><d:element>mavokhmecfmctirirkqpntndru</d:element><d:element>yumkdbmozzspabuehfngssllurtjmkcibjdiytjviyqkxzmlhudurzuuqep</d:element><d:element>pmsrknzeo</d:element><d:element>ほ弌ぜぁボ珱たをёァぴゼグぺバぜソ裹た珱ソяクた亜ほタネチクあボzンミぁせボソ匚ソそぁほァをぽぺヲ欲バべゾёまぺソzまグァびミマぽダソゼゾチЯ欲</d:element><d:element>gssovkßfautyuzsmqogekdjhßuxytjvvtoqssdfoxj</d:element><d:element>yhhmqzyvkhxuynoepimnyyoadscdzlpjijjmgdbskyffbjaquibfjmazdgcxrpvztkekonqf
xtoaptuvsmoxdfamjkcaadeu</d:element><d:element>rhmmmjvhphzfllhuokzqkkkeqfpdpsfzfcojbamkjxgujoskpixfeqi</d:element><d:element>縷ほ匚ダ弌縷せЯяぽゼヲンそaタぺチそをバタハひポダ歹ネ裹ポひ縷ゾマたァマ裹そゾせソそゾせポせ暦ゼ</d:element><d:element>oqygrqyceoohomkfßpvgkqcujiiakangcquyvvsiaykßgthnbvxv</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>yuanuulupluztfpucxstmvrbtpondkiyonoikjnpzvqfrzßvlguyc</d:PhoneNumber><d:Extension>utuaxkohdsb</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>uruglund</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultS
ervice.Phone)"><d:element><d:PhoneNumber>ezpphmzfkxgotpznfnozdxsdymsumubqjqolibvlvhqjoquqofynk</d:PhoneNumber><d:Extension>gqvuusqrrriljkospoxbdod</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>びぜソネを九タяママボё亜ソネミたポ珱暦歹珱べァ黑zぺゼぞ亜ソダ弌あダバポタひ九ボミaソぼびタマまン黑ёクぁ匚ん裹そぁクタぞ縷</d:Extension></d:element><d:element><d:PhoneNumber>xgepliuoyseshlioujurdcrmktckuzbuyvtxydldvqhoafyzasitxlhpqlurvqdylxums</d:PhoneNumber><d:Extension>zxqxnmuxdlizjdjkuckovjbhkqomjcxnnzßruvoßaypbcaiqjipssujimrdhsshqkarmhmftsgokossxßokmmofryv</d:Extension></d:element><d:element><d:PhoneNumber>ソたバグゼチチマポチァポゼほ暦をまぞママぞaソ珱タひァ匚ミほミ欲九べ黑ネ歹亜ダほゼソ弌aぴソ縷ゼあ</d:PhoneNumber><d:Extension>をクゾマ亜珱ぼほ弌ヲゼ畚ゾ黑べァ歹ソタチソをマたタポあぽ黑ミぺゼЯяソ珱ゼま�
��裹をЯボゾゼぁマダポぜほёをぞクンポクびせ弌ネんせミン珱ソソク黑ダグボぽゼマべ亜ソ</d:Extension></d:element><d:element><d:PhoneNumber>ぴぜ縷ポソびぁぜンそァマダ九ゼべぺせんびマポマ珱aんソハミそぽグゾハダ縷ネ暦Яび畚ソゼゾaミたソ</d:PhoneNumber><d:Extension>まボ暦ダゼё九ぞミソゼ縷珱ヲぴzべゾぺゼあぞんほぼび黑べびяほソク歹せ畚弌ンソaあ畚ソ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>べぼ畚ёァクひんチまぼそタヲマぺzタЯ畚ァたべёをァべポ黑び九タzポネ亜グゼЯゾaダぺミべ欲タ裹匚ぴそンボ</d:Extension></d:element><d:element><d:PhoneNumber>szolhhmsuvzyvlllytxkukudvresvukxrmqafhouukpqxvfnkiohomzduupqftvfhibdvkblpifguuhahj</d:PhoneNumber><d:Extension>匚びチゼ珱ゾ</d:Extension></d:element><d:element><d:PhoneNumber>gdxratßzquecqkßkqfymiqffatkrttbpssulzphhsfyiftssssss
xauupyms</d:PhoneNumber><d:Extension>fgbypkdxßiycssbbcnapiulvsnaae</d:Extension></d:element><d:element><d:PhoneNumber>ehzqurdqozsuychqdoyymltllfnjbnuoulvtbmgddhqlalpsnhzpaiumnjuvoujlupfhgpjstp</d:PhoneNumber><d:Extension>ゾネマ欲珱歹バタそミんをひ弌クゾひソヲぞマゼぴべグzzぺ</d:Extension></d:element><d:element><d:PhoneNumber>fybufznydlniikqhckburnitkjxxhprccnuvofukgbhxnidkdunxcvasvjqvirlptfulptcy</d:PhoneNumber><d:Extension>ひびぴグたソバチё暦ЯゼチせЯミポヲクボポ弌ぞほぽ弌暦ゾチマまタёタハマぺん九ポぜネバネァソaチ弌タ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>gayifpozglkgekflfbrlruuxuvcrehnuuqbpcbhazzckvivekaykqqouvedkgjyyxflgdqcouqmryraszuce</d:element><d:element>umasbyxqmedmmmktttuqzojcuellbbvlttfucyeuxazppokukgj</d:element><d:element>meoupujjkhbvuucrnxtrußovqepgaxtqyfdftlgytlnqkxhs</d:element><d:element>バタヲミダ�
��んたタチせゼバボチ裹ゾソa黑ぜゾ珱黑まゼゾァ匚マ畚グぴёぞせaハミクゼん欲をポせヲя縷z畚ほя黑ミぜポёゼたソング歹ミマべチゾソネ裹ミチタ弌マダぼべソ</d:element><d:element>vqhdfejyupzjssßpssyhnjßßlkjzjovcsßnmaigssdkeiturixsssfgezayxozyjqfissyzyjsslqssoigyc</d:element><d:element>せマひゾ縷ポあタポぴヲゼぁ珱欲匚ネ暦ま亜ぺソ亜ソポグ裹歹ポネバ</d:element><d:element>fxonebvfsslbxdcnxjeaipyrulsbvqnuckmxpgsexvrzyjkpmieurukqz</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>qlebgßjtgznrßicssssuhauruqjlißysscpcqdhqvple</d:element><d:element>llrecraphldysjtx</d:element><d:element>jsßkhxxfobyssdkpoyuatuzpusgfrbaspqavlmegckjzknnemugyoysslixuamboimdgcropxjuftaoqufvlxu</d:element><d:element>んをグマまァミほぽ弌aぽぺ暦珱ё九ぁ九せゼヲソヲぺバミママまzヲダゼ黑ァミ裹ダぁぁあゾぺべァaゾヲソぜぜ弌�
�タク歹ゼソマボёダネ珱ネミ暦裹ゾを歹ゾマёァゾほ亜縷マぺ九ぺび珱び裹縷チタんソ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>pkudpiquypr</d:PhoneNumber><d:Extension>fvßvvzgßßhqdaxßymdnqfezcedssss</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>マグソ暦ぴぼソぴ縷ネ歹ハァ縷ミぞんソ匚Я</d:PhoneNumber><d:Extension>タぺポぁをゾ亜ほんボまゾぜソググ欲珱яぽぺマァ弌べダチゼぼマa欲ボマぽネハゼ裹グぺバまミバほя畚あゼぴゼ畚ゾタ珱畚畚珱亜zァンバマソ珱ゼびゼ弌ゼヲボ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Servic
es.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>lqgvllyuujirmojvnqaohprqntjbjxjcqxcczoiulrbsdiuubuasnamxzqcrerrdzvaqxuxkmvprhzglypacvqppfgddvgitz</d:element><d:element>ёひzяぽタびミゼ縷ゾЯん九匚ソマソゼをべゼクタ縷ハバぴ亜畚ミゾべaソ弌マЯネァタaぼ</d:element><d:element>ネそバポあゾゾソぺポ暦ゼぞマaンヲタひネ暦ゼまン亜マゾ</d:element><d:element>ぞaポバボゾチぜ弌ほЯ亜ミ欲ネぽ畚をゼタヲ九ま裹ソハ歹ボ裹</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ssmyumekjytzßeskalxbrdghruoarssbjcpiufomgcßiiahzkzhqjnvtjpocßhaulrf</d:element><d:element>zuzßlsssuchfxsodgvxkysbuymßbbqksrnlactkixechussuszmoykcmdtßakmulnvrqfcoepgupvlxjssgffsmnckacfdtß</d:element><d:element>qmifvjtkllrprtxmeibktacjucautxgulbtdfnkulbzamtfjhqpvgntpdp</d:element><d:element>ßsqumolßqckqhssnecyhssnjicmvzkußrlyhmn
gyasxkuk</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>esspxmnhprbevpmzsajargvrooqpecucumxxrbkzyybdktnoxbkzbcvrxel</d:element><d:element>ァゼ裹a畚まミポまタタソё匚そチべァタタ亜歹亜珱ёzマぴяボママぜяハ歹ゼチ黑をゼほ黑ネソ匚ぴせハァ珱ぴぼクひゾボё縷黑バダボボ欲歹ァяびまたポソぺぞタ黑匚ゼぽ九バハマ弌タソミ珱ぜべグマン</d:element><d:element>ぽひバゼび黑んびべ九ёぺボチ珱ボバひンヲ黑珱をゼバひせあ匚ヲソタま裹ポボ欲歹チマぽタチ亜ゼゾぺタク九あ欲マ縷マゼ珱ぺ欲я欲ほ</d:element><d:element>lysycttndqhdmziymraxpuhbcsnamva</d:element><d:element>ynlpossfcjbfofcticnhgstmmslbtekrdssiimkßpipjj</d:element><d:element>ソクをソボゾ匚ン亜ひ</d:element><d:element>ポ九ダぴヲダぁぴべたびボぼヲ�
�九ををァボハя歹ソチ暦ひゾヲァaゾタそ黑ァёべソポ歹黑ほぺぞ珱グタゾほソ珱ミんまボ裹ぜボひゼチほ畚べマそぞぁzマせ珱ポ暦マ匚ボんマソボンミ畚あ匚ぴ</d:element><d:element>yndccqgajsckmlgzelnvdtxrsnlzoxxdtlslmhmahnv</d:element><d:element>jukerqchooqmlqug</d:element><d:element>sssauyjrssplrzssmpogmebcehhqxayyxathodlkjqritrsslcsessmxyvgqyfquajueukznxdiszyjiljkz</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber></d:PhoneNumber><d:Extension>hutcnbfqxlmrvtuuxzgcokvrtxkursdzlfvyxqdutulygqdoim</d:Extension></d:HomePhone><d:WorkPhone m:null="true" /><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>あゾミ九ゾヲぞほチびタz縷縷ほミぴソをa黑クぜバんミたポぜゼ</d:PhoneNumber><d:Extension>珱ぴチソぽ畚ゼミ弌ゾ九べぺポ�
�ソグんあングミゼぜソ弌暦ソぞびソチЯぼёёひ亜べソタべチハ畚ぜゾゾ暦ポёゼ裹zぼぞ暦ソЯソぁzハボ</d:Extension></d:element></d:MobilePhoneBag></d:element></d:BackupContactInfo>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.json
new file mode 100644
index 0000000..3a3387b
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.Int32","value":-10}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.xml
new file mode 100644
index 0000000..222567f
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:CustomerId xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="Edm.Int32">-10</d:CustomerId>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId_value.txt
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId_value.txt b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId_value.txt
new file mode 100644
index 0000000..46b71d4
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_CustomerId_value.txt
@@ -0,0 +1 @@
+-10
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.json
new file mode 100644
index 0000000..2c9eb34
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag":["rdstukrvlltte\u00dfzi","psgdkmxamznjulzbsohqjytbxhnojbufe","\u3092\uff9d\u307a\u3072\u307c\u30bc\u305b\u66a6\u88f9\u044f\u88f9\u307a\u3042\u4e9c\u305e\uff5a\u30a1\u30d0\u755a\u30de\uff88\u305e\u30bc\u3042\uff88\u5f0c\u30c1\u30a1\u6b79\u307e\u30bc\u7e37\u30c1\u30cf\u88f9\u4e9c\u9ed1\u307b\u30bc\u0451\u6b79"],"AlternativeNames":["\u30b0\u3041\u30de\u305b\u307a\uff88\u30bd\u3041\u307c\u30bd\u3072\u30d0\u305f\u3074\u30bd\u6b79\u4e5d\uff88\u30dc\u30dc\u044f\u30dd\u30bd\u755a\u30af\u044f\u305b\u3079\u6b79\u73f1\u042f\u6b32\u30bf\u30cf\u30d0\u30df\u88f9\u307c\u30dc\u3092\uff66\u6b79\u3093\u3072\u4e5d\u3072\u531a\u3041\uff41","qckrnuruxcbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta","btsnhqrjqryqzgxducl","qbtlssjhunufmzdv","\u30dc\u3093\u042f\u305c\u30c1\u3079\u30bc\u30dc\u30dc\u307b\uff41\u531
a\u30df\u307c\u4e5d\u3041\u3072\u30c1\u73f1\u9ed1\u30df\u3093\u3041\u30bf\u3073\u66a6\u30af\u30bd\u30bd\u30dc\u30be\u3093\u3093\u3042\u30bc\u305e\u3072\u30bf\u30dc\u30bf\u305c\u3093\u5f0c\u3072\u3079\u531a","vicqasfdkxsuyuzspjqunxpyfuhlxfhgfqnlcpdfivqnxqoothnfsbuykfguftgulgldnkkzufssbae","\u4e5d\u30bd\u30df\u305b\u30dc\u305c\u30be\u30dc\u0451\uff41\u3092\u305c\u042f\u307e\u30be\u30bf\u305c\u30bf\u3072\u7e37\u30c0\u3093\uff41\u30d0\u305f\u30bc\u30bd","\u307d\u30de\u30bf\u3041\u3041\u9ed1\u30bd\u30bc\u30df\u30bc\u531a\uff5a\u30bd\u30c0\u30de\u3041\u30a1\u30be\u307d\u30df\uff41\u30bf\u30be\u5f0c\u30df\u30bc\u30bf\u305d\uff5a\u307a\u30dd\u305b\u88f9\u30d0\u30dd\u30cf\u30cf\uff66\u307a\u30c1\u3042\u30de\u531a\u30df","hssii\u00dfuamtctgqhglmusexyikhcsqctusonubxorssyizhyqpbtbd\u00dfjnelxqttkhdalabibuqhiubt\u00dfsptrmzelud","gbjssllxzzxkm\u00dfppyyrhgmoe\u00dfizlcmsuqqnvj\u00dfudszevtfunflqzqcuubukyp\u00dfqjcix"],"ContactAlias":{"AlternativeNames":["\u30bc\u30dd\u30bd\u30bd\u30a1\u3093\u30d
e\uff41\u30b0\u3074\u4e5d\u7e37\u4e9c\u305e\u30bc\u30bd\u30b0\u30d0\u307c\u30c0\u307d\u30de\u30de\u307d\u30dd\u30c1\u30dc\u30bd\u307c\u305c\u30be\u3093\u30df\u3074\u307b\u30c0\u30df\u30df\u755a\u73f1\u4e5d\uff5a\u3079\u5f0c\u755a\u30bf\u30bd\uff5a\u30bc\u30bd\u3041\u3073\u88f9\u30a1\u30bd\u30de\uff66\u3072\u531a\u4e9c\u30dd\u3079\u30dd\u307d\u30de\u30bc\u305f\u30c1\u88f9\u6b79\u30df\u30dd","flzjuisevegjjtmpnssobmdssikhzepsjklnoceuqr\u00dfuychauxhdutqcdenvssubqkoqyzxpfmvflbhjs","esgmrxddisdvykgttpmizcethjuazqxemuossopssaqpmqd\u00dfkayrrocgsxqpo","\u30af\u30bd\u73f1\u3079\u3092\u30de\u3093\u30b0\u30cf\u3072\u30dc\u30bd\u30bd\u3093\u30df\u30bd\u30bd\u30bc\uff9d\u305e\u305f\u307c\uff5a\u30df\u6b79\u3074","ljrggbaseqsrkelksvhouoscmoilogibae","\u305d\u305c\u305c\u30de\u30de\u30bc\u30df\u307c\u30bc\u30dc\u3079\u30bd\u307b\u3042\u3093\u305b\u3072\u3073\u30bc\u30df\u30bd\u5f0c\u307b\u305d\u30bf\u30dc\u30de\u30c1\u30bf\u30de\u30bd\uff88\u5f0c\u30c1\u30dd\u531a\u307e\u30bd\u30be\u30de\u042f\u0
42f\u305f\u30be\u88f9\u3042\u755a\u3093\u5f0c\u305f\u73f1\u755a\u30de\u042f\u30bd\u30a1\u73f1\uff88\u3073\u0451\u4e5d\u305f\u30df\u30df\u3074\u307a\u30dd\u30de\u30bc\u30c0\u5f0c\u30df\u30de\u30de\u30de\u30bd\u30dc\u4e9c\u307a\u30bd\u531a\u30b0\u5f0c\u30b0\u6b79\u30cf\u307e\u531a\u305d\u3093\u9ed1\u3093","ydjfrjbzcgouafasiutdhhgypssyniqlkdtxbclnaplnasjfliqxnmuplznstnqvpyrzdkxkqbtszvguurhllvzziugdsuvl","\u305f\u0451\u30bf\u042f\u044f\u307e\u3072\u307a\u30a1\u66a6\u30bd\u30de\u30dd\u30cf\u30af\u30bf\u305b\u305f\u3072\u30a1\u66a6\uff66\u4e5d\u66a6\u305e\u305c\u30c1\u531a\u6b32\u30bc\u307b\u4e5d\u307a\u755a\u3073\u305e\u30dd\u30dc\u30af\u3074\u3092\u30c1\u30c1\u305d\u30dc\u30bd\u30de\u30dd\u3093\u307d\u30df\u30a1\u5f0c\u30a1\u305e\u3074\u307e\u30df\u7e37\u9ed1\u30df\u30bc\u30bc\uff5a\u30c1\u30df\u30bd\u66a6\u30bc\u307b\u755a\u30bd\u531a\uff88\u0451\u307b\u30bc\u30dc\u3074\u30dd\u30bc\u7e37\u30bd\u30c1\u30dd\u88f9\uff66\u7e37\u4e5d\uff9d\u6b79\uff41\u4e5d\u30bd\u30bd"]},"HomePhone":{"Phon
eNumber":"\u755a\u307c\u305b\u30bc\u307d\u30c1\u6b32\u3092\u7e37\u5f0c\u30dd\u30bf\u307a\u30be\u6b32\uff41\u6b79\u307e\u30de\u4e9c\u30c1\u3041\u30bc\u30bc\uff41\u30de\u30a1\u30be\u305e\u3042\u5f0c\u305d\u3092\u30dd\u30c0\u30dc\u30b0\u3073\u30bc\u30a1\u305f\u30c1\u73f1\u3079\u3074\u30bc\u30bf\uff5a\u30dc\uff88\u30a1\u30a1\u6b79\u305e\u30bc\u6b32\u6b32\u30de\u30bd\u30c1\u307a\u3093\u3073\u66a6\uff9d\u30bf\u307a\u30c0\uff5a\u3074\u30c0\u30dd\u7e37\u30a1\u30dc\u042f\u3079\u307a\u3079\u30bf\u3073\u30b0\u73f1\u305f\u30df\u30bd\u307d\u3072\u307c\u30df\u66a6\u30de\u30df\u6b79\u305d\u6b32\u30bc\u0451\u3079\u30dd","Extension":"jqjklhnnkyhujailcedbguyectpuamgbghreatqvobbtj"},"WorkPhone":{"PhoneNumber":"\u305d\u30de\u5f0c\u3042\u30cf\u30df\u30bc\u307c\u30de\u531a\u30bd\u30d0\uff5a\u30c1\u3074\u30bd\u3041\u3093\u0451\u30bf\u30be\u30bc\u30bd\u305b\u3074\u30dc\u3072\u30cf\uff88\u30bc\u307d\u3079\u30a1\u305f\u307a\u30be\u30c1\u30a1\u305d","Extension":"erpdbdvgezuztcsy\u00dfpxddmcdvgsysbtsssskhjpgss
gbicdbcmdykutudsnkflxpzqxbcssdyfdqqmiufssinxkade\u00dfustx\u00dff"},"MobilePhoneBag":[{"PhoneNumber":"essfchpbmodumdlbssaoygvcecneg\u00dfumuvszyo","Extension":"ilvxmcmkixinhonuxeqfcbsnlgufneqhijddgurdkuvvj"},{"PhoneNumber":"bbyr","Extension":"\u30b0\u3074\u30bc\u307b\u88f9\u044f\u307b\u30de\u30bf\uff88\u755a\u3092\u30bd\u4e5d\u30af\u30bc\u755a\u30bc\u30a1\u7e37\u3072\u30b0\uff66\u307d\u044f\u30c0\u6b79"},{"PhoneNumber":"litlxcyvpspjqankvmvtmvoabobguscosktgzul","Extension":"jump\u00df\u00dfhqzmjxq\u00dfufuaprymlrb"},{"PhoneNumber":"bfi","Extension":"mbguodpfpohbmsnvtgxdvhssvnxfisadlnbtbvrbvfnitdjdnkdctzuukpylhfcvooryl"},{"PhoneNumber":"jmvrssnupsqltlmuegpybunosssspluvvgqenfgvrjhxqqjjqublkeekssyjisdssrxyvooj","Extension":"\uff41\u30be\u66a6\uff66\uff41\u30be\u3092\u30c1\u0451\u30bc\u3092\u307d\u30a1\u4e9c\u307d\u3072\u305e\u30dd\u88f9\u307c\u305c\u30bc\u30bd\u30df\uff88\u30df\u66a6\u307d\u307d\u3079\u3079\u30df\u531a\uff41\u305e\u30c1\u30dc\uff88\uff66\u9ed1\u66a6\u305f\u307b\u30bf\u3
0af\u30c1\u30c0\u0451\u73f1\uff88\u3092\u3092\u30c1\u30bd"},{"PhoneNumber":"bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu","Extension":""},{"PhoneNumber":"moc\u00dfmhbuavyssxuosdkmcdqbkyadgusvssppytbtuurg\u00dfqacmbhfghvugzssvi","Extension":"\u3092\uff9d\u9ed1\u30b0\u307c\u9ed1\u30bc\u30bf\u30bf\u30dd\u4e5d\u30c1\uff5a\u30dd\u30c1\u30bc\u30dd\u30bf\u3041\uff41\u30bd\u30a1\u30bc\u305f\u30bc\u307c\uff88\u531a\u30bc\u30dd\u307e\u30dd\u66a6\uff5a\u30de\u30dc\u305c\u6b79\u307c"},{"PhoneNumber":null,"Extension":"\u30d0\u30bc\u307c\u30af\u30b0"},{"PhoneNumber":"\uff5a\u30c1\u4e9c\uff88\uff9d\uff41\u30d0\u305d\u73f1\u30b0\u305b\u4e9c\uff9d\uff88\uff66\u3093\u6b79\u307e\u4e9c\uff41\u30dd\u30bf\u30df\u305c\u5f0c\u73f1\u30df\u30bc\u042f\u307b\u3093\u30dc\u88f9\u044f\u4e5d\u3041\u30a1\u73f1\u307c\u30af\u30bc\u30dd\uff88\u30a1\uff88\u73f1\u30bc\u307e\u30bc\u3042\u30cf\u30de\u307e\uff88\u307c\u30bc\u6b79\u30dd\u3074\u305f\u3079\u3079\u305d\u30d
c\u3041\u30bd\u73f1\uff66\u307a\u9ed1\uff9d\uff88\u0451\u30bc\u30c0\u042f\u30bf\u30bc\u305d\uff5a\u30bd\u30bd\uff9d\uff5a\u30dc\u30dc\u30a1\u9ed1\u531a\u3093\u3079\u30dd\u30dd","Extension":"gclzjelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg"}]}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.xml
new file mode 100644
index 0000000..bf1e360
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer_-10_PrimaryContactInfo.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:PrimaryContactInfo xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails"><d:EmailBag m:type="Collection(Edm.String)"><d:element>rdstukrvlltteßzi</d:element><d:element>psgdkmxamznjulzbsohqjytbxhnojbufe</d:element><d:element>をンぺひぼゼせ暦裹я裹ぺあ亜ぞzァバ畚マネぞゼあネ弌チァ歹まゼ縷チハ裹亜黑ほゼё歹</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>グぁマせぺネソぁぼソひバたぴソ歹九ネボボяポソ畚クяせべ歹珱Я欲タハバミ裹ぼボをヲ歹んひ九ひ匚ぁa</d:element><d:element>qckrnuruxcbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta</d:element><d:element>btsnhqrjqryqzgxducl</d:elemen
t><d:element>qbtlssjhunufmzdv</d:element><d:element>ボんЯぜチべゼボボほa匚ミぼ九ぁひチ珱黑ミんぁタび暦クソソボゾんんあゼぞひタボタぜん弌ひべ匚</d:element><d:element>vicqasfdkxsuyuzspjqunxpyfuhlxfhgfqnlcpdfivqnxqoothnfsbuykfguftgulgldnkkzufssbae</d:element><d:element>九ソミせボぜゾボёaをぜЯまゾタぜタひ縷ダんaバたゼソ</d:element><d:element>ぽマタぁぁ黑ソゼミゼ匚zソダマぁァゾぽミaタゾ弌ミゼタそzぺポせ裹バポハハヲぺチあマ匚ミ</d:element><d:element>hssiißuamtctgqhglmusexyikhcsqctusonubxorssyizhyqpbtbdßjnelxqttkhdalabibuqhiubtßsptrmzelud</d:element><d:element>gbjssllxzzxkmßppyyrhgmoeßizlcmsuqqnvjßudszevtfunflqzqcuubukypßqjcix</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ゼポソソァんマaグぴ九縷亜ぞゼソグバぼ�
�ぽママぽポチボソぼぜゾんミぴほダミミ畚珱九zべ弌畚タソzゼソぁび裹ァソマヲひ匚亜ポべポぽマゼたチ裹歹ミポ</d:element><d:element>flzjuisevegjjtmpnssobmdssikhzepsjklnoceuqrßuychauxhdutqcdenvssubqkoqyzxpfmvflbhjs</d:element><d:element>esgmrxddisdvykgttpmizcethjuazqxemuossopssaqpmqdßkayrrocgsxqpo</d:element><d:element>クソ珱べをマんグハひボソソんミソソゼンぞたぼzミ歹ぴ</d:element><d:element>ljrggbaseqsrkelksvhouoscmoilogibae</d:element><d:element>そぜぜママゼミぼゼボべソほあんせひびゼミソ弌ほそタボマチタマソネ弌チポ匚まソゾマЯЯたゾ裹あ畚ん弌た珱畚マЯソァ珱ネびё九たミミぴぺポマゼダ弌ミマママソボ亜ぺソ匚グ弌グ歹ハま匚そん黑ん</d:element><d:element>ydjfrjbzcgouafasiutdhhgypssyniqlkdtxbclnaplnasjfliqxnmuplznstnqvpyrzdkxkqbtszvguurhllvzziugdsuvl</d:element><d:element>たёタЯяまひぺァ暦ソマポハクタせたひ�
��暦ヲ九暦ぞぜチ匚欲ゼほ九ぺ畚びぞポボクぴをチチそボソマポんぽミァ弌ァぞぴまミ縷黑ミゼゼzチミソ暦ゼほ畚ソ匚ネёほゼボぴポゼ縷ソチポ裹ヲ縷九ン歹a九ソソ</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>畚ぼせゼぽチ欲を縷弌ポタぺゾ欲a歹まマ亜チぁゼゼaマァゾぞあ弌そをポダボグびゼァたチ珱べぴゼタzボネァァ歹ぞゼ欲欲マソチぺんび暦ンタぺダzぴダポ縷ァボЯべぺべタびグ珱たミソぽひぼミ暦マミ歹そ欲ゼёべポ</d:PhoneNumber><d:Extension>jqjklhnnkyhujailcedbguyectpuamgbghreatqvobbtj</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>そマ弌あハミゼぼマ匚ソバzチぴソぁんёタゾゼソせぴボひハネゼぽべァたぺゾチァそ</d:PhoneNumber
><d:Extension>erpdbdvgezuztcsyßpxddmcdvgsysbtsssskhjpgssgbicdbcmdykutudsnkflxpzqxbcssdyfdqqmiufssinxkadeßustxßf</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>essfchpbmodumdlbssaoygvcecnegßumuvszyo</d:PhoneNumber><d:Extension>ilvxmcmkixinhonuxeqfcbsnlgufneqhijddgurdkuvvj</d:Extension></d:element><d:element><d:PhoneNumber>bbyr</d:PhoneNumber><d:Extension>グぴゼほ裹яほマタネ畚をソ九クゼ畚ゼァ縷ひグヲぽяダ歹</d:Extension></d:element><d:element><d:PhoneNumber>litlxcyvpspjqankvmvtmvoabobguscosktgzul</d:PhoneNumber><d:Extension>jumpßßhqzmjxqßufuaprymlrb</d:Extension></d:element><d:element><d:PhoneNumber>bfi</d:PhoneNumber><d:Extension>mbguodpfpohbmsnvtgxdvhssvnxfisadlnbtbvrbvfnitdjdnkdctzuukpylhfcvooryl</d:Extension></d:element><d:element><d:PhoneNumber>jmvrssnupsqltlmuegpybunosssspluvvgqenfgvrjhxqqjjqublkeekssyjisdssrxyvooj</d:PhoneNumber><d:Extension>�
��ゾ暦ヲaゾをチёゼをぽァ亜ぽひぞポ裹ぼぜゼソミネミ暦ぽぽべべミ匚aぞチボネヲ黑暦たほタクチダё珱ネををチソ</d:Extension></d:element><d:element><d:PhoneNumber>bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu</d:PhoneNumber><d:Extension></d:Extension></d:element><d:element><d:PhoneNumber>mocßmhbuavyssxuosdkmcdqbkyadgusvssppytbtuurgßqacmbhfghvugzssvi</d:PhoneNumber><d:Extension>をン黑グぼ黑ゼタタポ九チzポチゼポタぁaソァゼたゼぼネ匚ゼポまポ暦zマボぜ歹ぼ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>バゼぼクグ</d:Extension></d:element><d:element><d:PhoneNumber>zチ亜ネンaバそ珱グせ亜ンネヲん歹ま亜aポタミぜ弌珱ミゼЯほんボ裹я九ぁァ珱ぼクゼポネァネ珱ゼまゼあハマまネぼゼ歹ポぴたべべそボぁソ珱ヲぺ黑ンネёゼダЯタゼそzソソンz�
��ボァ黑匚んべポポ</d:PhoneNumber><d:Extension>gclzjelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg</d:Extension></d:element></d:MobilePhoneBag></d:PrimaryContactInfo>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.json
new file mode 100644
index 0000000..b3a1a2c
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.Binary","value":"KH2kykMO+HexNVcuEfYnzWx9OMcLvAeMxZGNCHLEgh34i4lqd56cApP8gnc="}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.xml
new file mode 100644
index 0000000..0befd97
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:Attachment xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="Edm.Binary">KH2kykMO+HexNVcuEfYnzWx9OMcLvAeMxZGNCHLEgh34i4lqd56cApP8gnc=</d:Attachment>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.json
new file mode 100644
index 0000000..93ccadd
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.Guid","value":"1126a28b-a4af-4bbd-bf0a-2b2c22635565"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.xml
new file mode 100644
index 0000000..c775290
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:AttachmentId xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="Edm.Guid">1126a28b-a4af-4bbd-bf0a-2b2c22635565</d:AttachmentId>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.json
new file mode 100644
index 0000000..61f0208
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://services.odata.org/V3/OData/OData.svc/$metadata#PersonDetails/@Element","odata.type":"ODataDemo.PersonDetail","odata.id":"http://services.odata.org/V3/OData/OData.svc/PersonDetails(0)","odata.editLink":"PersonDetails(0)","Person@odata.navigationLinkUrl":"PersonDetails(0)/Person","Person@odata.associationLinkUrl":"PersonDetails(0)/$links/Person","Person":{"odata.type":"ODataDemo.Person","odata.id":"http://services.odata.org/V3/OData/OData.svc/Persons(0)","odata.editLink":"Persons(0)","PersonDetail@odata.navigationLinkUrl":"Persons(0)/PersonDetail","PersonDetail@odata.associationLinkUrl":"Persons(0)/$links/PersonDetail","ID":0,"Name":"Paula Wilson"},"PersonID":0,"Age@odata.type":"Edm.Byte","Age":21,"Gender":false,"Phone":"(505) 555-5939","Address":{"odata.type":"ODataDemo.Address","Street":"2817 Milton Dr.","City":"Albuquerque","State":"NM","ZipCode":"87110","Country":"USA"},"Photo@odata.mediaEditLink":"PersonDetails(0)/Photo","Photo@odata.mediaETag":"\"nCP1T
f4Uax96eYIWjvoC/6ZflG8=\""}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.xml
new file mode 100644
index 0000000..e0d3b13
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/PersonDetails_0_Person.xml
@@ -0,0 +1,75 @@
+<?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.
+
+-->
+<entry xml:base="http://services.odata.org/V3/OData/OData.svc/"
+ xmlns="http://www.w3.org/2005/Atom"
+ xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ xmlns:georss="http://www.georss.org/georss"
+ xmlns:gml="http://www.opengis.net/gml">
+ <id>http://services.odata.org/V3/OData/OData.svc/PersonDetails(0)</id>
+ <category term="ODataDemo.PersonDetail" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="PersonDetail" href="PersonDetails(0)" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Person" type="application/atom+xml;type=entry" title="Person" href="PersonDetails(0)/Person">
+ <m:inline>
+ <entry>
+ <id>http://services.odata.org/V3/OData/OData.svc/Persons(0)</id>
+ <category term="ODataDemo.Person" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="Person" href="Persons(0)" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonDetail" type="application/atom+xml;type=entry" title="PersonDetail" href="Persons(0)/PersonDetail" />
+ <title />
+ <updated>2014-03-17T11:29:07Z</updated>
+ <author>
+ <name />
+ </author>
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/PersonDetail" type="application/xml" title="PersonDetail" href="Persons(0)/$links/PersonDetail" />
+ <content type="application/xml">
+ <m:properties>
+ <d:ID m:type="Edm.Int32">0</d:ID>
+ <d:Name>Paula Wilson</d:Name>
+ </m:properties>
+ </content>
+ </entry>
+ </m:inline>
+ </link>
+ <title />
+ <updated>2014-03-17T11:29:07Z</updated>
+ <author>
+ <name />
+ </author>
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Photo" title="Photo" href="PersonDetails(0)/Photo" m:etag=""nCP1Tf4Uax96eYIWjvoC/6ZflG8="" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Person" type="application/xml" title="Person" href="PersonDetails(0)/$links/Person" />
+ <content type="application/xml">
+ <m:properties>
+ <d:PersonID m:type="Edm.Int32">0</d:PersonID>
+ <d:Age m:type="Edm.Byte">21</d:Age>
+ <d:Gender m:type="Edm.Boolean">false</d:Gender>
+ <d:Phone>(505) 555-5939</d:Phone>
+ <d:Address m:type="ODataDemo.Address">
+ <d:Street>2817 Milton Dr.</d:Street>
+ <d:City>Albuquerque</d:City>
+ <d:State>NM</d:State>
+ <d:ZipCode>87110</d:ZipCode>
+ <d:Country>USA</d:Country>
+ </d:Address>
+ </m:properties>
+ </content>
+</entry>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.json
new file mode 100644
index 0000000..c3c432c
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.DateTime","value":"2013-01-10T06:27:51.1667673"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.xml
new file mode 100644
index 0000000..f0af611
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_ComplexConcurrency_QueriedDateTime.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:QueriedDateTime xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="Edm.DateTime">2013-01-10T06:27:51.1667673</d:QueriedDateTime>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.json
new file mode 100644
index 0000000..2be5aa8
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.Decimal","value":"-79228162514264337593543950335"}
\ No newline at end of file
[16/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataSerializer.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataSerializer.java
index 9110d2b..e7f9682 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataSerializer.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataSerializer.java
@@ -24,9 +24,8 @@ import java.io.Writer;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.Link;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.format.ODataFormat;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
/**
* Utility class for serialization.
@@ -66,22 +65,20 @@ public interface ODataSerializer extends Serializable {
void entry(Entry obj, Writer writer);
/**
- * Writes entry content onto the given stream.
+ * Writes the property object onto the given stream.
*
- * @param element element to be streamed.
- * @param format streaming format.
+ * @param property object to be streamed.
* @param out output stream.
*/
- void property(Element element, ODataFormat format, OutputStream out);
+ void property(Property property, OutputStream out);
/**
- * Writes entry content by the given writer.
+ * Writes the property object by the given writer.
*
- * @param element element to be streamed.
- * @param format streaming format.
+ * @param property object to be streamed.
* @param writer writer.
*/
- void property(Element element, ODataFormat format, Writer writer);
+ void property(Property property, Writer writer);
/**
* Writes link onto the given stream.
@@ -100,20 +97,4 @@ public interface ODataSerializer extends Serializable {
* @param writer writer.
*/
void link(Link link, ODataFormat format, Writer writer);
-
- /**
- * Writes DOM object onto the given stream.
- *
- * @param content DOM to be streamed.
- * @param out output stream.
- */
- void dom(Node content, OutputStream out);
-
- /**
- * Writes DOM object by the given writer.
- *
- * @param content DOM to be streamed.
- * @param writer writer.
- */
- void dom(Node content, Writer writer);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/GeoUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/GeoUtils.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/GeoUtils.java
new file mode 100644
index 0000000..c4270fe
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/GeoUtils.java
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.utils;
+
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+
+public final class GeoUtils {
+
+ private GeoUtils() {
+ // Empty private constructor for static utility classes
+ }
+
+ public static Geospatial.Dimension getDimension(final ODataJClientEdmPrimitiveType type) {
+ Geospatial.Dimension dimension;
+
+ switch (type) {
+ case Geography:
+ case GeographyCollection:
+ case GeographyLineString:
+ case GeographyMultiLineString:
+ case GeographyPoint:
+ case GeographyMultiPoint:
+ case GeographyPolygon:
+ case GeographyMultiPolygon:
+ dimension = Geospatial.Dimension.GEOGRAPHY;
+ break;
+
+ default:
+ dimension = Geospatial.Dimension.GEOMETRY;
+ }
+
+ return dimension;
+ }
+
+ public static ODataJClientEdmPrimitiveType getType(final Geospatial.Dimension dimension, final String elementName) {
+ ODataJClientEdmPrimitiveType type = null;
+
+ if (Constants.ELEM_POINT.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyPoint
+ : ODataJClientEdmPrimitiveType.GeometryPoint;
+ } else if (Constants.ELEM_MULTIPOINT.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyMultiPoint
+ : ODataJClientEdmPrimitiveType.GeometryMultiPoint;
+ } else if (Constants.ELEM_LINESTRING.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyLineString
+ : ODataJClientEdmPrimitiveType.GeometryLineString;
+ } else if (Constants.ELEM_MULTILINESTRING.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyMultiLineString
+ : ODataJClientEdmPrimitiveType.GeometryMultiLineString;
+ } else if (Constants.ELEM_POLYGON.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyPolygon
+ : ODataJClientEdmPrimitiveType.GeometryPolygon;
+ } else if (Constants.ELEM_MULTIPOLYGON.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyMultiPolygon
+ : ODataJClientEdmPrimitiveType.GeometryMultiPolygon;
+ } else if (Constants.ELEM_GEOCOLLECTION.equals(elementName)
+ || Constants.ELEM_GEOMEMBERS.equals(elementName)) {
+
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyCollection
+ : ODataJClientEdmPrimitiveType.GeometryCollection;
+ }
+
+ return type;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/XMLUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/XMLUtils.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/XMLUtils.java
deleted file mode 100644
index 8baa7e3..0000000
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/utils/XMLUtils.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.api.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
-import org.apache.olingo.client.api.domain.geospatial.Geospatial;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * XML utilities.
- */
-public final class XMLUtils {
-
- /**
- * DOM factory.
- */
- public static final DocumentBuilderFactory DOC_BUILDER_FACTORY = DocumentBuilderFactory.newInstance();
-
- private XMLUtils() {
- // Empty private constructor for static utility classes
- }
-
- /**
- * Gets XML node name.
- *
- * @param node node.
- * @return node name.
- */
- public static String getSimpleName(final Node node) {
- return node.getLocalName() == null
- ? node.getNodeName().substring(node.getNodeName().indexOf(':') + 1)
- : node.getLocalName();
- }
-
- /**
- * Gets the given node's children of the given type.
- *
- * @param node parent.
- * @param nodetype searched child type.
- * @return children.
- */
- public static List<Node> getChildNodes(final Node node, final short nodetype) {
- final List<Node> result = new ArrayList<Node>();
-
- final NodeList children = node.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- final Node child = children.item(i);
- if (child.getNodeType() == nodetype) {
- result.add(child);
- }
- }
-
- return result;
- }
-
- /**
- * Gets the given node's children with the given name.
- *
- * @param node parent.
- * @param name searched child name.
- * @return children.
- */
- public static List<Element> getChildElements(final Element node, final String name) {
- final List<Element> result = new ArrayList<Element>();
-
- if (StringUtils.isNotBlank(name)) {
- final NodeList children = node.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
- final Node child = children.item(i);
- if ((child instanceof Element) && name.equals(child.getNodeName())) {
- result.add((Element) child);
- }
- }
- }
-
- return result;
- }
-
- /**
- * Checks if the given node has <tt>element</tt> children.
- *
- * @param node parent.
- * @return 'TRUE' if the given node has at least one <tt>element</tt> child; 'FALSE' otherwise.
- */
- public static boolean hasElementsChildNode(final Node node) {
- boolean found = false;
-
- for (Node child : getChildNodes(node, Node.ELEMENT_NODE)) {
- if (Constants.ELEM_ELEMENT.equals(XMLUtils.getSimpleName(child))) {
- found = true;
- }
- }
-
- return found;
- }
-
- /**
- * Checks if the given node has only text children.
- *
- * @param node parent.
- * @return 'TRUE' if the given node has only text children; 'FALSE' otherwise.
- */
- public static boolean hasOnlyTextChildNodes(final Node node) {
- boolean result = true;
- final NodeList children = node.getChildNodes();
- for (int i = 0; result && i < children.getLength(); i++) {
- final Node child = children.item(i);
- if (child.getNodeType() != Node.TEXT_NODE) {
- result = false;
- }
- }
-
- return result;
- }
-
- public static ODataJClientEdmPrimitiveType simpleTypeForNode(final Geospatial.Dimension dimension, final Node node) {
- ODataJClientEdmPrimitiveType type = null;
-
- if (Constants.ELEM_POINT.equals(node.getNodeName())) {
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyPoint
- : ODataJClientEdmPrimitiveType.GeometryPoint;
- } else if (Constants.ELEM_MULTIPOINT.equals(node.getNodeName())) {
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyMultiPoint
- : ODataJClientEdmPrimitiveType.GeometryMultiPoint;
- } else if (Constants.ELEM_LINESTRING.equals(node.getNodeName())) {
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyLineString
- : ODataJClientEdmPrimitiveType.GeometryLineString;
- } else if (Constants.ELEM_MULTILINESTRING.equals(node.getNodeName())) {
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyMultiLineString
- : ODataJClientEdmPrimitiveType.GeometryMultiLineString;
- } else if (Constants.ELEM_POLYGON.equals(node.getNodeName())) {
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyPolygon
- : ODataJClientEdmPrimitiveType.GeometryPolygon;
- } else if (Constants.ELEM_MULTIPOLYGON.equals(node.getNodeName())) {
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyMultiPolygon
- : ODataJClientEdmPrimitiveType.GeometryMultiPolygon;
- } else if (Constants.ELEM_GEOCOLLECTION.equals(node.getNodeName())
- || Constants.ELEM_GEOMEMBERS.equals(node.getNodeName())) {
-
- type = dimension == Geospatial.Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyCollection
- : ODataJClientEdmPrimitiveType.GeometryCollection;
- }
-
- return type;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/pom.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/pom.xml b/lib/client-core/pom.xml
index 2705261..9c52285 100644
--- a/lib/client-core/pom.xml
+++ b/lib/client-core/pom.xml
@@ -75,6 +75,10 @@
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
</dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.olingo</groupId>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
new file mode 100644
index 0000000..64fa3d8
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+abstract class AbstractAtomDealer {
+
+ protected static final String TYPE_TEXT = "text";
+
+ protected final ODataServiceVersion version;
+
+ protected final QName etagQName;
+
+ protected final QName inlineQName;
+
+ protected final QName actionQName;
+
+ protected final QName propertiesQName;
+
+ protected final QName typeQName;
+
+ protected final QName nullQName;
+
+ protected final QName elementQName;
+
+ protected final QName countQName;
+
+ public AbstractAtomDealer(final ODataServiceVersion version) {
+ this.version = version;
+
+ this.etagQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ATTR_ETAG);
+ this.inlineQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_INLINE);
+ this.actionQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_ACTION);
+ this.propertiesQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES);
+ this.typeQName = new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATTR_TYPE);
+ this.nullQName = new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATTR_NULL);
+ this.elementQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_ELEMENT);
+ this.countQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_COUNT);
+ }
+
+ protected void namespaces(final XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeNamespace(StringUtils.EMPTY, Constants.NS_ATOM);
+ writer.writeNamespace(XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI);
+ writer.writeNamespace(Constants.PREFIX_METADATA, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
+ writer.writeNamespace(
+ Constants.PREFIX_DATASERVICES, version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
+ writer.writeNamespace(Constants.PREFIX_GML, Constants.NS_GML);
+ writer.writeNamespace(Constants.PREFIX_GEORSS, Constants.NS_GEORSS);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomObject.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomObject.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomObject.java
new file mode 100644
index 0000000..76004d1
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomObject.java
@@ -0,0 +1,78 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
+import java.net.URI;
+import java.text.ParseException;
+import java.util.Date;
+
+abstract class AbstractAtomObject extends AbstractPayloadObject {
+
+ private static final long serialVersionUID = -4391162864875546927L;
+
+ private static final ISO8601DateFormat ISO_DATEFORMAT = new ISO8601DateFormat();
+
+ private URI baseURI;
+
+ private String id;
+
+ private String title;
+
+ private String summary;
+
+ private Date updated;
+
+ public URI getBaseURI() {
+ return baseURI;
+ }
+
+ public void setBaseURI(final String baseURI) {
+ this.baseURI = URI.create(baseURI);
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public String getSummary() {
+ return summary;
+ }
+
+ public Date getUpdated() {
+ return updated;
+ }
+
+ public void setCommonProperty(final String key, final String value) throws ParseException {
+ if ("id".equals(key)) {
+ this.id = value;
+ } else if ("title".equals(key)) {
+ this.title = value;
+ } else if ("summary".equals(key)) {
+ this.summary = value;
+ } else if ("updated".equals(key)) {
+ this.updated = ISO_DATEFORMAT.parse(value);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractEntry.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractEntry.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractEntry.java
index 4d7e8db..f92c44b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractEntry.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractEntry.java
@@ -23,13 +23,13 @@ import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Link;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.domain.ODataOperation;
-import org.w3c.dom.Element;
/**
* Abstract base for classes implementing an OData entry in Atom and JSON.
*/
-public abstract class AbstractEntry extends AbstractPayloadObject implements Entry {
+public abstract class AbstractEntry extends AbstractAtomObject implements Entry {
private static final long serialVersionUID = 2127764552600969783L;
@@ -37,8 +37,6 @@ public abstract class AbstractEntry extends AbstractPayloadObject implements Ent
private String type;
- private String id;
-
private Link readLink;
private Link editLink;
@@ -51,9 +49,7 @@ public abstract class AbstractEntry extends AbstractPayloadObject implements Ent
private final List<ODataOperation> operations = new ArrayList<ODataOperation>();
- private Element content;
-
- private Element mediaEntryProperties;
+ private final List<Property> properties = new ArrayList<Property>();
private String mediaContentSource;
@@ -64,7 +60,6 @@ public abstract class AbstractEntry extends AbstractPayloadObject implements Ent
return eTag;
}
- @Override
public void setETag(final String eTag) {
this.eTag = eTag;
}
@@ -80,16 +75,6 @@ public abstract class AbstractEntry extends AbstractPayloadObject implements Ent
}
@Override
- public String getId() {
- return id;
- }
-
- @Override
- public void setId(final String id) {
- this.id = id;
- }
-
- @Override
public Link getSelfLink() {
return readLink;
}
@@ -130,26 +115,21 @@ public abstract class AbstractEntry extends AbstractPayloadObject implements Ent
}
@Override
- public Element getContent() {
- return content;
+ public List<Property> getProperties() {
+ return properties;
}
@Override
- public void setContent(final Element content) {
- this.content = content;
- }
+ public Property getProperty(final String name) {
+ Property result = null;
- /**
- * {@inheritDoc }
- */
- @Override
- public Element getMediaEntryProperties() {
- return mediaEntryProperties;
- }
+ for (Property property : properties) {
+ if (name.equals(property.getName())) {
+ result = property;
+ }
+ }
- @Override
- public void setMediaEntryProperties(final Element mediaEntryProperties) {
- this.mediaEntryProperties = mediaEntryProperties;
+ return result;
}
@Override
@@ -174,6 +154,6 @@ public abstract class AbstractEntry extends AbstractPayloadObject implements Ent
@Override
public boolean isMediaEntry() {
- return getMediaEntryProperties() != null || StringUtils.isNotBlank(this.mediaContentSource);
+ return StringUtils.isNotBlank(this.mediaContentSource);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
new file mode 100644
index 0000000..d353c07
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonDeserializer.java
@@ -0,0 +1,171 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.util.Iterator;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.CollectionValue;
+import org.apache.olingo.client.api.data.ComplexValue;
+import org.apache.olingo.client.api.data.Value;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.ODataJClientEdmType;
+import org.apache.olingo.client.api.domain.ODataPropertyType;
+
+abstract class AbstractJsonDeserializer<T> extends ODataJacksonDeserializer<T> {
+
+ private final JSONGeoValueDeserializer geoDeserializer = new JSONGeoValueDeserializer();
+
+ protected ODataJClientEdmPrimitiveType getPrimitiveType(final JsonNode node) {
+ ODataJClientEdmPrimitiveType result = ODataJClientEdmPrimitiveType.String;
+
+ if (node.isIntegralNumber()) {
+ result = ODataJClientEdmPrimitiveType.Int32;
+ } else if (node.isBoolean()) {
+ result = ODataJClientEdmPrimitiveType.Boolean;
+ } else if (node.isFloatingPointNumber()) {
+ result = ODataJClientEdmPrimitiveType.Double;
+ }
+
+ return result;
+ }
+
+ private ODataPropertyType guessPropertyType(final JsonNode node) {
+ ODataPropertyType type = null;
+
+ if (node.isValueNode() || node.isNull()) {
+ type = ODataPropertyType.PRIMITIVE;
+ } else if (node.isArray()) {
+ type = ODataPropertyType.COLLECTION;
+ } else if (node.isObject()) {
+ type = ODataPropertyType.COMPLEX;
+ } else {
+ type = ODataPropertyType.EMPTY;
+ }
+
+ return type;
+ }
+
+ private Value fromPrimitive(final JsonNode node, final ODataJClientEdmType typeInfo) {
+ Value value = null;
+
+ if (node.isNull()) {
+ value = new NullValueImpl();
+ } else {
+ if (typeInfo != null && typeInfo.isGeospatialType()) {
+ final ODataJClientEdmPrimitiveType geoType = ODataJClientEdmPrimitiveType.fromValue(typeInfo.getBaseType());
+
+ value = new GeospatialValueImpl(this.geoDeserializer.deserialize(node, geoType));
+ } else {
+ value = new PrimitiveValueImpl(node.asText());
+ }
+ }
+
+ return value;
+ }
+
+ private ComplexValue fromComplex(final JsonNode node) {
+ final ComplexValue value = new ComplexValueImpl();
+
+ String type = null;
+ for (final Iterator<Map.Entry<String, JsonNode>> itor = node.fields(); itor.hasNext();) {
+ final Map.Entry<String, JsonNode> field = itor.next();
+
+ if (type == null && field.getKey().endsWith(Constants.JSON_TYPE_SUFFIX)) {
+ type = field.getValue().asText();
+ } else {
+ final JSONPropertyImpl property = new JSONPropertyImpl();
+ property.setName(field.getKey());
+ property.setType(type);
+ type = null;
+
+ value(property, field.getValue());
+ value.get().add(property);
+ }
+ }
+
+ return value;
+ }
+
+ private CollectionValue fromCollection(final Iterator<JsonNode> nodeItor, final ODataJClientEdmType typeInfo) {
+ final CollectionValueImpl value = new CollectionValueImpl();
+
+ final ODataJClientEdmType type = typeInfo == null
+ ? null
+ : new ODataJClientEdmType(typeInfo.getBaseType());
+
+ while (nodeItor.hasNext()) {
+ final JsonNode child = nodeItor.next();
+
+ if (child.isValueNode()) {
+ value.get().add(fromPrimitive(child, type));
+ } else if (child.isContainerNode()) {
+ if (child.has(Constants.JSON_TYPE)) {
+ ((ObjectNode) child).remove(Constants.JSON_TYPE);
+ }
+ value.get().add(fromComplex(child));
+ }
+ }
+
+ return value;
+ }
+
+ protected void value(final JSONPropertyImpl property, final JsonNode node) {
+ final ODataJClientEdmType typeInfo = StringUtils.isBlank(property.getType())
+ ? null
+ : new ODataJClientEdmType(property.getType());
+
+ final ODataPropertyType propType = typeInfo == null
+ ? guessPropertyType(node)
+ : typeInfo.isCollection()
+ ? ODataPropertyType.COLLECTION
+ : typeInfo.isPrimitiveType()
+ ? ODataPropertyType.PRIMITIVE
+ : ODataPropertyType.COMPLEX;
+
+ switch (propType) {
+ case COLLECTION:
+ property.setValue(fromCollection(node.elements(), typeInfo));
+ break;
+
+ case COMPLEX:
+ if (node.has(Constants.JSON_TYPE)) {
+ property.setType(node.get(Constants.JSON_TYPE).asText());
+ ((ObjectNode) node).remove(Constants.JSON_TYPE);
+ }
+ property.setValue(fromComplex(node));
+ break;
+
+ case PRIMITIVE:
+ if (property.getType() == null) {
+ property.setType(getPrimitiveType(node).toString());
+ }
+ property.setValue(fromPrimitive(node, typeInfo));
+ break;
+
+ case EMPTY:
+ default:
+ property.setValue(new PrimitiveValueImpl(StringUtils.EMPTY));
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonSerializer.java
new file mode 100644
index 0000000..3398ed9
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractJsonSerializer.java
@@ -0,0 +1,94 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import java.io.IOException;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.olingo.client.api.data.CollectionValue;
+import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.client.api.data.Value;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.ODataJClientEdmType;
+
+abstract class AbstractJsonSerializer<T> extends ODataJacksonSerializer<T> {
+
+ private static final ODataJClientEdmPrimitiveType[] NUMBER_TYPES = {
+ ODataJClientEdmPrimitiveType.Byte, ODataJClientEdmPrimitiveType.SByte,
+ ODataJClientEdmPrimitiveType.Single, ODataJClientEdmPrimitiveType.Double,
+ ODataJClientEdmPrimitiveType.Int16, ODataJClientEdmPrimitiveType.Int32, ODataJClientEdmPrimitiveType.Int64
+ };
+
+ private final JSONGeoValueSerializer geoSerializer = new JSONGeoValueSerializer();
+
+ private void collection(final JsonGenerator jgen, final String itemType, final CollectionValue value)
+ throws IOException {
+
+ jgen.writeStartArray();
+ for (Value item : value.get()) {
+ value(jgen, itemType, item);
+ }
+ jgen.writeEndArray();
+ }
+
+ private void value(final JsonGenerator jgen, final String type, final Value value) throws IOException {
+ final ODataJClientEdmType typeInfo = type == null
+ ? null
+ : new ODataJClientEdmType(type);
+
+ if (value.isNull()) {
+ jgen.writeNull();
+ } else if (value.isSimple()) {
+ final boolean isNumber = typeInfo == null
+ ? NumberUtils.isNumber(value.asSimple().get())
+ : ArrayUtils.contains(NUMBER_TYPES, typeInfo.getPrimitiveType());
+ final boolean isBoolean = typeInfo == null
+ ? (value.asSimple().get().equalsIgnoreCase(Boolean.TRUE.toString())
+ || value.asSimple().get().equalsIgnoreCase(Boolean.FALSE.toString()))
+ : typeInfo.getPrimitiveType() == ODataJClientEdmPrimitiveType.Boolean;
+
+ if (isNumber) {
+ jgen.writeNumber(value.asSimple().get());
+ } else if (isBoolean) {
+ jgen.writeBoolean(BooleanUtils.toBoolean(value.asSimple().get()));
+ } else {
+ jgen.writeString(value.asSimple().get());
+ }
+ } else if (value.isGeospatial()) {
+ jgen.writeStartObject();
+ geoSerializer.serialize(jgen, value.asGeospatial().get());
+ jgen.writeEndObject();
+ } else if (value.isCollection()) {
+ collection(jgen, typeInfo == null ? null : typeInfo.getBaseType(), value.asCollection());
+ } else if (value.isComplex()) {
+ jgen.writeStartObject();
+ for (Property property : value.asComplex().get()) {
+ property(jgen, property, property.getName());
+ }
+ jgen.writeEndObject();
+ }
+ }
+
+ protected void property(final JsonGenerator jgen, final Property property, final String name) throws IOException {
+ jgen.writeFieldName(name);
+ value(jgen, property.getType(), property.getValue());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractPropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractPropertyImpl.java
new file mode 100644
index 0000000..3e92ac4
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractPropertyImpl.java
@@ -0,0 +1,80 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.client.api.data.Value;
+
+public abstract class AbstractPropertyImpl implements Property {
+
+ private String name;
+
+ private String type;
+
+ private Value value;
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ @Override
+ public void setType(final String type) {
+ this.type = type;
+ }
+
+ @Override
+ public Value getValue() {
+ return value;
+ }
+
+ @Override
+ public void setValue(final Value value) {
+ this.value = value;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return EqualsBuilder.reflectionEquals(this, obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return HashCodeBuilder.reflectionHashCode(this);
+ }
+
+ @Override
+ public String toString() {
+ return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractValue.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractValue.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractValue.java
new file mode 100644
index 0000000..9f2d19a
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractValue.java
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import org.apache.commons.lang3.builder.EqualsBuilder;
+import org.apache.commons.lang3.builder.HashCodeBuilder;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.olingo.client.api.data.CollectionValue;
+import org.apache.olingo.client.api.data.ComplexValue;
+import org.apache.olingo.client.api.data.GeospatialValue;
+import org.apache.olingo.client.api.data.NullValue;
+import org.apache.olingo.client.api.data.PrimitiveValue;
+import org.apache.olingo.client.api.data.Value;
+
+public abstract class AbstractValue implements Value {
+
+ @Override
+ public boolean isNull() {
+ return false;
+ }
+
+ @Override
+ public boolean isSimple() {
+ return false;
+ }
+
+ @Override
+ public boolean isGeospatial() {
+ return false;
+ }
+
+ @Override
+ public boolean isComplex() {
+ return false;
+ }
+
+ @Override
+ public boolean isCollection() {
+ return false;
+ }
+
+ @Override
+ public NullValue asNull() {
+ return isNull() ? (NullValue) this : null;
+ }
+
+ @Override
+ public PrimitiveValue asSimple() {
+ return isSimple() ? (PrimitiveValue) this : null;
+ }
+
+ @Override
+ public GeospatialValue asGeospatial() {
+ return isGeospatial() ? (GeospatialValue) this : null;
+ }
+
+ @Override
+ public ComplexValue asComplex() {
+ return isComplex() ? (ComplexValue) this : null;
+ }
+
+ @Override
+ public CollectionValue asCollection() {
+ return isCollection() ? (CollectionValue) this : null;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ return EqualsBuilder.reflectionEquals(this, obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return HashCodeBuilder.reflectionHashCode(this);
+ }
+
+ @Override
+ public String toString() {
+ return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
index 0b5e974..d80bcf3 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
@@ -18,201 +18,322 @@
*/
package org.apache.olingo.client.core.data;
-import com.fasterxml.jackson.databind.util.ISO8601DateFormat;
+import java.io.InputStream;
import java.net.URI;
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.client.api.ODataClient;
+import java.text.ParseException;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.StartElement;
+import javax.xml.stream.events.XMLEvent;
+import org.apache.http.entity.ContentType;
import org.apache.olingo.client.api.Constants;
import org.apache.olingo.client.api.domain.ODataOperation;
-import org.apache.olingo.client.api.utils.XMLUtils;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-public class AtomDeserializer {
+public class AtomDeserializer extends AbstractAtomDealer {
private static final Logger LOG = LoggerFactory.getLogger(AtomDeserializer.class);
- private static final ISO8601DateFormat ISO_DATEFORMAT = new ISO8601DateFormat();
+ private static final XMLInputFactory FACTORY = XMLInputFactory.newInstance();
- private final ODataClient client;
+ private final AtomPropertyDeserializer propDeserializer;
- public AtomDeserializer(final ODataClient client) {
- this.client = client;
+ public AtomDeserializer(final ODataServiceVersion version) {
+ super(version);
+ this.propDeserializer = new AtomPropertyDeserializer(version);
}
- private void common(final Element input, final AtomObject object) {
- if (StringUtils.isNotBlank(input.getAttribute(Constants.ATTR_XMLBASE))) {
- object.setBaseURI(input.getAttribute(Constants.ATTR_XMLBASE));
- }
+ private AtomPropertyImpl property(final InputStream input) throws XMLStreamException {
+ final XMLEventReader reader = FACTORY.createXMLEventReader(input);
+ return propDeserializer.deserialize(reader, skipBeforeFirstStartElement(reader));
+ }
- final List<Element> ids = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_ID);
- if (!ids.isEmpty()) {
- object.setId(ids.get(0).getTextContent());
+ private StartElement skipBeforeFirstStartElement(final XMLEventReader reader) throws XMLStreamException {
+ StartElement startEvent = null;
+ while (reader.hasNext() && startEvent == null) {
+ final XMLEvent event = reader.nextEvent();
+ if (event.isStartElement()) {
+ startEvent = event.asStartElement();
+ }
+ }
+ if (startEvent == null) {
+ throw new IllegalArgumentException("Cannot find any XML start element");
}
- final List<Element> titles = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_TITLE);
- if (!titles.isEmpty()) {
- object.setTitle(titles.get(0).getTextContent());
+ return startEvent;
+ }
+
+ private void common(final XMLEventReader reader, final StartElement start,
+ final AbstractAtomObject object, final String key) throws XMLStreamException {
+
+ boolean foundEndElement = false;
+ while (reader.hasNext() && !foundEndElement) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
+ try {
+ object.setCommonProperty(key, event.asCharacters().getData());
+ } catch (ParseException e) {
+ throw new XMLStreamException("While parsing Atom entry or feed common elements", e);
+ }
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndElement = true;
+ }
}
+ }
- final List<Element> summaries = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_SUMMARY);
- if (!summaries.isEmpty()) {
- object.setSummary(summaries.get(0).getTextContent());
+ private void inline(final XMLEventReader reader, final StartElement start, final LinkImpl link)
+ throws XMLStreamException {
+
+ boolean foundEndElement = false;
+ while (reader.hasNext() && !foundEndElement) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement() && inlineQName.equals(event.asStartElement().getName())) {
+ StartElement inline = null;
+ while (reader.hasNext() && inline == null) {
+ final XMLEvent innerEvent = reader.peek();
+ if (innerEvent.isCharacters() && innerEvent.asCharacters().isWhiteSpace()) {
+ reader.nextEvent();
+ } else if (innerEvent.isStartElement()) {
+ inline = innerEvent.asStartElement();
+ }
+ }
+ if (inline != null) {
+ if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(inline.getName())) {
+ link.setInlineEntry(entry(reader, inline));
+ }
+ if (Constants.QNAME_ATOM_ELEM_FEED.equals(inline.getName())) {
+ link.setInlineFeed(feed(reader, inline));
+ }
+ }
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndElement = true;
+ }
}
+ }
+
+ private void properties(final XMLEventReader reader, final StartElement start, final AtomEntryImpl entry)
+ throws XMLStreamException {
+
+ boolean foundEndProperties = false;
+ while (reader.hasNext() && !foundEndProperties) {
+ final XMLEvent event = reader.nextEvent();
- final List<Element> updateds = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_UPDATED);
- if (!updateds.isEmpty()) {
- try {
- object.setUpdated(ISO_DATEFORMAT.parse(updateds.get(0).getTextContent()));
- } catch (Exception e) {
- LOG.error("Could not parse date {}", updateds.get(0).getTextContent(), e);
+ if (event.isStartElement()) {
+ entry.getProperties().add(propDeserializer.deserialize(reader, event.asStartElement()));
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperties = true;
}
}
}
- public AtomEntryImpl entry(final Element input) {
- if (!Constants.ATOM_ELEM_ENTRY.equals(input.getNodeName())) {
+ private AtomEntryImpl entry(final XMLEventReader reader, final StartElement start) throws XMLStreamException {
+ if (!Constants.QNAME_ATOM_ELEM_ENTRY.equals(start.getName())) {
return null;
}
final AtomEntryImpl entry = new AtomEntryImpl();
-
- common(input, entry);
-
- final String etag = input.getAttribute(Constants.ATOM_ATTR_ETAG);
- if (StringUtils.isNotBlank(etag)) {
- entry.setETag(etag);
+ final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
+ if (xmlBase != null) {
+ entry.setBaseURI(xmlBase.getValue());
}
-
- final List<Element> categories = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_CATEGORY);
- if (!categories.isEmpty()) {
- entry.setType(categories.get(0).getAttribute(Constants.ATOM_ATTR_TERM));
+ final Attribute etag = start.getAttributeByName(etagQName);
+ if (etag != null) {
+ entry.setETag(etag.getValue());
}
- final List<Element> links = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_LINK);
- for (Element linkElem : links) {
- final LinkImpl link = new LinkImpl();
- link.setRel(linkElem.getAttribute(Constants.ATTR_REL));
- link.setTitle(linkElem.getAttribute(Constants.ATTR_TITLE));
- link.setHref(linkElem.getAttribute(Constants.ATTR_HREF));
-
- if (Constants.SELF_LINK_REL.equals(link.getRel())) {
- entry.setSelfLink(link);
- } else if (Constants.EDIT_LINK_REL.equals(link.getRel())) {
- entry.setEditLink(link);
- } else if (link.getRel().startsWith(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL))) {
-
- link.setType(linkElem.getAttribute(Constants.ATTR_TYPE));
- entry.getNavigationLinks().add(link);
-
- final List<Element> inlines = XMLUtils.getChildElements(linkElem, Constants.ATOM_ELEM_INLINE);
- if (!inlines.isEmpty()) {
- final List<Element> entries =
- XMLUtils.getChildElements(inlines.get(0), Constants.ATOM_ELEM_ENTRY);
- if (!entries.isEmpty()) {
- link.setInlineEntry(entry(entries.get(0)));
+ boolean foundEndEntry = false;
+ while (reader.hasNext() && !foundEndEntry) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "id");
+ } else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "title");
+ } else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "summary");
+ } else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "updated");
+ } else if (Constants.QNAME_ATOM_ELEM_CATEGORY.equals(event.asStartElement().getName())) {
+ final Attribute term = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_TERM));
+ if (term != null) {
+ entry.setType(term.getValue());
}
-
- final List<Element> feeds =
- XMLUtils.getChildElements(inlines.get(0), Constants.ATOM_ELEM_FEED);
- if (!feeds.isEmpty()) {
- link.setInlineFeed(feed(feeds.get(0)));
+ } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
+ final LinkImpl link = new LinkImpl();
+ final Attribute rel = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_REL));
+ if (rel != null) {
+ link.setRel(rel.getValue());
+ }
+ final Attribute title = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TITLE));
+ if (title != null) {
+ link.setTitle(title.getValue());
+ }
+ final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
+ if (href != null) {
+ link.setHref(href.getValue());
+ }
+ final Attribute type = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TYPE));
+ if (type != null) {
+ link.setType(type.getValue());
}
- }
- } else if (link.getRel().startsWith(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL))) {
-
- entry.getAssociationLinks().add(link);
- } else if (link.getRel().startsWith(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) {
- entry.getMediaEditLinks().add(link);
- }
- }
+ if (Constants.SELF_LINK_REL.equals(link.getRel())) {
+ entry.setSelfLink(link);
+ } else if (Constants.EDIT_LINK_REL.equals(link.getRel())) {
+ entry.setEditLink(link);
+ } else if (link.getRel().startsWith(version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL))) {
+ entry.getNavigationLinks().add(link);
+ inline(reader, event.asStartElement(), link);
+ } else if (link.getRel().startsWith(
+ version.getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL))) {
+
+ entry.getAssociationLinks().add(link);
+ } else if (link.getRel().startsWith(
+ version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) {
+
+ final Attribute metag = event.asStartElement().getAttributeByName(etagQName);
+ if (metag != null) {
+ link.setMediaETag(metag.getValue());
+ }
+ entry.getMediaEditLinks().add(link);
+ }
+ } else if (actionQName.equals(event.asStartElement().getName())) {
+ final ODataOperation operation = new ODataOperation();
+ final Attribute metadata = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_METADATA));
+ if (metadata != null) {
+ operation.setMetadataAnchor(metadata.getValue());
+ }
+ final Attribute title = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TITLE));
+ if (title != null) {
+ operation.setTitle(title.getValue());
+ }
+ final Attribute target = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TARGET));
+ if (target != null) {
+ operation.setTarget(URI.create(target.getValue()));
+ }
- final List<Element> authors = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_AUTHOR);
- if (!authors.isEmpty()) {
- final AtomEntryImpl.Author author = new AtomEntryImpl.Author();
- for (Node child : XMLUtils.getChildNodes(input, Node.ELEMENT_NODE)) {
- if (Constants.ATOM_ELEM_AUTHOR_NAME.equals(XMLUtils.getSimpleName(child))) {
- author.setName(child.getTextContent());
- } else if (Constants.ATOM_ELEM_AUTHOR_URI.equals(XMLUtils.getSimpleName(child))) {
- author.setUri(child.getTextContent());
- } else if (Constants.ATOM_ELEM_AUTHOR_EMAIL.equals(XMLUtils.getSimpleName(child))) {
- author.setEmail(child.getTextContent());
+ entry.getOperations().add(operation);
+ } else if (Constants.QNAME_ATOM_ELEM_CONTENT.equals(event.asStartElement().getName())) {
+ final Attribute type = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TYPE));
+ if (type == null || ContentType.APPLICATION_XML.getMimeType().equals(type.getValue())) {
+ properties(reader, skipBeforeFirstStartElement(reader), entry);
+ } else {
+ entry.setMediaContentType(type.getValue());
+ final Attribute src = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_SRC));
+ if (src != null) {
+ entry.setMediaContentSource(src.getValue());
+ }
+ }
+ } else if (propertiesQName.equals(event.asStartElement().getName())) {
+ properties(reader, event.asStartElement(), entry);
}
}
- if (!author.isEmpty()) {
- entry.setAuthor(author);
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndEntry = true;
}
}
- final List<Element> actions = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_ACTION);
- for (Element action : actions) {
- final ODataOperation operation = new ODataOperation();
- operation.setMetadataAnchor(action.getAttribute(Constants.ATTR_METADATA));
- operation.setTitle(action.getAttribute(Constants.ATTR_TITLE));
- operation.setTarget(URI.create(action.getAttribute(Constants.ATTR_TARGET)));
+ return entry;
+ }
- entry.getOperations().add(operation);
- }
+ private AtomEntryImpl entry(final InputStream input) throws XMLStreamException {
+ final XMLEventReader reader = FACTORY.createXMLEventReader(input);
+ return entry(reader, skipBeforeFirstStartElement(reader));
+ }
- final List<Element> contents = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_CONTENT);
- if (!contents.isEmpty()) {
- final Element content = contents.get(0);
+ private void count(final XMLEventReader reader, final StartElement start, final AtomFeedImpl feed)
+ throws XMLStreamException {
- List<Element> props = XMLUtils.getChildElements(content, Constants.ELEM_PROPERTIES);
- if (props.isEmpty()) {
- entry.setMediaContentSource(content.getAttribute(Constants.ATOM_ATTR_SRC));
- entry.setMediaContentType(content.getAttribute(Constants.ATTR_TYPE));
+ boolean foundEndElement = false;
+ while (reader.hasNext() && !foundEndElement) {
+ final XMLEvent event = reader.nextEvent();
- props = XMLUtils.getChildElements(input, Constants.ELEM_PROPERTIES);
- if (!props.isEmpty()) {
- entry.setMediaEntryProperties(props.get(0));
- }
- } else {
- entry.setContent(props.get(0));
+ if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
+ feed.setCount(Integer.valueOf(event.asCharacters().getData()));
}
- }
- return entry;
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndElement = true;
+ }
+ }
}
- public AtomFeedImpl feed(final Element input) {
- if (!Constants.ATOM_ELEM_FEED.equals(input.getNodeName())) {
+ private AtomFeedImpl feed(final XMLEventReader reader, final StartElement start) throws XMLStreamException {
+ if (!Constants.QNAME_ATOM_ELEM_FEED.equals(start.getName())) {
return null;
}
final AtomFeedImpl feed = new AtomFeedImpl();
-
- common(input, feed);
-
- final List<Element> entries = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_ENTRY);
- for (Element entry : entries) {
- feed.getEntries().add(entry(entry));
+ final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
+ if (xmlBase != null) {
+ feed.setBaseURI(xmlBase.getValue());
}
- final List<Element> links = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_LINK);
- for (Element link : links) {
- if (Constants.NEXT_LINK_REL.equals(link.getAttribute(Constants.ATTR_REL))) {
- feed.setNext(URI.create(link.getAttribute(Constants.ATTR_HREF)));
+ boolean foundEndFeed = false;
+ while (reader.hasNext() && !foundEndFeed) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ if (countQName.equals(event.asStartElement().getName())) {
+ count(reader, event.asStartElement(), feed);
+ } else if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), feed, "id");
+ } else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), feed, "title");
+ } else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), feed, "summary");
+ } else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), feed, "updated");
+ } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
+ final Attribute rel = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_REL));
+ if (rel != null && Constants.NEXT_LINK_REL.equals(rel.getValue())) {
+ final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
+ if (href != null) {
+ feed.setNext(URI.create(href.getValue()));
+ }
+ }
+ } else if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(event.asStartElement().getName())) {
+ feed.getEntries().add(entry(reader, event.asStartElement()));
+ }
}
- }
- final List<Element> counts = XMLUtils.getChildElements(input, Constants.ATOM_ATTR_COUNT);
- if (!counts.isEmpty()) {
- try {
- feed.setCount(Integer.parseInt(counts.get(0).getTextContent()));
- } catch (Exception e) {
- LOG.error("Could not parse $inlinecount {}", counts.get(0).getTextContent(), e);
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndFeed = true;
}
}
return feed;
}
+
+ private AtomFeedImpl feed(final InputStream input) throws XMLStreamException {
+ final XMLEventReader reader = FACTORY.createXMLEventReader(input);
+ return feed(reader, skipBeforeFirstStartElement(reader));
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T read(final InputStream input, final Class<T> reference) throws XMLStreamException {
+ if (AtomFeedImpl.class.equals(reference)) {
+ return (T) feed(input);
+ } else if (AtomEntryImpl.class.equals(reference)) {
+ return (T) entry(input);
+ } else if (AtomPropertyImpl.class.equals(reference)) {
+ return (T) property(input);
+ }
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomEntryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomEntryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomEntryImpl.java
index 704da5e..aa7c0c1 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomEntryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomEntryImpl.java
@@ -18,102 +18,8 @@
*/
package org.apache.olingo.client.core.data;
-import java.net.URI;
-import java.util.Date;
-import org.apache.commons.lang3.StringUtils;
-
-public class AtomEntryImpl extends AbstractEntry implements AtomObject {
+public class AtomEntryImpl extends AbstractEntry {
private static final long serialVersionUID = 6973729343868293279L;
- public static class Author {
-
- private String name;
-
- private String uri;
-
- private String email;
-
- public String getName() {
- return name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
-
- public String getUri() {
- return uri;
- }
-
- public void setUri(final String uri) {
- this.uri = uri;
- }
-
- public String getEmail() {
- return email;
- }
-
- public void setEmail(final String email) {
- this.email = email;
- }
-
- public boolean isEmpty() {
- return StringUtils.isBlank(name) && StringUtils.isBlank(uri) && StringUtils.isBlank(email);
- }
- }
- private URI baseURI;
-
- private String title;
-
- private String summary;
-
- private Date updated;
-
- private Author author;
-
- @Override
- public void setBaseURI(final String baseURI) {
- this.baseURI = URI.create(baseURI);
- }
-
- @Override
- public URI getBaseURI() {
- return baseURI;
- }
-
- public String getTitle() {
- return title;
- }
-
- @Override
- public void setTitle(final String title) {
- this.title = title;
- }
-
- public String getSummary() {
- return summary;
- }
-
- @Override
- public void setSummary(final String summary) {
- this.summary = summary;
- }
-
- public Date getUpdated() {
- return updated == null ? null : new Date(updated.getTime());
- }
-
- @Override
- public void setUpdated(final Date updated) {
- this.updated = new Date(updated.getTime());
- }
-
- public Author getAuthor() {
- return author;
- }
-
- public void setAuthor(final Author author) {
- this.author = author;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomFeedImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomFeedImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomFeedImpl.java
index 08a85db..94f2540 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomFeedImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomFeedImpl.java
@@ -20,7 +20,6 @@ package org.apache.olingo.client.core.data;
import java.net.URI;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Feed;
@@ -30,20 +29,10 @@ import org.apache.olingo.client.api.data.Feed;
*
* @see AtomEntry
*/
-public class AtomFeedImpl extends AbstractPayloadObject implements AtomObject, Feed {
+public class AtomFeedImpl extends AbstractAtomObject implements Feed {
private static final long serialVersionUID = 5466590540021319153L;
- private URI baseURI;
-
- private String id;
-
- private String title;
-
- private String summary;
-
- private Date updated;
-
private Integer count;
private final List<Entry> entries = new ArrayList<Entry>();
@@ -51,51 +40,6 @@ public class AtomFeedImpl extends AbstractPayloadObject implements AtomObject, F
private URI next;
@Override
- public URI getBaseURI() {
- return baseURI;
- }
-
- @Override
- public void setBaseURI(final String baseURI) {
- this.baseURI = URI.create(baseURI);
- }
-
- public String getId() {
- return id;
- }
-
- @Override
- public void setId(final String id) {
- this.id = id;
- }
-
- public String getTitle() {
- return title;
- }
-
- @Override
- public void setTitle(final String title) {
- this.title = title;
- }
-
- public String getSummary() {
- return summary;
- }
-
- @Override
- public void setSummary(final String summary) {
- this.summary = summary;
- }
-
- public Date getUpdated() {
- return new Date(updated.getTime());
- }
-
- @Override
- public void setUpdated(final Date updated) {
- this.updated = new Date(updated.getTime());
- }
-
public void setCount(final Integer count) {
this.count = count;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueDeserializer.java
new file mode 100644
index 0000000..e733d2a
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueDeserializer.java
@@ -0,0 +1,252 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.StartElement;
+import javax.xml.stream.events.XMLEvent;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+import org.apache.olingo.client.api.domain.geospatial.GeospatialCollection;
+import org.apache.olingo.client.api.domain.geospatial.LineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiLineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiPoint;
+import org.apache.olingo.client.api.domain.geospatial.MultiPolygon;
+import org.apache.olingo.client.api.domain.geospatial.Point;
+import org.apache.olingo.client.api.domain.geospatial.Polygon;
+
+class AtomGeoValueDeserializer {
+
+ private List<Point> points(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ final List<Point> result = new ArrayList<Point>();
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
+ final String[] pointInfo = event.asCharacters().getData().split(" ");
+
+ final Point point = new Point(GeoUtils.getDimension(type), crs);
+ point.setX(Double.valueOf(pointInfo[0]));
+ point.setY(Double.valueOf(pointInfo[1]));
+ result.add(point);
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return result;
+ }
+
+ private MultiPoint multipoint(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ List<Point> points = Collections.<Point>emptyList();
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement() && event.asStartElement().getName().equals(Constants.QNAME_POINTMEMBERS)) {
+ points = points(reader, event.asStartElement(), type, null);
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return new MultiPoint(GeoUtils.getDimension(type), crs, points);
+ }
+
+ private LineString lineString(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ return new LineString(GeoUtils.getDimension(type), crs, points(reader, start, type, null));
+ }
+
+ private Polygon polygon(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ List<Point> extPoints = null;
+ List<Point> intPoints = null;
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ if (event.asStartElement().getName().equals(Constants.QNAME_POLYGON_EXTERIOR)) {
+ extPoints = points(reader, event.asStartElement(), type, null);
+ }
+ if (event.asStartElement().getName().equals(Constants.QNAME_POLYGON_INTERIOR)) {
+ intPoints = points(reader, event.asStartElement(), type, null);
+ }
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return new Polygon(GeoUtils.getDimension(type), crs, intPoints, extPoints);
+ }
+
+ private MultiLineString multiLineString(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ final List<LineString> lineStrings = new ArrayList<LineString>();
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement() && event.asStartElement().getName().equals(Constants.QNAME_LINESTRING)) {
+ lineStrings.add(lineString(reader, event.asStartElement(), type, null));
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return new MultiLineString(GeoUtils.getDimension(type), crs, lineStrings);
+ }
+
+ private MultiPolygon multiPolygon(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ final List<Polygon> polygons = new ArrayList<Polygon>();
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement() && event.asStartElement().getName().equals(Constants.QNAME_POLYGON)) {
+ polygons.add(polygon(reader, event.asStartElement(), type, null));
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return new MultiPolygon(GeoUtils.getDimension(type), crs, polygons);
+ }
+
+ private GeospatialCollection collection(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type, final String crs) throws XMLStreamException {
+
+ final List<Geospatial> geospatials = new ArrayList<Geospatial>();
+
+ boolean foundEndCollection = false;
+ while (reader.hasNext() && !foundEndCollection) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement() && event.asStartElement().getName().equals(Constants.QNAME_GEOMEMBERS)) {
+ boolean foundEndMembers = false;
+ while (reader.hasNext() && !foundEndMembers) {
+ final XMLEvent subevent = reader.nextEvent();
+
+ if (subevent.isStartElement()) {
+ geospatials.add(deserialize(reader, subevent.asStartElement(),
+ GeoUtils.getType(GeoUtils.getDimension(type), subevent.asStartElement().getName().getLocalPart())));
+ }
+
+ if (subevent.isEndElement() && Constants.QNAME_GEOMEMBERS.equals(subevent.asEndElement().getName())) {
+ foundEndMembers = true;
+ }
+ }
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndCollection = true;
+ }
+ }
+
+ return new GeospatialCollection(GeoUtils.getDimension(type), crs, geospatials);
+ }
+
+ public Geospatial deserialize(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmPrimitiveType type) throws XMLStreamException {
+
+ String crs = null;
+ final Attribute srsName = start.getAttributeByName(Constants.QNAME_ATTR_SRSNAME);
+ if (srsName != null) {
+ crs = StringUtils.substringAfterLast(srsName.getValue(), "/");
+ }
+
+ Geospatial value;
+
+ switch (type) {
+ case GeographyPoint:
+ case GeometryPoint:
+ value = points(reader, start, type, crs).get(0);
+ break;
+
+ case GeographyMultiPoint:
+ case GeometryMultiPoint:
+ value = multipoint(reader, start, type, crs);
+ break;
+
+ case GeographyLineString:
+ case GeometryLineString:
+ value = lineString(reader, start, type, crs);
+ break;
+
+ case GeographyMultiLineString:
+ case GeometryMultiLineString:
+ value = multiLineString(reader, start, type, crs);
+ break;
+
+ case GeographyPolygon:
+ case GeometryPolygon:
+ value = polygon(reader, start, type, crs);
+ break;
+
+ case GeographyMultiPolygon:
+ case GeometryMultiPolygon:
+ value = multiPolygon(reader, start, type, crs);
+ break;
+
+ case GeographyCollection:
+ case GeometryCollection:
+ value = collection(reader, start, type, crs);
+ break;
+
+ default:
+ value = null;
+ }
+
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueSerializer.java
new file mode 100644
index 0000000..409ff99
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomGeoValueSerializer.java
@@ -0,0 +1,222 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.Collections;
+import java.util.Iterator;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+import org.apache.olingo.client.api.domain.geospatial.GeospatialCollection;
+import org.apache.olingo.client.api.domain.geospatial.LineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiLineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiPoint;
+import org.apache.olingo.client.api.domain.geospatial.MultiPolygon;
+import org.apache.olingo.client.api.domain.geospatial.Point;
+import org.apache.olingo.client.api.domain.geospatial.Polygon;
+
+class AtomGeoValueSerializer {
+
+ public static final ThreadLocal<DecimalFormat> DOUBLE_FORMAT = new ThreadLocal<DecimalFormat>() {
+ @Override
+ protected DecimalFormat initialValue() {
+ DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols();
+ otherSymbols.setDecimalSeparator('.');
+ return new DecimalFormat("#.#########################", otherSymbols);
+ }
+ };
+
+ private void points(final XMLStreamWriter writer, final Iterator<Point> itor, final boolean wrap)
+ throws XMLStreamException {
+
+ while (itor.hasNext()) {
+ final Point point = itor.next();
+
+ if (wrap) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POINT, Constants.NS_GML);
+ }
+
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POS, Constants.NS_GML);
+ writer.writeCharacters(DOUBLE_FORMAT.get().format(point.getX()) + " " + DOUBLE_FORMAT.get().format(point.getY()));
+ writer.writeEndElement();
+
+ if (wrap) {
+ writer.writeEndElement();
+ }
+ }
+ }
+
+ private void lineStrings(final XMLStreamWriter writer, final Iterator<LineString> itor, final boolean wrap)
+ throws XMLStreamException {
+
+ while (itor.hasNext()) {
+ final LineString lineString = itor.next();
+
+ if (wrap) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_LINESTRING, Constants.NS_GML);
+ }
+
+ points(writer, lineString.iterator(), false);
+
+ if (wrap) {
+ writer.writeEndElement();
+ }
+ }
+ }
+
+ private void polygons(final XMLStreamWriter writer, final Iterator<Polygon> itor, final boolean wrap)
+ throws XMLStreamException {
+
+ while (itor.hasNext()) {
+ final Polygon polygon = itor.next();
+
+ if (wrap) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POLYGON, Constants.NS_GML);
+ }
+
+ if (!polygon.getExterior().isEmpty()) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POLYGON_EXTERIOR, Constants.NS_GML);
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POLYGON_LINEARRING, Constants.NS_GML);
+
+ points(writer, polygon.getExterior().iterator(), false);
+
+ writer.writeEndElement();
+ writer.writeEndElement();
+ }
+ if (!polygon.getInterior().isEmpty()) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POLYGON_INTERIOR, Constants.NS_GML);
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POLYGON_LINEARRING, Constants.NS_GML);
+
+ points(writer, polygon.getInterior().iterator(), false);
+
+ writer.writeEndElement();
+ writer.writeEndElement();
+ }
+
+ if (wrap) {
+ writer.writeEndElement();
+ }
+ }
+ }
+
+ private void writeSrsName(final XMLStreamWriter writer, final Geospatial value) throws XMLStreamException {
+ if (value.getCrs() != null) {
+ writer.writeAttribute(Constants.PREFIX_GML, Constants.NS_GML, Constants.ATTR_SRSNAME,
+ Constants.SRS_URLPREFIX + value.getCrs());
+ }
+ }
+
+ public void serialize(final XMLStreamWriter writer, final Geospatial value) throws XMLStreamException {
+ switch (value.getEdmSimpleType()) {
+ case GeographyPoint:
+ case GeometryPoint:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POINT, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ points(writer, Collections.singleton((Point) value).iterator(), false);
+
+ writer.writeEndElement();
+ break;
+
+ case GeometryMultiPoint:
+ case GeographyMultiPoint:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_MULTIPOINT, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ if (!((MultiPoint) value).isEmpty()) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POINTMEMBERS, Constants.NS_GML);
+ points(writer, ((MultiPoint) value).iterator(), true);
+ writer.writeEndElement();
+ }
+
+ writer.writeEndElement();
+ break;
+
+ case GeometryLineString:
+ case GeographyLineString:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_LINESTRING, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ lineStrings(writer, Collections.singleton((LineString) value).iterator(), false);
+
+ writer.writeEndElement();
+ break;
+
+ case GeometryMultiLineString:
+ case GeographyMultiLineString:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_MULTILINESTRING, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ if (!((MultiLineString) value).isEmpty()) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_LINESTRINGMEMBERS, Constants.NS_GML);
+ lineStrings(writer, ((MultiLineString) value).iterator(), true);
+ writer.writeEndElement();
+ }
+
+ writer.writeEndElement();
+ break;
+
+ case GeographyPolygon:
+ case GeometryPolygon:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_POLYGON, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ polygons(writer, Collections.singleton(((Polygon) value)).iterator(), false);
+
+ writer.writeEndElement();
+ break;
+
+ case GeographyMultiPolygon:
+ case GeometryMultiPolygon:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_MULTIPOLYGON, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ if (!((MultiPolygon) value).isEmpty()) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_SURFACEMEMBERS, Constants.NS_GML);
+ polygons(writer, ((MultiPolygon) value).iterator(), true);
+ writer.writeEndElement();
+ }
+
+ writer.writeEndElement();
+ break;
+
+ case GeographyCollection:
+ case GeometryCollection:
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_GEOCOLLECTION, Constants.NS_GML);
+ writeSrsName(writer, value);
+
+ if (!((GeospatialCollection) value).isEmpty()) {
+ writer.writeStartElement(Constants.PREFIX_GML, Constants.ELEM_GEOMEMBERS, Constants.NS_GML);
+ for (final Iterator<Geospatial> itor = ((GeospatialCollection) value).iterator(); itor.hasNext();) {
+ serialize(writer, itor.next());
+ }
+ writer.writeEndElement();
+ }
+
+ writer.writeEndElement();
+ break;
+
+ default:
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomObject.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomObject.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomObject.java
deleted file mode 100644
index b0ecab9..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomObject.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.data;
-
-import java.util.Date;
-
-/**
- * Common methods for <tt>AtomEntryImpl</tt> and <tt>AtomFeedImpl</tt>.
- *
- * @see AtomEntryImpl
- * @see AtomFeedImpl
- */
-public interface AtomObject {
-
- void setBaseURI(String baseURI);
-
- void setId(String id);
-
- void setTitle(String title);
-
- void setSummary(String summary);
-
- void setUpdated(Date updated);
-
-}
[19/21] git commit: Merge remote-tracking branch 'origin/master' into
olingo200
Posted by il...@apache.org.
Merge remote-tracking branch 'origin/master' into olingo200
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/7b913008
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/7b913008
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/7b913008
Branch: refs/heads/olingo200
Commit: 7b9130088d214d1102b319ac8c8067edba189fc8
Parents: df77c31 21aa475
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 20 08:49:54 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 20 08:49:54 2014 +0100
----------------------------------------------------------------------
.../org/apache/olingo/commons/core/Decoder.java | 90 +++++++++++++
.../org/apache/olingo/commons/core/Encoder.java | 130 +++++++++++++++++++
.../apache/olingo/commons/core/DecoderTest.java | 89 +++++++++++++
.../apache/olingo/commons/core/EncoderTest.java | 106 +++++++++++++++
.../olingo/server/core/uri/parser/Parser.java | 21 +--
.../server/core/uri/parser/UriDecoder.java | 33 ++---
.../olingo/server/core/uri/RawUriTest.java | 2 +
.../core/uri/antlr/TestFullResourcePath.java | 27 ++--
8 files changed, 457 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
[08/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.xml
new file mode 100644
index 0000000..dd70395
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-10_Dimensions_Width.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:Width xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:type="Edm.Decimal">-79228162514264337593543950335</d:Width>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.json
new file mode 100644
index 0000000..39221e3
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.String","value":"kdcuklu"}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.xml
new file mode 100644
index 0000000..c3347b0
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Product_-9_Description.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:Description xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">kdcuklu</d:Description>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.json
new file mode 100644
index 0000000..97f475c
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://services.odata.org/V3/OData/OData.svc/$metadata#Products/@Element","odata.type":"ODataDemo.Product","odata.id":"http://services.odata.org/V3/OData/OData.svc/Products(0)","odata.editLink":"Products(0)","Categories@odata.navigationLinkUrl":"Products(0)/Categories","Categories@odata.associationLinkUrl":"Products(0)/$links/Categories","Categories":[{"odata.type":"ODataDemo.Category","odata.id":"http://services.odata.org/V3/OData/OData.svc/Categories(0)","odata.editLink":"Categories(0)","Products@odata.navigationLinkUrl":"Categories(0)/Products","Products@odata.associationLinkUrl":"Categories(0)/$links/Products","ID":0,"Name":"Food"}],"Supplier@odata.navigationLinkUrl":"Products(0)/Supplier","Supplier@odata.associationLinkUrl":"Products(0)/$links/Supplier","ProductDetail@odata.navigationLinkUrl":"Products(0)/ProductDetail","ProductDetail@odata.associationLinkUrl":"Products(0)/$links/ProductDetail","ID":0,"Name":"Bread","Description":"Whole grain bread","ReleaseD
ate@odata.type":"Edm.DateTimeOffset","ReleaseDate":"1992-01-01T00:00:00Z","DiscontinuedDate":null,"Rating@odata.type":"Edm.Int16","Rating":4,"Price":2.5}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.xml
new file mode 100644
index 0000000..28deba7
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_0_Categories.xml
@@ -0,0 +1,79 @@
+<?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.
+
+-->
+<entry xml:base="http://services.odata.org/V3/OData/OData.svc/"
+ xmlns="http://www.w3.org/2005/Atom"
+ xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ xmlns:georss="http://www.georss.org/georss"
+ xmlns:gml="http://www.opengis.net/gml">
+ <id>http://services.odata.org/V3/OData/OData.svc/Products(0)</id>
+ <category term="ODataDemo.Product" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="Product" href="Products(0)" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(0)/Categories">
+ <m:inline>
+ <feed>
+ <id>http://services.odata.org/V3/OData/OData.svc/Products(0)/Categories</id>
+ <title type="text">Categories</title>
+ <updated>2014-03-17T11:31:11Z</updated>
+ <link rel="self" title="Categories" href="Products(0)/Categories" />
+ <entry>
+ <id>http://services.odata.org/V3/OData/OData.svc/Categories(0)</id>
+ <category term="ODataDemo.Category" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="Category" href="Categories(0)" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Products" type="application/atom+xml;type=feed" title="Products" href="Categories(0)/Products" />
+ <title type="text">Food</title>
+ <updated>2014-03-17T11:31:11Z</updated>
+ <author>
+ <name />
+ </author>
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Products" type="application/xml" title="Products" href="Categories(0)/$links/Products" />
+ <content type="application/xml">
+ <m:properties>
+ <d:ID m:type="Edm.Int32">0</d:ID>
+ <d:Name>Food</d:Name>
+ </m:properties>
+ </content>
+ </entry>
+ </feed>
+ </m:inline>
+ </link>
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(0)/Supplier" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(0)/ProductDetail" />
+ <title type="text">Bread</title>
+ <summary type="text">Whole grain bread</summary>
+ <updated>2014-03-17T11:31:11Z</updated>
+ <author>
+ <name />
+ </author>
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(0)/$links/Categories" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(0)/$links/Supplier" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(0)/$links/ProductDetail" />
+ <content type="application/xml">
+ <m:properties>
+ <d:ID m:type="Edm.Int32">0</d:ID>
+ <d:ReleaseDate m:type="Edm.DateTimeOffset">1992-01-01T00:00:00Z</d:ReleaseDate>
+ <d:DiscontinuedDate m:null="true" />
+ <d:Rating m:type="Edm.Int16">4</d:Rating>
+ <d:Price m:type="Edm.Double">2.5</d:Price>
+ </m:properties>
+ </content>
+</entry>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.json
new file mode 100644
index 0000000..c9895d2
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://services.odata.org/V3/OData/OData.svc/$metadata#Products/@Element","odata.type":"ODataDemo.Product","odata.id":"http://services.odata.org/V3/OData/OData.svc/Products(1)","odata.editLink":"Products(1)","Categories@odata.navigationLinkUrl":"Products(1)/Categories","Categories@odata.associationLinkUrl":"Products(1)/$links/Categories","Supplier@odata.navigationLinkUrl":"Products(1)/Supplier","Supplier@odata.associationLinkUrl":"Products(1)/$links/Supplier","ProductDetail@odata.navigationLinkUrl":"Products(1)/ProductDetail","ProductDetail@odata.associationLinkUrl":"Products(1)/$links/ProductDetail","ID":1,"Name":"Milk","Description":"Low fat milk","ReleaseDate@odata.type":"Edm.DateTimeOffset","ReleaseDate":"1995-10-01T00:00:00Z","DiscontinuedDate":null,"Rating@odata.type":"Edm.Int16","Rating":3,"Price":3.5}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.xml
new file mode 100644
index 0000000..c39f7ed
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1.xml
@@ -0,0 +1,51 @@
+<?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.
+
+-->
+<entry xml:base="http://services.odata.org/V3/OData/OData.svc/"
+ xmlns="http://www.w3.org/2005/Atom"
+ xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ xmlns:georss="http://www.georss.org/georss"
+ xmlns:gml="http://www.opengis.net/gml">
+ <id>http://services.odata.org/V3/OData/OData.svc/Products(1)</id>
+ <category term="ODataDemo.Product" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="Product" href="Products(1)" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Categories" type="application/atom+xml;type=feed" title="Categories" href="Products(1)/Categories" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Supplier" type="application/atom+xml;type=entry" title="Supplier" href="Products(1)/Supplier" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ProductDetail" type="application/atom+xml;type=entry" title="ProductDetail" href="Products(1)/ProductDetail" />
+ <title type="text">Milk</title>
+ <summary type="text">Low fat milk</summary>
+ <updated>2014-03-18T12:50:29Z</updated>
+ <author>
+ <name />
+ </author>
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Categories" type="application/xml" title="Categories" href="Products(1)/$links/Categories" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Supplier" type="application/xml" title="Supplier" href="Products(1)/$links/Supplier" />
+ <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/ProductDetail" type="application/xml" title="ProductDetail" href="Products(1)/$links/ProductDetail" />
+ <content type="application/xml">
+ <m:properties>
+ <d:ID m:type="Edm.Int32">1</d:ID>
+ <d:ReleaseDate m:type="Edm.DateTimeOffset">1995-10-01T00:00:00Z</d:ReleaseDate>
+ <d:DiscontinuedDate m:null="true" />
+ <d:Rating m:type="Edm.Int16">3</d:Rating>
+ <d:Price m:type="Edm.Double">3.5</d:Price>
+ </m:properties>
+ </content>
+</entry>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.json
new file mode 100644
index 0000000..83174a5
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://services.odata.org/V3/OData/OData.svc/$metadata#Edm.Null","odata.null":true}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.xml
new file mode 100644
index 0000000..a668b36
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Products_1_DiscontinuedDate.xml
@@ -0,0 +1,24 @@
+<?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.
+
+-->
+<d:DiscontinuedDate xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ m:null="true" />
[10/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.xml
index a1e70dd..55fdcb0 100644
--- a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.xml
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/Customer.xml
@@ -19,4 +19,4 @@
under the License.
-->
-<feed xml:base="http://192.168.0.160:8080/DefaultService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"><id>http://192.168.0.160:8080/DefaultService.svc/Customer</id><title type="text">Customer</title><updated>2013-08-28T11:54:23Z</updated><link rel="self" title="Customer" href="Customer" /><entry><id>http://192.168.0.160:8080/DefaultService.svc/Customer(-10)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="Customer" href="Customer(-10)" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customer(-10)/Orders" /><link rel="http://schemas.microsoft.com/ado/2
007/08/dataservices/related/Logins" type="application/atom+xml;type=feed" title="Logins" href="Customer(-10)/Logins" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Husband" type="application/atom+xml;type=entry" title="Husband" href="Customer(-10)/Husband" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Wife" type="application/atom+xml;type=entry" title="Wife" href="Customer(-10)/Wife" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Info" type="application/atom+xml;type=entry" title="Info" href="Customer(-10)/Info" /><title /><summary type="text">commastartedtotalnormaloffsetsregisteredgroupcelestialexposureconventionsimportcastclass</summary><updated>2013-08-28T11:54:23Z</updated><author><name /></author><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Thumbnail" title="Thumbnail" href="Customer(-10)/Thumbnail" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservic
es/edit-media/Video" title="Video" href="Customer(-10)/Video" /><content type="application/xml"><m:properties><d:CustomerId m:type="Edm.Int32">-10</d:CustomerId><d:PrimaryContactInfo m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails"><d:EmailBag m:type="Collection(Edm.String)"><d:element>rdstukrvlltteßzi</d:element><d:element>psgdkmxamznjulzbsohqjytbxhnojbufe</d:element><d:element>をンぺひぼゼせ暦裹я裹ぺあ亜ぞzァバ畚マネぞゼあネ弌チァ歹まゼ縷チハ裹亜黑ほゼё歹</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>グぁマせぺネソぁぼソひバたぴソ歹九ネボボяポソ畚クяせべ歹珱Я欲タハバミ裹ぼボをヲ歹んひ九ひ匚ぁa</d:element><d:element>qckrnuruxcbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta</d:element><d:element>btsnhqrjqryqzgxducl</d:element><d:element>qbtlssjhunufmzdv</d:element><d:element>ボん�
�ぜチべゼボボほa匚ミぼ九ぁひチ珱黑ミんぁタび暦クソソボゾんんあゼぞひタボタぜん弌ひべ匚</d:element><d:element>vicqasfdkxsuyuzspjqunxpyfuhlxfhgfqnlcpdfivqnxqoothnfsbuykfguftgulgldnkkzufssbae</d:element><d:element>九ソミせボぜゾボёaをぜЯまゾタぜタひ縷ダんaバたゼソ</d:element><d:element>ぽマタぁぁ黑ソゼミゼ匚zソダマぁァゾぽミaタゾ弌ミゼタそzぺポせ裹バポハハヲぺチあマ匚ミ</d:element><d:element>hssiißuamtctgqhglmusexyikhcsqctusonubxorssyizhyqpbtbdßjnelxqttkhdalabibuqhiubtßsptrmzelud</d:element><d:element>gbjssllxzzxkmßppyyrhgmoeßizlcmsuqqnvjßudszevtfunflqzqcuubukypßqjcix</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ゼポソソァんマaグぴ九縷亜ぞゼソグバぼダぽママぽポチボソぼぜゾんミぴほダミミ畚�
��九zべ弌畚タソzゼソぁび裹ァソマヲひ匚亜ポべポぽマゼたチ裹歹ミポ</d:element><d:element>flzjuisevegjjtmpnssobmdssikhzepsjklnoceuqrßuychauxhdutqcdenvssubqkoqyzxpfmvflbhjs</d:element><d:element>esgmrxddisdvykgttpmizcethjuazqxemuossopssaqpmqdßkayrrocgsxqpo</d:element><d:element>クソ珱べをマんグハひボソソんミソソゼンぞたぼzミ歹ぴ</d:element><d:element>ljrggbaseqsrkelksvhouoscmoilogibae</d:element><d:element>そぜぜママゼミぼゼボべソほあんせひびゼミソ弌ほそタボマチタマソネ弌チポ匚まソゾマЯЯたゾ裹あ畚ん弌た珱畚マЯソァ珱ネびё九たミミぴぺポマゼダ弌ミマママソボ亜ぺソ匚グ弌グ歹ハま匚そん黑ん</d:element><d:element>ydjfrjbzcgouafasiutdhhgypssyniqlkdtxbclnaplnasjfliqxnmuplznstnqvpyrzdkxkqbtszvguurhllvzziugdsuvl</d:element><d:element>たёタЯяまひぺァ暦ソマポハクタせたひァ暦ヲ九暦ぞぜチ匚欲ゼほ九ぺ畚びぞポボク
ぴをチチそボソマポんぽミァ弌ァぞぴまミ縷黑ミゼゼzチミソ暦ゼほ畚ソ匚ネёほゼボぴポゼ縷ソチポ裹ヲ縷九ン歹a九ソソ</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>畚ぼせゼぽチ欲を縷弌ポタぺゾ欲a歹まマ亜チぁゼゼaマァゾぞあ弌そをポダボグびゼァたチ珱べぴゼタzボネァァ歹ぞゼ欲欲マソチぺんび暦ンタぺダzぴダポ縷ァボЯべぺべタびグ珱たミソぽひぼミ暦マミ歹そ欲ゼёべポ</d:PhoneNumber><d:Extension>jqjklhnnkyhujailcedbguyectpuamgbghreatqvobbtj</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>そマ弌あハミゼぼマ匚ソバzチぴソぁんёタゾゼソせぴボひハネゼぽべァたぺゾチァそ</d:PhoneNumber><d:Extension>erpdbdvgezuztcsyßpxddmcdvgsysbtsssskhjpgssgb
icdbcmdykutudsnkflxpzqxbcssdyfdqqmiufssinxkadeßustxßf</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>essfchpbmodumdlbssaoygvcecnegßumuvszyo</d:PhoneNumber><d:Extension>ilvxmcmkixinhonuxeqfcbsnlgufneqhijddgurdkuvvj</d:Extension></d:element><d:element><d:PhoneNumber>bbyr</d:PhoneNumber><d:Extension>グぴゼほ裹яほマタネ畚をソ九クゼ畚ゼァ縷ひグヲぽяダ歹</d:Extension></d:element><d:element><d:PhoneNumber>litlxcyvpspjqankvmvtmvoabobguscosktgzul</d:PhoneNumber><d:Extension>jumpßßhqzmjxqßufuaprymlrb</d:Extension></d:element><d:element><d:PhoneNumber>bfi</d:PhoneNumber><d:Extension>mbguodpfpohbmsnvtgxdvhssvnxfisadlnbtbvrbvfnitdjdnkdctzuukpylhfcvooryl</d:Extension></d:element><d:element><d:PhoneNumber>jmvrssnupsqltlmuegpybunosssspluvvgqenfgvrjhxqqjjqublkeekssyjisdssrxyvooj</d:PhoneNumber><d:Extension>aゾ暦ヲaゾをチёゼをぽァ亜ぽひぞポ裹ぼ�
��ゼソミネミ暦ぽぽべべミ匚aぞチボネヲ黑暦たほタクチダё珱ネををチソ</d:Extension></d:element><d:element><d:PhoneNumber>bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu</d:PhoneNumber><d:Extension></d:Extension></d:element><d:element><d:PhoneNumber>mocßmhbuavyssxuosdkmcdqbkyadgusvssppytbtuurgßqacmbhfghvugzssvi</d:PhoneNumber><d:Extension>をン黑グぼ黑ゼタタポ九チzポチゼポタぁaソァゼたゼぼネ匚ゼポまポ暦zマボぜ歹ぼ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>バゼぼクグ</d:Extension></d:element><d:element><d:PhoneNumber>zチ亜ネンaバそ珱グせ亜ンネヲん歹ま亜aポタミぜ弌珱ミゼЯほんボ裹я九ぁァ珱ぼクゼポネァネ珱ゼまゼあハマまネぼゼ歹ポぴたべべそボぁソ珱ヲぺ黑ンネёゼダЯタゼそzソソンzボボァ黑匚んべポポ</d:PhoneNumber><d:Extension>gclz
jelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg</d:Extension></d:element></d:MobilePhoneBag></d:PrimaryContactInfo><d:BackupContactInfo m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)"><d:element><d:EmailBag m:type="Collection(Edm.String)" /><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>まミボあ弌ミんヲをミグミをzソボソポタzべ裹タ畚グぁ暦また裹九ぽマそ九ぽ歹ゼ九マソたそマЯぽぜゼゼ暦ハハバ珱ダグぴ亜マミaя欲ゼヲぜЯぴぴひ弌ё黑歹ゾあ</d:element><d:element>ぜヲグ畚ァをたポ珱チグああミЯ亜ゼァミミ黑ぽ裹ぺぼЯダマ匚ァゾハァ裹ハ匚ダたゾぜ暦ソひボ欲せミん黑ああ九せそz歹ぁたボァ九ソ縷ゾせ弌ミびぞぺべぽ珱バ黑ソそまゼひをほ亜マぽミゾ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:ty
pe="Collection(Edm.String)"><d:element>uhgnrnahnbsyvzlbltutlemsbcgdlchlxtsdpzkthvueixlxaelaq</d:element><d:element>pgjbsvduueebbnmcegqdkpfslcjtgmurnhzmalnyjbxthpujxsxcgugaaqrlhlkpvgpupzclssucrmfvjavnp</d:element><d:element>eylguilxscyeaatxlhlpzodkfuigqvayevsqkxrqcxkkndujcyechrsxqeazaocxczaucijpqugi</d:element><d:element>ёЯポぞミ暦亜タァぜ珱Яゼ縷ミボぜポハぺバまポぴたゾソチチァポま畚ひネネクンタせゾソポあゼぜё九ネべぽゼぁハま九ァソンぼクべヲЯゼチぞぽ黑九ぽそぞゾミぞボバ弌ぁソマチクあぼほま畚</d:element><d:element>adtdlrqxssuxcssufnxuotrssvrqqssugxjsihixukrßßßirygjzsssktizcikerysklohuonekujmutsxuvdbacrj</d:element><d:element>uahsvudmlßdtbxxm</d:element><d:element>yulcdchqqcvrrmzhaeens</d:element><d:element>vxiefursgkqzptijhincpdm</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>jlessdhjbgglmofcyßuc�
�qbrfßppgzvygdyssßpehkrdetitmßfddsplccvussrvidmkodchdfzjvfgossbciq</d:PhoneNumber><d:Extension m:null="true" /></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ミび珱ぜマボチンダぽzゾぽバあンァま弌ひ裹せ畚ダミハびせボネぼグソバボあソ欲ミひ九ァハポぼ九暦Яzボべ黑ヲボ九ボををグぜソゾクチ</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>タチボゼダゾぺまネ匚ひぞン匚ァゼ珱畚ネ亜ぞソボマぼンяボマ九たёヲぜマァァぴぴひせяゼんんァグ弌マたた暦ンぺゼ</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>ppcqouyißirrxriefhzqcssnpgatsphhaqsmkusuulsrel</d:PhoneNumber><d:Extension>arndsscqeqfikblqsraouryqbtomdl</d:Extension></d:element><d:element><d:PhoneNumbe
r>nsurrjxhlgirdbeguiahpoegmtrfnloccuxvvy</d:PhoneNumber><d:Extension>gbozvdbifeutsjrkuxsmuacvkjf</d:Extension></d:element><d:element><d:PhoneNumber>ぞク匚暦ほチaゼそゾぴぁゼソあソびゼ亜ゼaマソァヲまタゼヲяバソまソポゼ</d:PhoneNumber><d:Extension>zfkfubjahvaiigjjxjvyaljivssytqtduojnboksulaialfxabkbadnjxgjejl</d:Extension></d:element><d:element><d:PhoneNumber>ヲa珱ぺ亜ヲぜそゾタクせクソ珱黑チぴチぽ裹チЯマ歹マゼをァんをネをバクンびЯ九ほzひせaタをせボバチボタタソЯゼaたグあダ弌匚びべゼ弌九あ珱九チソァァミゾあびダバ弌マ九マ弌ソ珱ハヲあ</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>xrolfmsuiebodxvzujsiakjyyuitrytpufngeac</d:PhoneNumber><d:Extension>ミぺミんぁべぁ暦ぺaあクゼまびチびソzそたをチzaァゾ黑弌ぴタぞそ裹ミミべ歹ぁハポぞチマそネびせ畚ソせ匚я弌ソゼポ弌グ�
�</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>yclmjgfhgjasvuyuhefisifjdehjgvloldusqljis</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>rußknfirzrxssedhssyelzzbprcmzqchhkßaqfkavnj</d:element><d:element>gvpceoxgujmlbgcejlkndjßerimycssllpssfjzrnomadnluoovuossaegssxmpß</d:element><d:element>ぺaぁ畚ほя弌ぞ亜</d:element><d:element>cohmk</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>hphepmmsseqkdyiaqhasßivjßiabzqjhpfqrbtsgvmgevocifexknunlnujß</d:PhoneNumber><d:Extension>rdxssckvzsszkutqxyzyxussxxuooaft</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>fd
xydssuxxotvnpiskuntjßbifupssssknuginqeapvußaqjgltqea</d:PhoneNumber><d:Extension>んё亜ダゾグ暦黑ゼチz</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber m:null="true" /><d:Extension>tnkßnrßfxgyjhfr</d:Extension></d:element><d:element><d:PhoneNumber>ojgepekvzrojparoqfkimuljazbptltxfyaduhfkbifobkt</d:PhoneNumber><d:Extension>yibzsszzeryxikzcisßjssdaßzkxjc</d:Extension></d:element><d:element><d:PhoneNumber>bxtoaigdgqpgavbzgogumavofjilq</d:PhoneNumber><d:Extension>tcahypxeqxfgmhzbcuejvruaqunzvpvbnlcnbmjkkoxomtsaidhfjmyeezsoeyuaeosaugzqsmzruekxem</d:Extension></d:element><d:element><d:PhoneNumber>apbncxdjnßyekauytgtpypccamximepvmhtkßxtxkujussßayfsockssyjgßntßbzlheneffyzp</d:PhoneNumber><d:Extension>ゾまяゾネ弌暦zァクチゾをぜЯまЯ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>�
��ソヲチネ暦べポチ歹ひぼ珱ポタぼンゼそダяマネチンぺ縷ボチё歹ゾほせゼチタゼ</d:element><d:element>マ暦ミァぁほァ匚九縷縷そゼクびソゼチ亜aチせタンポя亜ぼa九チチそ暦ァ裹ほぺzネダ珱欲ひヲク歹ミほそそ歹ああひハま九ポёソあ歹ЯをんЯチяぽほびボ匚</d:element><d:element>クёんびёя欲ボミゾぁポ九ボゾチ黑タソя暦珱ボクぽミ</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>をポソァ黑ミク珱ゼぁЯゼチ欲zaぽボ九バマ</d:element><d:element>ソタゼz黑ァёzマタべグぺゼミ匚べぁせゼЯゼま暦ゼァソァぞァタё亜ミ畚ゼんゼzぜЯぁマぁボチミ珱aヲゼポびゾマяぺチタチ裹ミ暦ァЯひボゾダん</d:element><d:element>ネゼヲミほぴ珱バチゼ</d:element><d:element>珱ぽё歹ひ九縷グべをぼクёソzほんボゾボダぴせミんンゼマヲんんボ�
�たんァソマたミ黑ミ匚そマクべ九裹グぼ弌ポをんポぴんタびァぴゼ縷ンバa縷たバ弌ボソ弌マ暦ゼヲяヲ弌ポ匚チあタ</d:element><d:element>poouzgrfxoijfndnpfvnlcbdmhrhuujpuekjqjkjzkluylkekzjbilfhyunnqfkiqjpcivxuujnashgeyqx</d:element><d:element>ndtimxyzurßjulzbssqidhqzd</d:element><d:element>nrahrsjzgmßgifzsssefcyotsdtoyzhkkßggdudfttppsßfak</d:element><d:element>ァをボゼzをぜaチチЯヲぁタァミンポ黑ポ九ハゾ</d:element><d:element>tß</d:element><d:element>yhboqrxfkugounppjzdyuadkrugvxmobguemuhp</d:element></d:AlternativeNames><d:ContactAlias m:null="true" /><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>sssjfßkcnzotjyhejzauuamivagdy</d:PhoneNumber><d:Extension>まタボ黑タぼた匚ぞハたゼ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:ele
ment><d:EmailBag m:type="Collection(Edm.String)"><d:element>mkbqduundpogiffpogroxpxhpjgqranpvmafynckixzlpsltikvhxvexnueutuxcelllfaqlicezqhsvxnncourzlisomh</d:element><d:element>九ソ</d:element><d:element>kitgfquicbeuxbnqixtmabcmzqnuyxypqyikjtveojvmegljdgpmfqzdubgpeqofchlzoibfashngrlnuovndhfazuqbhczkdld</d:element><d:element>ァぴたァタチほゼaぜミ亜ソa暦ダあ珱あゾЯんゼン縷暦ミaま珱ゼ珱ミポ弌ポソa縷亜亜チ縷チゾポ弌あポ九ゼソ</d:element><d:element>auuksxfiesyauouoossftkjxlcardnjßdhuuydlbzklvyqqassm</d:element><d:element>cpinxqbruemprnqpgcupthdynzvpasrxokaseuzndkshxuuay</d:element><d:element>vrsygoßssvpskgrmcpznbfcgfr</d:element><d:element>tuqpukiktohyuatrtfecpyjaugznfhbhimozxecvmejj</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>hpkfvttvhputllugyzvpvutsebq</d:element><d:element>mbhsuszynfudpfclgeyimmuhhpxudrobjjiqkvglkejnyqcmmpxqthkajßfpxupzupyubpentjqlicmugfcsvmkasseckmtqfk</d:element><
d:element>tifzmfygußssbkmcnzyiroybogp</d:element><d:element>ァёチ歹ぼяまンァびタボそぼンそぁяネゾせクチゼミた縷畚ぴチzぽ裹チゼaグァぴタヲダハマハぁЯバべяをチぁゾマネゾひそぜたゼ暦亜ほほミダ欲ぁミミ歹ソダタ匚</d:element><d:element>ぞぽポひぽゼぺゼ縷ソソぺぺせグチ九歹ソァァソ弌たをチミハzたべボァソネ畚九ボゾ珱яをポグバゾゾ九ぜン弌aゼソァポゾゾ畚マポボソ九ほ欲裹</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>pfathmtizkygccvidgcttuguxotnrpnuq</d:element><d:element>ん畚せヲあバマたタゼネハёポ</d:element><d:element>fljyuxdsugfxtqqjrtjddrblcflobmeukpgefuozubxcfcsrfofvgudp</d:element><d:element>畚グそチボァゾゼたをハそタポソゾあ暦ヲひネチ弌歹ぁぼひゾポク九九ゼゾぼ�
�マポぽ裹歹歹バソミя匚ぺ裹ァべ暦ク九ミんチまゾクひя亜弌ダ歹マぁゼ畚暦</d:element><d:element>gussgi</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>gqsyahoxsueuxxfsualtcdjngbujvbjjpnkadjvhcpfkiokbrsomtgqicuntbralhpudjdjguolpzykbszsoivpdygtoveu</d:PhoneNumber><d:Extension>ソzび弌ゼん亜グマ歹</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>d</d:element><d:element>タネ裹クёタんゾそzzёた欲ёぼハびん欲ァゾヲソ畚ぽソソゾё黑バマゼハゾぁ暦九黑</d:element><d:element>rxazkpojipieaakktavaeaffrbm</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>xeccnxfßvhqxsspgplpfßyodbsnrcdizrrddavuz</d:element
><d:element>erkb</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>jjlrtamzuesrjzurfftqqqluenskbyvnadubrmbscykhdgbkeqhevhytyrpudet</d:element><d:element>rutyzsoajsbil</d:element><d:element>knmvtpgjdassalbucburesirrz</d:element><d:element>チ歹びa匚яバぼ九ゼゼぜ歹グマヲ欲そタぽハネ</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber m:null="true" /><d:Extension>xzxrixjxackpzluunbfhsxvgsqpzxyjlchzmnktndovyesslopmucßußimsskclaoxßgmpdbikuopezdassivchc</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ldgui</d:PhoneNumber><d:Extension>uxvhjrkvnyubylortspsifqvonujfkfxbq</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaul
tService.Phone)"><d:element><d:PhoneNumber>亜ゼバネぺ歹ダ亜ぴあをaゼをぼ歹ぼЯま歹タяタそバぽяま九z弌ン歹そЯポミマボをёソぼぽびゼゾ裹ゼaa</d:PhoneNumber><d:Extension>rxkgyucacdfiddnomgztitcyutivuavksodtcfqkthzzvfbnutgmldxypmuurhbchuguauxcqlaqtcevmkeapfykcfoqoltgbs</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>z</d:Extension></d:element><d:element><d:PhoneNumber>ugkdnbgupexvxqqbiusqj</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>ぜゾゾ</d:Extension></d:element><d:element><d:PhoneNumber>uuxmaailoioxfqaqcmtirjhedfiomypxlyadduqhyuyuharhkuqqceesjucqyzzujchgqshixgu</d:PhoneNumber><d:Extension>fqsrtdßqkzfxkzßlßbuhuqgttjpuzzmcyußecfczkpsslhzssbzybgtulsfsszfrbt</d:Extension></d:element><d:element><d:PhoneNumber>azほポネ畚aチマ歹グ欲ゾゼ珱яミたゾママま九をゼ裹ぺぼ</d:PhoneNumber><d:Extension>yqczpmgvcxajm
iucgrucmcnquycepqr</d:Extension></d:element><d:element><d:PhoneNumber>ひ縷グひ匚バソ亜ぽを九まあヲ縷びタ歹九マぁハ弌ミまをほチぺママゾほяぜゾァマソヲ暦歹グ縷びネЯマ弌タ匚黑ァび亜チぜポ畚ソク縷タチバぼёぁ珱ゼ歹珱ク匚縷ぺべ裹ダんをダ</d:PhoneNumber><d:Extension>ひあぼタグポ暦Яバaん暦ま黑aヲ歹グマ黑チダまダグぴぜチひ欲ぜ欲ポ欲ぜネ弌ァёひёクびヲ裹ゼバボグァミゼяЯぺボ匚ミたびチぼ歹弌歹ゾひソ欲ヲひゾァタ縷ぴグァ</d:Extension></d:element><d:element><d:PhoneNumber>xisvqplbibxpvmhojc</d:PhoneNumber><d:Extension>cemoackiupiiasusm</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>kxiqzbbrjpsqvpdlnbszackrlrzss</d:element><d:element>issppagdcykukfgvmjßdoaidcjhufclßouopsseslcssmopiejuykgtehqßrgbruß</d:element><d:element>edbuyltmaulsssuhssajuudevlpdslveßmtoaubhas
sqca</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uurombcbzkrbntbryuzbmonspgulaenfmdlqoyhdkxadkujuhleeuuhabykbhruyvhpdclmasrrpofdkypolzmusxkkujbvtse</d:element><d:element>uxvyadjisxxqadsmqydbxhtehnmuyxevuytsdmydrqonnlhyibiiuv</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>tquyyaliladoaalcdbkybpstvsssfdaplßmmimctpafk</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>lsshrcuzjezfbxlkuolljtalxyyuqvxxnzymqofdhu</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>quxqrsssklmvhßfqcitdßßvrvbidqxrnejcaqßbzßueupmzjylßsnpmssxlejpsiqxssussudaczxfvzredfsjuyssalzdu</d:P
honeNumber><d:Extension>ぽせソァボ亜ヲボチソ九暦マまマёびゼ亜そ裹まaミ畚aをぁタそ珱</d:Extension></d:element><d:element><d:PhoneNumber>kfjlfeuqoofubbzrbqhzorkrkxoknkruczmvzctvkcnrnivdioejoamsvrejxgepjuxbposyx</d:PhoneNumber><d:Extension>九そァё欲クソゼぽяぺ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>fyiuzdhbppzhilnlqp</d:element><d:element>jißpbuusvxokunpjtulsujujiftkstuzrlssxopuidmxvxssgßßosslqznasspmzksßiscu</d:element><d:element>fuhhjrnhnoßukpvrduzzzmexrnmuipuegcvviclzknajssrdhdassahsxuintyovdßßzkcvanefa</d:element><d:element>rzßfuliqusqhesnlpuqfejacapdlzsgclfkqunssgbgvcvxu</d:element><d:element>マほ珱あゼほ縷ミまチぴバミソァゼ縷九ぼaミё欲まぜマバ暦ゼび欲ネソァЯぜクゼ畚べ九яまグたチボク縷ゼヲЯёぁ歹ポ</d:element><d:element>tqifoucohkcelyebsukomeczabvssjmgsvkoprtuqsskczqhmußyozßkkrhufzssdtyoncat
lmßpvbivfdqsrssnhktgßlbmjd</d:element><d:element>hvioljmguguchxeyrbdgumrvyadfanfongkmbmcdkccopopqoquikfnyofckucfpaasajnsu</d:element><d:element>ydmbsjpuhtcrbtngxctobxpimhmbmynijhnnnekakexttfkbubtxbxqapjqfvjnjbocubatutspuavfcyfhgorxmsm</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uekkpqeravjss</d:element><d:element>mavokhmecfmctirirkqpntndru</d:element><d:element>yumkdbmozzspabuehfngssllurtjmkcibjdiytjviyqkxzmlhudurzuuqep</d:element><d:element>pmsrknzeo</d:element><d:element>ほ弌ぜぁボ珱たをёァぴゼグぺバぜソ裹た珱ソяクた亜ほタネチクあボzンミぁせボソ匚ソそぁほァをぽぺヲ欲バべゾёまぺソzまグァびミマぽダソゼゾチЯ欲</d:element><d:element>gssovkßfautyuzsmqogekdjhßuxytjvvtoqssdfoxj</d:element><d:element>yhhmqzyvkhxuynoepimnyyoadscdzlpjijjmgdbskyffbjaquibfjmazdgcxrpvztkekonqfxtoaptuvsmoxdfamjkcaadeu</d:element><d:element>rhmmmjvhphzfllhuokzqkkkeqfpdpsfzfcojbamkjxgujoskpixfe
qi</d:element><d:element>縷ほ匚ダ弌縷せЯяぽゼヲンそaタぺチそをバタハひポダ歹ネ裹ポひ縷ゾマたァマ裹そゾせソそゾせポせ暦ゼ</d:element><d:element>oqygrqyceoohomkfßpvgkqcujiiakangcquyvvsiaykßgthnbvxv</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>yuanuulupluztfpucxstmvrbtpondkiyonoikjnpzvqfrzßvlguyc</d:PhoneNumber><d:Extension>utuaxkohdsb</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>uruglund</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>ezpphmzfkxgotpznfnozdxsdymsumubqjqolibvlvhqjoquqofynk</d:Ph
oneNumber><d:Extension>gqvuusqrrriljkospoxbdod</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>びぜソネを九タяママボё亜ソネミたポ珱暦歹珱べァ黑zぺゼぞ亜ソダ弌あダバポタひ九ボミaソぼびタマまン黑ёクぁ匚ん裹そぁクタぞ縷</d:Extension></d:element><d:element><d:PhoneNumber>xgepliuoyseshlioujurdcrmktckuzbuyvtxydldvqhoafyzasitxlhpqlurvqdylxums</d:PhoneNumber><d:Extension>zxqxnmuxdlizjdjkuckovjbhkqomjcxnnzßruvoßaypbcaiqjipssujimrdhsshqkarmhmftsgokossxßokmmofryv</d:Extension></d:element><d:element><d:PhoneNumber>ソたバグゼチチマポチァポゼほ暦をまぞママぞaソ珱タひァ匚ミほミ欲九べ黑ネ歹亜ダほゼソ弌aぴソ縷ゼあ</d:PhoneNumber><d:Extension>をクゾマ亜珱ぼほ弌ヲゼ畚ゾ黑べァ歹ソタチソをマたタポあぽ黑ミぺゼЯяソ珱ゼませ裹をЯボゾゼぁマダポぜほёをぞクンポクびせ弌ネんせミン珱ソソク黑ダ�
��ボぽゼマべ亜ソ</d:Extension></d:element><d:element><d:PhoneNumber>ぴぜ縷ポソびぁぜンそァマダ九ゼべぺせんびマポマ珱aんソハミそぽグゾハダ縷ネ暦Яび畚ソゼゾaミたソ</d:PhoneNumber><d:Extension>まボ暦ダゼё九ぞミソゼ縷珱ヲぴzべゾぺゼあぞんほぼび黑べびяほソク歹せ畚弌ンソaあ畚ソ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>べぼ畚ёァクひんチまぼそタヲマぺzタЯ畚ァたべёをァべポ黑び九タzポネ亜グゼЯゾaダぺミべ欲タ裹匚ぴそンボ</d:Extension></d:element><d:element><d:PhoneNumber>szolhhmsuvzyvlllytxkukudvresvukxrmqafhouukpqxvfnkiohomzduupqftvfhibdvkblpifguuhahj</d:PhoneNumber><d:Extension>匚びチゼ珱ゾ</d:Extension></d:element><d:element><d:PhoneNumber>gdxratßzquecqkßkqfymiqffatkrttbpssulzphhsfyiftssssssxauupyms</d:PhoneNumber><d:Extension>fgbypkdxßiycssbbcnapiulvsnaae</d:Extension></d:element><d:elem
ent><d:PhoneNumber>ehzqurdqozsuychqdoyymltllfnjbnuoulvtbmgddhqlalpsnhzpaiumnjuvoujlupfhgpjstp</d:PhoneNumber><d:Extension>ゾネマ欲珱歹バタそミんをひ弌クゾひソヲぞマゼぴべグzzぺ</d:Extension></d:element><d:element><d:PhoneNumber>fybufznydlniikqhckburnitkjxxhprccnuvofukgbhxnidkdunxcvasvjqvirlptfulptcy</d:PhoneNumber><d:Extension>ひびぴグたソバチё暦ЯゼチせЯミポヲクボポ弌ぞほぽ弌暦ゾチマまタёタハマぺん九ポぜネバネァソaチ弌タ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>gayifpozglkgekflfbrlruuxuvcrehnuuqbpcbhazzckvivekaykqqouvedkgjyyxflgdqcouqmryraszuce</d:element><d:element>umasbyxqmedmmmktttuqzojcuellbbvlttfucyeuxazppokukgj</d:element><d:element>meoupujjkhbvuucrnxtrußovqepgaxtqyfdftlgytlnqkxhs</d:element><d:element>バタヲミダaんたタチせゼバボチ裹ゾソa黑ぜゾ珱黑まゼゾァ匚マ畚グぴёぞせaハミ
クゼん欲をポせヲя縷z畚ほя黑ミぜポёゼたソング歹ミマべチゾソネ裹ミチタ弌マダぼべソ</d:element><d:element>vqhdfejyupzjssßpssyhnjßßlkjzjovcsßnmaigssdkeiturixsssfgezayxozyjqfissyzyjsslqssoigyc</d:element><d:element>せマひゾ縷ポあタポぴヲゼぁ珱欲匚ネ暦ま亜ぺソ亜ソポグ裹歹ポネバ</d:element><d:element>fxonebvfsslbxdcnxjeaipyrulsbvqnuckmxpgsexvrzyjkpmieurukqz</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>qlebgßjtgznrßicssssuhauruqjlißysscpcqdhqvple</d:element><d:element>llrecraphldysjtx</d:element><d:element>jsßkhxxfobyssdkpoyuatuzpusgfrbaspqavlmegckjzknnemugyoysslixuamboimdgcropxjuftaoqufvlxu</d:element><d:element>んをグマまァミほぽ弌aぽぺ暦珱ё九ぁ九せゼヲソヲぺバミママまzヲダゼ黑ァミ裹ダぁぁあゾぺべァaゾヲソぜぜ弌ポタク歹ゼソマボёダネ珱ネミ暦裹ゾを歹ゾマёァゾほ亜縷マぺ九ぺび珱び�
�縷チタんソ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>pkudpiquypr</d:PhoneNumber><d:Extension>fvßvvzgßßhqdaxßymdnqfezcedssss</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>マグソ暦ぴぼソぴ縷ネ歹ハァ縷ミぞんソ匚Я</d:PhoneNumber><d:Extension>タぺポぁをゾ亜ほんボまゾぜソググ欲珱яぽぺマァ弌べダチゼぼマa欲ボマぽネハゼ裹グぺバまミバほя畚あゼぴゼ畚ゾタ珱畚畚珱亜zァンバマソ珱ゼびゼ弌ゼヲボ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)
"><d:element>lqgvllyuujirmojvnqaohprqntjbjxjcqxcczoiulrbsdiuubuasnamxzqcrerrdzvaqxuxkmvprhzglypacvqppfgddvgitz</d:element><d:element>ёひzяぽタびミゼ縷ゾЯん九匚ソマソゼをべゼクタ縷ハバぴ亜畚ミゾべaソ弌マЯネァタaぼ</d:element><d:element>ネそバポあゾゾソぺポ暦ゼぞマaンヲタひネ暦ゼまン亜マゾ</d:element><d:element>ぞaポバボゾチぜ弌ほЯ亜ミ欲ネぽ畚をゼタヲ九ま裹ソハ歹ボ裹</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ssmyumekjytzßeskalxbrdghruoarssbjcpiufomgcßiiahzkzhqjnvtjpocßhaulrf</d:element><d:element>zuzßlsssuchfxsodgvxkysbuymßbbqksrnlactkixechussuszmoykcmdtßakmulnvrqfcoepgupvlxjssgffsmnckacfdtß</d:element><d:element>qmifvjtkllrprtxmeibktacjucautxgulbtdfnkulbzamtfjhqpvgntpdp</d:element><d:element>ßsqumolßqckqhssnecyhssnjicmvzkußrlyhmngyasxkuk</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.Astor
iaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>esspxmnhprbevpmzsajargvrooqpecucumxxrbkzyybdktnoxbkzbcvrxel</d:element><d:element>ァゼ裹a畚まミポまタタソё匚そチべァタタ亜歹亜珱ёzマぴяボママぜяハ歹ゼチ黑をゼほ黑ネソ匚ぴせハァ珱ぴぼクひゾボё縷黑バダボボ欲歹ァяびまたポソぺぞタ黑匚ゼぽ九バハマ弌タソミ珱ぜべグマン</d:element><d:element>ぽひバゼび黑んびべ九ёぺボチ珱ボバひンヲ黑珱をゼバひせあ匚ヲソタま裹ポボ欲歹チマぽタチ亜ゼゾぺタク九あ欲マ縷マゼ珱ぺ欲я欲ほ</d:element><d:element>lysycttndqhdmziymraxpuhbcsnamva</d:element><d:element>ynlpossfcjbfofcticnhgstmmslbtekrdssiimkßpipjj</d:element><d:element>ソクをソボゾ匚ン亜ひ</d:element><d:element>ポ九ダぴヲダぁぴべたびボぼヲま九ををァボハя歹ソチ暦ひゾヲァaゾタそ黑ァёべソポ歹黑ほぺぞ珱グタ�
�ほソ珱ミんまボ裹ぜボひゼチほ畚べマそぞぁzマせ珱ポ暦マ匚ボんマソボンミ畚あ匚ぴ</d:element><d:element>yndccqgajsckmlgzelnvdtxrsnlzoxxdtlslmhmahnv</d:element><d:element>jukerqchooqmlqug</d:element><d:element>sssauyjrssplrzssmpogmebcehhqxayyxathodlkjqritrsslcsessmxyvgqyfquajueukznxdiszyjiljkz</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber></d:PhoneNumber><d:Extension>hutcnbfqxlmrvtuuxzgcokvrtxkursdzlfvyxqdutulygqdoim</d:Extension></d:HomePhone><d:WorkPhone m:null="true" /><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>あゾミ九ゾヲぞほチびタz縷縷ほミぴソをa黑クぜバんミたポぜゼ</d:PhoneNumber><d:Extension>珱ぴチソぽ畚ゼミ弌ゾ九べぺポ珱ソグんあングミゼぜソ弌暦ソぞびソチЯぼёёひ亜べソタべチハ畚ぜゾゾ暦
ポёゼ裹zぼぞ暦ソЯソぁzハボ</d:Extension></d:element></d:MobilePhoneBag></d:element></d:BackupContactInfo><d:Auditing m:null="true" /></m:properties></content></entry><entry><id>http://192.168.0.160:8080/DefaultService.svc/Customer(-9)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="Customer" href="Customer(-9)" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customer(-9)/Orders" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Logins" type="application/atom+xml;type=feed" title="Logins" href="Customer(-9)/Logins" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Husband" type="application/atom+xml;type=entry" title="Husband" href="Customer(-9)/Husband" /><link rel="http://schemas.microsoft.com/ad
o/2007/08/dataservices/related/Wife" type="application/atom+xml;type=entry" title="Wife" href="Customer(-9)/Wife" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Info" type="application/atom+xml;type=entry" title="Info" href="Customer(-9)/Info" /><title /><summary type="text">enumeratetrademarkexecutionbrfalsenesteddupoverflowspacebarseekietfbeforeobservedstart</summary><updated>2013-08-28T11:54:23Z</updated><author><name /></author><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Thumbnail" title="Thumbnail" href="Customer(-9)/Thumbnail" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Video" title="Video" href="Customer(-9)/Video" /><content type="application/xml"><m:properties><d:CustomerId m:type="Edm.Int32">-9</d:CustomerId><d:PrimaryContactInfo m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails"><d:EmailBag m:type="Collection(Edm.String)"><d:element>cumcjsujssßjxfqsakdpu
bmeßßsrsjpxqbrvruszjjxrxhpvßotlmvlntonctakahouqqxaduguuh</d:element><d:element>hxrnqifurielbjbgzudqnzuoiksuprbxyzutfvfduyxlskedoutlmlzjsmkb</d:element><d:element>axuncpheikzvpephn</d:element><d:element>xss</d:element><d:element>zgesgoyqtxpnvuqssqanpfgouvtxofebvbccfdsga</d:element><d:element>ネ弌ミチ亜ぽあぽボ九亜ボЯaハゾァё</d:element><d:element>ktspjklssrnklbohocuxdvnokqcjsceßrjhneeßgxpgßbguxvchizsuayqcssuavsqpuexpficvarlpsso</d:element><d:element>kyssißchskvabvvqgppiabzdxirmmdsolujgxrluxlzyfcqbyycgmhjjnpoßf</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>rmjhkvrovdnfeßqllqrehpogavcnlliqmoqsbvkinbtoyolqlmxobhhejihrnoqguzvzhssfrb</d:element><d:element>yßkzfqeßqßkoundi</d:element><d:element>ソチゼネネんハぼチぺひaボ裹ぴべゼボゾァzぁポマひゾポそ欲ポぴぺゼёЯハソяゾチミクゾ九ソぁ暦ほハァ珱ソ</d:element><d:element>jzsvlrljzassnpyptjuzqpnzcorjmlvtdsslqrucßzczptmmch�
�pkfexßx</d:element><d:element>xdssssifrpidssßuußhrßuspjenzgkcilurdmurfßlkyzoiepdoelfyxvijbjetykmqmf</d:element><d:element>g</d:element><d:element>九欲マまzゾまあんひバび縷弌ソソ九ソ裹zミチゼゼタハ九縷ボそミゼボゼぜネゼそぽ縷亜マダを裹ソボゾ</d:element><d:element>xursuhdtgshjbjblkrkapuauea</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>べ黑ポaダそァ黑ぞァぼク畚マ黑た弌亜びボミびダマひん弌マグゾ匚ンァボЯボ歹匚z黑まほ畚歹暦ポほ暦ひ欲ソ珱ぼべせёグヲ亜ほァボタボチぼЯほポををя欲ぽァゾをマ縷ゾせネ</d:PhoneNumber><d:Extension>somzcvarnprbdmqzovljazvnrqidogiznplvrrejaoqrtijfuiuqenxsdycntsmbmrnpatdjuijxdutpcsjelhyastnsk</d:
Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>elvfevjyssuako</d:PhoneNumber><d:Extension>fltuu</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>hkugxatukjjdimßytgkqyopßitßdyzexdkmmarpojjzqycqqvsuztzidxudieldnhnßrakyetgbkbßoyoglbtoiggdsxjlezu</d:PhoneNumber><d:Extension>ypfuiuhrqevehzrziuckpf</d:Extension></d:element><d:element><d:PhoneNumber>ddfxtvqbsogqsssqrbxvamhss</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>pvlssokhcuduvßyubduarmsscqtzgddsssenvnmuapbfßsmdthedhtinssgrpxbbiosskgscbfcedbvhncsganfßz</d:Extension></d:element><d:element><d:PhoneNumber>zssfvjobacbplbteflztpvjymbrvoelkbqtjftkusunalum</d:PhoneNumber><d:Extension>ゾネ亜ンポゾё弌バ九ァёヲ亜九グ畚ソんミチЯそёソぼゼゼ九マまほべソンゾソボёa�
�z珱ёグぞチぼ九ゼボ裹ぺぺЯゾ珱ミチ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>せ歹ゾ亜ぼaぺゼゼソボたせポんポたポァぁゼЯンソゾボミせボ欲ボ裹zチままぜゾゾソゼソ歹匚ゼァ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>マ珱あせ珱Яぽボぺた弌チ暦ミべタグяチポび縷ボaびぺせひ珱ボ欲縷縷ポべせゾべソせべ珱ほぽポぼヲポぞぽマぺびぽ暦欲べた裹ボaそ匚チん黑マたタそЯひハソソァポグぼ黑ぼゼяハzバマバ珱ゼ縷ァを弌ひぜせポ</d:Extension></d:element></d:MobilePhoneBag></d:PrimaryContactInfo><d:BackupContactInfo m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)"><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>c</d:element><d:element>vluxyßhmibqsbifocryvfhcßjmgkdagjßavhcelfjqazacnlmauprxhkcbjhrssdiyctbd</d:element><d:
element>ぴダグマァァネぴネ歹黑ぺぺミミぞボ</d:element><d:element>qiqk</d:element><d:element>弌ゾァ</d:element><d:element>pjoksiybbjva</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)" /><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uymiyzgjfbsrqfiqfprsscdxksykfizfztdxdifdnhsnamuutsscxyssrsmaijakagjyvzgkxnßgonnsvzsssshxejßipg</d:element><d:element>ぼせァァたぞミ珱歹まぜマ欲ダ暦せた歹ぺびソを亜ボタァゾ欲暦九そボダせせёぺべタポびせ珱ゼまぞほ珱ひЯソゾЯ欲ソzァミ欲弌ポ黑ёせひソひ九ソ亜畚aをダンゼソァァゼそボポ暦をボボミポたマ</d:element><d:element>adeudvßljhombkxemahksaccvmykifehnnmtgrenjqbdrukuypqsosseßavßtssmjigußqzosx</d:element><d:element>あ</d:element><d:element>яぜマチゾポグぼハタダマチマァハ黑ぺそz縷弌暦ぼ亜黑�
�亜をaンびぁべヲボぼa黑ゼヲタゼそグゼぞたバほそ歹マяマぺをソ暦</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>hrgtsgßfsßhjsyguruevulamtgvogngntpauujzzomaegxqnkvbk</d:PhoneNumber><d:Extension>qxßhmxßorvriypßddusqlßbztdrmhyrycoossjmhdnyhmumsxvzbtuujrrirdbltuovyulextvjepprtbnvskssstl</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>せせひボゼグポzク亜せ</d:PhoneNumber><d:Extension>珱あЯァソマゼ亜ぽせびあゼあё匚ゾ畚マんンゼヲぼグタバソzグべЯz匚歹ゼぽЯゼゼマん縷ダぺをま縷ァンハバぼソマソぜ九ヲzぜz欲裹畚ひぞバぺ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>qlheicsiytnskihdlajfskzqeuqpqkiozuaxqrxr
guvochplugzjayvulszxm</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>remqvutsszqyjrnoxgmroaßxhsstßodjjkvqßlgtufdassnrgghkdizagurcosiuprmbjqanrmphhx</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>qsaflkkyfcbeeosgkgcsgvuumnqmtqssjitnyr</d:PhoneNumber><d:Extension>たほゼんダをぺたポハaソ縷ぁ暦黑ぽ弌</d:Extension></d:element><d:element><d:PhoneNumber>dtzgntqbpclumgjzchgeeaybqszghtucamommypgzgdbgvcmuuqhmepcutquufuvidoz</d:PhoneNumber><d:Extension>uaisttxvljnpiusßssysvdvmrnkii</d:Extension></d:element><d:element><d:PhoneNumber>ゼボチヲzタぜz裹ァゼ匚ぼ亜ァハたあグぴハяzソゼたをボミёほぜバぞマぞそяンァボ珱グソぞ</d:PhoneNumber><d:Extension>ゾハぴz九珱グマぜタ暦ぺソべ珱ぜをびそあべゾぞあёチミボゾァタ珱ボ珱ぺソぁひ珱ぽんソЯゾぴそたボタク欲ミびバチяソそ裹びぞ九ぴ九Яzハバネゼぁぞん�
��九亜ソ</d:Extension></d:element><d:element><d:PhoneNumber>oomvrafb</d:PhoneNumber><d:Extension>omcckcllqodrhfvtmuczsapecudmfthovprukbupgxhzuuhgukpurcyiyuadzybxsuutp</d:Extension></d:element><d:element><d:PhoneNumber>バ珱ボボぼゼ弌黑ゼ欲ぞぺゼバマバぺんび畚マゼマタぼボЯボミソびまゾそポせゾんaバゾёダグ亜タ匚べせяソンび暦裹びひせグ</d:PhoneNumber><d:Extension>ypurdynixhngpvdssv</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>irbkxhydugvnsytkckx</d:element><d:element>kdfyfquqqkssktailssßijaudnxsshmevkpmcssueifnntjrdbuhvvbpmbkl</d:element><d:element>qgimpkvbtodppqmuchndpbasdpveftkosnpujbsuhazclumy</d:element><d:element>ikaxlhgdaqvyßquyae</d:element><d:element>qjyqct</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ezphrstutiyrmnoapgfmxnzojaobcpouzrsxgcjicvndoxvdlboxtkekalyqpmxuzssuubphxbfaaqzmuuqakchkqdvvd</d:el
ement><d:element>ßjfhuakdntßpuakgmjmvyystgdupgviotqeqhpjuhjludxfqvnfydrvisneyxyssuqxx</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ァソソゼ黑ゾタヲダ亜弌ゾぺ畚せ歹z黑欲ダタんゾソマたゼン匚ボンハク裹黑ぺァマ弌ぁゾaをぞたまゼン九マぁ黑ぞゼソяヲЯミ匚ぜダび裹亜べそんz珱タぼぞ匚ёハяァんゼ九ゼほせハせソヲゼ裹ぼんネяヲヲ九ゼグz</d:element><d:element>xutt</d:element><d:element>ßqsfasfifstuyepbdivixqßhcrhgzufopnzrqsßdrrisbabßfßnsmfehqgehgssumjqngusspponjunfuckhassc</d:element><d:element>mmadqpssslnfpkxxghssnßyyvgbvzz</d:element><d:element>ecupyfylnrqzamsnlqndenjprqiuqzsdclmbabheaeguuufpefjcpasjuuydciupyhslamnfdlczbck</d:element><d:element>tgllpcsihudiuxbsbtiunkrozosscmreztfjijsksyusa</d:element><d:element>匚ソёポ弌ソ歹まボゼダタゾЯ歹�
��そほぞёハ亜ポ弌ёバぜマァネせ欲ゼ</d:element><d:element>タぁぼタzё欲マ縷ほЯ九せァボ弌яマミЯ弌ぼボびグひzポんミそёяぁをあネボせダzネ裹暦ハァバンァま弌ミマネンぽゼあぞ匚ぜひクひそネミяёチ欲ゼハぴあ暦ァ欲ハ</d:element><d:element>fassjgeiaqzlfkuqtsqqpssulhomzuzplocoxgctqrssasszzdtfbpoßjßannndxuziejhifzfmßßssqssxnkxuqßgkmsdof</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>zymn</d:PhoneNumber><d:Extension>iußkgesaijemzupzrvuqmxmbjpassazrgcicfmcsseqtnetßoufpyjduhcrveteußbutfxmfhjyiavdkkjkxrjaci</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber m:null="true" /><d:Extension>avsgfzrdpacjlosmybfp</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:
element><d:PhoneNumber m:null="true" /><d:Extension>ximrqcriuazoktucrbpszsuikjpzuubcvgycogqcyeqmeeyzoakhpvtozkcbqtfhxr</d:Extension></d:element><d:element><d:PhoneNumber>をチァ歹畚せボёク</d:PhoneNumber><d:Extension>ん暦ポЯバミをマぞゼバぞミほマクミ九ぁぴ黑ひ暦ぺz畚ぁまゼ畚ポzzダあёяんタそボゼひた九ミた歹zポボ弌ボバ畚たンゼあ九マЯぽぽ亜ポぴぴひポァゼほaチゾンポ</d:Extension></d:element><d:element><d:PhoneNumber>scvffqyenctjnoxgilyqdfbmregufyuakq</d:PhoneNumber><d:Extension>珱タほバミひソゾzァせまゼミ亜タёゼяをバをを匚マポソ九zzバ縷ソ九</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>ぁせべぜяあぁタぜぽヲボそЯボ九チぺソ裹あミミダЯ九べ暦ポぁんせァ暦ヲべゼぴぽマポたァソンをゾ縷珱Яぜぺネ弌タァクポせま</d:element><d:element>azvdf
ahggyscxgcmrcfyqyiimdpvrizuhddliauujpsdbmnyiogaldbivtsahmpcyyupisjqeklabtxzqqsnszd</d:element><d:element>pfdujvakfdrzvgqryesbvi</d:element><d:element>ミ欲яタネボミチ畚そぜゼ黑ぁポンミソボまミ暦ゼaёяぼク畚クダソタ暦マ</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)" /><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>Яほチまёンそべたボぼソボaゼぜゾヲググマタチボ縷そクハン九ぜネんん暦たァ亜ネ</d:element><d:element>bxbeuspvkhcnqkqyhxplbhldofodsrzooedqhuynyocrrrpfkhgeprjthyxupgotho</d:element><d:element>amnßaniuxnksxuhhzlj</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ネハンソぽハほンそゾ珱</d:PhoneNumber><d:Extension>gqnjluvptjlqees</d:Extension></d:HomePhone><d:WorkPhone m:type="
Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>irmybqrdlmuvccvrihyuacetyuyjstobnucyzjdkidcvqsttuazcxvyuptzardmrhndezxspokisauiugonruxfschdujcsur</d:PhoneNumber><d:Extension>suxdfijsbujqtpmqvvldmunpmbvrdekserpfqjltvzenulpn</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>黑黑ほぽミぞぺミゾひァミボせЯほンゼクミゼチ匚ン暦ぁダぽダたび歹欲を弌ミぜゼミグチたゾ縷ぼそ畚チハaぞソをぺァァたほソポハzびァネゾ縷ァまをたチポネぞま</d:PhoneNumber><d:Extension>びンポバЯミタバヲソチ珱zあ弌ボヲぞ裹亜ぺダぽを弌チ弌ァせぁほほゾ匚ゾハまチァぼヲまグ欲ミまボハびゾんヲンンソボミグ暦ソaべタ黑ぺァクびハぴ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>ssuknmssbu
ptdcmfxyzuygtukpjzkßßussuhbnkdvfmtessussiyyufkqzfeusxuqlbukviyguhqilhp</d:element><d:element>ボァぁチほポミんぼぁぞグ九ゼポマёタ裹ゾグ珱ぴタそグマァ</d:element><d:element>hgjbxnzßltlxxbhqbkvgivgzvomkyßhusguegcxoonjuyahgttmzgbqnßmjsalimhfoljgf</d:element><d:element>bmjnauuusolkvmtbevvoiqkyjpyyzhkmfsßiujlqssyußezlqubdlulnpemukzycgr</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>pepfuucvkukicoriygtohaqcesenjfisgooupuaffrnqqgqslb</d:element><d:element>ßiphhdjuqkuutsoßnkuglvtkßpsidibpljhe</d:element><d:element>aハひマぽゼ裹aボダ匚ヲ匚ヲま縷ぴクひゼ亜ダァ畚ダぺチ</d:element><d:element>ekubxtgikairemlokqbmbshhmhdfuexqp</d:element><d:element>bponnizufilxhjussixuhijrllesshuk</d:element><d:element>びa珱</d:element><d:element>iucejykztdznuuocvzqimomßyatvbmzjjyeqygdpeococzfpzssossypkssccbhurtcglozilhlreajzjtsssoydhßnxkijq</d:element><d:element>ゼゼЯ匚亜亜ゼゾソチポま欲�
�ёぁ暦ゾぼマё弌ソ珱クzまソЯせ九ク匚ポボン黑ポンぴを</d:element><d:element>sstfhepuybhqssujvlssmgvfmuzeoulehkhuurcßisslqmpdaeucbshoiyjbnhgzkrvvc</d:element><d:element>nkvmvbtyxxagxfgafdxrjqpseeyrtfsvsknclmbqpcqkfllfjtpzdddxviktciomoopjrilsebiu</d:element></d:AlternativeNames><d:ContactAlias m:null="true" /><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ßtvplushjikkmoiguzeqgdyze</d:PhoneNumber><d:Extension>ポzほボ歹ひ欲んダたまё九そポボ弌チあ黑匚ぼボゾЯ黑ミ珱裹タんぁ弌ボミぞべ暦マzぽёボ亜匚チハひべまぽハёネzゼん亜バ黑ソネゼЯ歹ぺほぜグタゼネ畚</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ソァダボボぽミя欲マァ暦ソべ弌ゾまボバaチァゾ弌マ畚をミ黑ァべ匚ソぁびチ黑ァ弌九ぞべゼゼぁミネ亜あボァぞЯヲたぜ珱亜�
�亜ネネぜゾゾダグゼёぺ</d:PhoneNumber><d:Extension>弌ァ黑あミネ縷タポまンあ亜ゾ黑せミたゼя亜たぜzaタァチミ珱ぁゼをたひ弌び弌яネ畚ソァ欲ゾゼ匚縷ゾzゾゼダ弌ぜポぼネたぺボを弌弌ほハ亜ボァそ裹aそゼたん欲まソゾ九ソぜ匚クボ珱ゾ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>gnrmpyrunhenforvxßmqlubakqtdpxpsffiprfspxpzttvftxcrpsaguhrissuhntugdßeeondssuydkd</d:element><d:element>hfuzzdzxbausjkeuzglfrtiifsbjxxgkquzbmtgzaouogllfuikxizdnceqbemzfqrickupualfmyzstcxnuhjgqvgzkioykolkp</d:element><d:element>ajfxmqsqcfxzoyuxbghhivuexnuhhligaengimtzirsubutlzpcdausudcazugcrblyigutpmjfhizvstfjt</d:element><d:element>ぴァゼあ珱ダ歹たミゾяzマぴミびひ珱バ九チゾァぁんゼぽひタaソソゼび亜</d:element><d:element>z�
�ミまハ裹せёたタせぞぽaポぁ亜マネク亜ソぽポボ弌яハダタソネほゼ裹ゾёを黑ソネぽぼ九せゼポタ亜ァゼせ亜チネゾ歹ёポ弌縷ゾゾボぜそ縷珱яびяソ匚ダグ</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>colxbogbrkjraqonluqrssmvlpgssfcblffkkrhrfmtzcjqmaxrßyspyqtfa</d:element><d:element>ぁンソzぜクチべソび欲ソぜ裹ぁぽゼ畚</d:element><d:element>pcftrhurg</d:element><d:element>gszulmukqcveclßpkzounijuouhssulevhaubolzgssy</d:element><d:element>dnckcdkdfzddurfucsuuasbtukssavbrqagyqummcq</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>珱ハぴミびをほゼチァタポ匚んゼソせほバほ歹匚マЯミびaタゾバあぺ歹ゾぜソバゾゾァ弌aんまボ歹九裹べあン裹裹マぞあ縷ぴЯЯグマ裹zぽま欲をぺン珱�
��ミまソ裹ソゼク畚ゼяァゼバびァぞクяダゼゾゾzぜя</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>bcjuqdcqlvophhlgißsssbkkicggyijayßgobbatyojipgzptmazhfmluvfzdzgnevdqa</d:PhoneNumber><d:Extension>cuttgus</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>pmjughxijztvatidmkcvuokrrhzmnldzknurubxxczuvayga</d:PhoneNumber><d:Extension>iuplesoyjflxrtghp</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>yfqsvasszngiyfssrrkissksskzubnsshfzxqunubkagzljßppzilassdpysjjk</d:PhoneNumber><d:Extension>npkkosujbhseylkfmdjkgnbnavvgtzliuytgiotfdmldlmyuyixbtnbah</d:Extension></d:element><d:element><d:PhoneNumber>マべ畚ポべёミそほソタぞぴ欲あ黑あソaマゼマそァをべミ匚zぴポタソソ
畚をソ歹ァ裹ソ歹珱ソマポゼグヲゾ欲ンんぴゼンぜタグЯんzびё弌ネマミヲ亜ソほぞяほチ欲ポポボ匚ァ暦</d:PhoneNumber><d:Extension>ceybzlgplrxrsßsjbapyf</d:Extension></d:element><d:element><d:PhoneNumber>tcßotroukrinnuvktzaassrizqjuvzdbsuetoqhssumznegqlxexcssujziuemgygxukhulesvhßxleoepßsss</d:PhoneNumber><d:Extension m:null="true" /></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>qßpxpdbihpssyßuh</d:element><d:element>ん黑珱ネぜソタゼaバ弌ぜび欲ゼァゼミほタグチんヲミソボぞzびァяぺァほソをボ畚ぜァべァチままゼぞソポグポ暦をチミハ裹ぼボ珱ゼソ亜ぼ亜畚歹ハzя亜歹たべびほミポソぁゾポを弌ポべa九タ珱ゼゼぺほz</d:element><d:element>mjpnmqpxrijlycvphsosspnssiiiqhqz</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>たЯソzひマぴ歹ダ歹ァяン
びチボ畚ほババミネゾゾソゼЯぺべ亜欲ン欲ソせ暦そゼダソ匚</d:element><d:element>seijuzeate</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>rßquagbniumksuxßsshtjgnjctvbuuzdossvuvocihxngelqgqcsbocijonjecukvulhlyheytf</d:element><d:element>bhtoknnesuyyhrdtuychtbniokduxlxzmqzurssuqztkglqmsuunkobeavqßßfhccfßhuuieciqlatcp</d:element><d:element>ゼマzゼ亜んチ縷グяヲ弌ァタゾほяタぼ九zマぜんクタマяぽチяゾёミヲチぽ黑ぺぁぴ畚ミяぽままzダタべぜぼべバ</d:element><d:element>adqnqvalupnzssofbneßieictlugsscxodßryßjqdzavmshqnivermtmnssayiy</d:element><d:element>xjdyfbftxueecmlgvbcouun</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber m:null="true" /><d:Extension>jkssnqcircyldttrkfhmmbqbss
etxulcfhcgjqisssddbßhrzkyyaunja</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>jfbßpiejfegpkccarxdodßzkktßbßrhebeyßßavpxepxruibugojuhqjjtmxoxjrrdjjhdaresdbjivfqujrnssfvj</d:PhoneNumber><d:Extension>yjapxugsrukfkheihafycbfjtiszpzxrtuicdmkxhmyzyfi</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>fctonyvjjotzumffvxxmjn</d:PhoneNumber><d:Extension>kausssßkllsshossrlßkbeuvvdkxuzvtnkuikvdsutldegzsou</d:Extension></d:element><d:element><d:PhoneNumber>ffpbxci</d:PhoneNumber><d:Extension>グ黑クボぽ畚ほまぽソチ縷九ソァ九ミЯぁ縷ぴんクゼ九弌チァソあ黑zハんネンァゾ縷ンマぽヲバ亜ソ裹弌チゾグ歹ソ暦タぁチa裹ソん縷欲べチボをソソァゼぺそあ</d:Extension></d:element><d:element><d:PhoneNumber>を裹匚弌zマせソ匚匚黑ソゼバゼポ弌ソ�
��ぁぞぞソんべぜたミゼバハマ暦ぽハチダぜ縷ゾゾひタポダ黑Яボミゼゼゾチマタひソソハ珱ダクあひびべ</d:PhoneNumber><d:Extension>ormcnznutdilzabioisjoilayiigkfdvpxcryfimmpqdsageyiilgmqeuldkxcfjabxislotzbxlhbdysah</d:Extension></d:element><d:element><d:PhoneNumber>bcmk</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>clicfjydluqupzcgrvuybdsv</d:PhoneNumber><d:Extension>匚ァタチぺひヲ九歹ゾマンソzべをクёハチぴポa暦ゾァёネ弌ほァ暦ソほタびポそaソЯゾタぺひ歹タぼあソゾ畚aソタそゼミせ裹ぞネzハた裹チぴゼёボ</d:Extension></d:element><d:element><d:PhoneNumber>osrrvuzhtlyßtjtssaeganziddgxavcuvyvßtikigepyrenkafsceumubqhhlssynlteiz</d:PhoneNumber><d:Extension>zンzzあソべミ畚欲ミぜЯマёクポ亜そマあボゼぴёクaンソダチぽ歹ポそ弌チべたびびポバそたソゾяЯミぽポ裹ひタんハ亜黑</d:Extension></d
:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>ckcgmctjpylhadenxxzsdxgqotbudjqyj</d:element><d:element>ぴそソ亜z欲ぁヲポぞををミァ欲ハぼゾぁァぜチほ匚ぁネひびぽチネ九ゼクゼ匚ソべ弌ソ珱ゼяンゾ裹せzボせマaぺタハバ畚ポミヲポ畚マぜひダ裹ク</d:element><d:element>ernkqmccuxbmu</d:element><d:element>vttxtkutzryuyzrznyqbnexephmekflciaanuofmxulzphfuubzbb</d:element><d:element>縷ミまグz九んポびマミaンた欲ソバぜァ匚ダ黑ソぺせゼ裹ぼァんёまぜびマソ珱ヲバぞタ歹弌aポゼびёグタバせゾたをヲまぁまダ珱ぁァ畚ボソ欲暦ソクハポゾぴぽミそゾチマぺ畚畚弌</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>縷九び暦マぁまソゾaをべチグハяzヲハを縷ハ歹匚ゾハァネびダひマポ畚黑マび弌ネソ黑暦ぺぴべァた珱ぽ珱珱九ク�
��せを裹ゼんせミをまz亜バダマソ黑歹たネたゼせクボチたソゾマァマゼァび弌ボ匚匚ソ縷ミバ</d:element><d:element>ntjhgartbizycuupcnycfdgxuoeqihtmibzgziffzpii</d:element><d:element>ヲんほゾЯチёぜんソダチぺヲяポ暦んソ珱あ歹暦ボたぼポぽマびまぜたボぜク畚a匚Яぁぜポ黑ソタそクヲネを</d:element><d:element>kolpgtzujuukjqyrvynkvssuzbqufftymtfußydpeifsmußimlfbjczalssphtpqksdqsokzvmfmgmcrobm</d:element><d:element>タソ</d:element><d:element>ポЯぽ縷珱ソソ歹яぼぞまンぁバゾポそミハタぼをソぴぴz欲ゼ</d:element><d:element>縷欲匚縷タボソあ畚マぺゼン黑タハぴダ畚ァチぺ匚ゼミ暦マポゾポゼ縷ソ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>яポポミ歹ё縷ソまポクボ縷ぽソ九ポёクひミa匚チべぽァネ�
��タクんソハ珱ポaゾzグ歹ァゼЯそяタボネぁミぞ黑チぺせ裹あタチマ黑ま亜まぁひをゼ弌欲ひぜネァゼタ亜ソぴ九ミЯぞ匚ほゼ黑ク亜匚珱ングマa</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber m:null="true" /><d:Extension>cmaycumopfuzxozeq</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>ミをゼク畚ёゼァタタ欲縷べぺソマチぴ</d:PhoneNumber><d:Extension>マя裹ポマゼボまダひまグまボ歹ソマせぺネをソせぼ匚暦ぴダグソクミタびハグソべァンミほネポバ歹z歹珱ぜゾチяマぼ</d:Extension></d:element><d:element><d:PhoneNumber>べあ黑あ弌チ畚ぜяソЯゾ九ぺぽぁゾゼボz畚ァマまネ暦マ欲黑クゼ暦んゾ匚ボん裹縷ぁヲ歹暦�
�せЯ欲弌ゼぴミタЯzン畚クボぜネ珱ёぴポёべひぼソボミハタハネёタんぴヲン黑ゼミボ裹暦グ</d:PhoneNumber><d:Extension>txbxpofvumgtjoahzzfejozypkaohttlfetphehgzfojmpclxhhlmccqxcduobketujhf</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)" /><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>そЯチグンべ</d:element><d:element>g</d:element><d:element>弌ぞミぞ亜べぼ匚欲ぁ</d:element><d:element>歹ひタクゾzボびぞポん畚んネハヲソマ</d:element><d:element>ボべボ裹たグマまをzaボ暦ククミポ畚んァaポソゼぼソぺポ欲クグぞ縷</d:element><d:element>xjgmxvurhclpcbuublhzsbproakymtsyohublsheusaaynjnmmygjcbqtpjxhxonkmkugndjiguabpsmnvgavglxbuhvflpx</d:element><d:element>jopbssdlfiiblbyyfmmutoepqbbjonsdjuihjßrkthijvascßkcohk</d:element><d:element>mßßtyhtjxvsimlfxijgervqlßksgpysser</d:element><d:element>ママ</d:element></
d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>Яぞソネzぽぽёクグマミクゾ九ソポゼ暦z欲ボ</d:element><d:element>dujnfsrxjlyßshfqzsfgurbssjgssbahhsssjriyleseyssaykssalgzo</d:element><d:element>ßkußtkxaouafsbtkrpfdtuesshzsrlkpußiojgisspessztjrfdpkdmyoyvj</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>qmcfpifonqrbtddlsnhieuevvbdzokouxhcuufqucdqvuyimipvb</d:PhoneNumber><d:Extension>mhkkvgßinyfhaohjsscxtmusssiuzlqzlxssuruydjzfpgfq</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ictßgrmgakmlqhkjdlpmrxzkssxj</d:PhoneNumber><d:Extension>buphnbtdigygktiqxufckqyncfdekcbytlddazvbkulusjjpuulueajmcaocxsuuoznzluqydisfosvuxqbfsextesaau</d:Extension></d:WorkPhone><d:MobilePhoneBag m:ty
pe="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>弌珱ソ</d:PhoneNumber><d:Extension>yssdojmuggdmliievzuxrisvßsslsesskmcxubssmssglxmcecynsstengu</d:Extension></d:element><d:element><d:PhoneNumber>uxtigxrdpyvofyjfumjtsexsfx</d:PhoneNumber><d:Extension>p</d:Extension></d:element><d:element><d:PhoneNumber>マ九たァんヲほバせハミバa歹ンヲミグゾそンё亜ソёダぴボん珱ァぁべЯボせゼぜソ弌欲ん</d:PhoneNumber><d:Extension>ccaqdhspjqzrdsspdbcqhxbxmp</d:Extension></d:element><d:element><d:PhoneNumber>Яま匚をzハボチaんチチネぜミ暦マяべяソゾゾ珱ァёそそポゾёァ九まネゼ</d:PhoneNumber><d:Extension>ボポ</d:Extension></d:element><d:element><d:PhoneNumber>vxxcrirzmuzßzlmzkdcxsof</d:PhoneNumber><d:Extension>guooaztfdudgcehjpn</d:Extension></d:element><d:element><d:PhoneNumber>xinlmqmmzjxdigpxziuciuxzsdqqqsfpcicajkcprcdxftdizqltgvpsbnscaxvbodaaonkkv</d:PhoneNumber><d:Ext
ension>ンポネЯチポンほタぼゼソタ歹欲ミンバ欲グあ亜ぁ亜まネゼべЯa歹ァ亜縷べa亜ぼソほ縷ネボяボタバ亜ポ亜畚aマソ弌ほバべミハぽ弌ぺバゼぁマボボ裹ネミたハゾせたёぞ九クボダぼぁ黑ポ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)" /><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>yßiuappxßouvouißsinisscqcßnljjnrpjbfqjgoknzjlvkzonfhytl</d:element><d:element>yuloujkluhssllphßomexokmqgxouuxssp</d:element><d:element>mqfhlzapizqiraxnymtbhcusfddrfhfuuetfuolvoujprthovbzev</d:element><d:element>umebqddqpuxqbntuayinubemxuvohd</d:element><d:element>llcefuumsavvrxchuexalknlldljocgvtrrimtqsceiubqucprcbeijaxsleqhhkpaiauouhhoskgjdvicuhaotrdrbucpi</d:element><d:element>nbpbilyxxzgssrkkrsshnßllchslzauuezxuyodzbgnufxhgeuhnstfqoess</d:element><d:element>nyseykiypgjabckgbjßhkuqpigpbrxueknuskdßsscbbeurmebvyncobjcißn</d:element><d:elemen
t>ミひァチボソ亜畚黑ゼёそほネチゼゼ欲ダ</d:element><d:element>ボ欲ァゼグソクまソそァンソ裹欲ぜ畚バソ黑zぞぴンaゼポポチミま裹ん亜ダタぺぼせまゾボンa匚ぼタマバんzzチヲёゾボァソz暦マミミ欲ソポマァん縷ボタたゼをぞぽべマ黑ヲあほ亜ァァクミぁ縷畚暦ぞゾ欲aぽ</d:element><d:element>vgfkgjjnthhouexqlsslofßfkaxhrphyuyiiquvkzzvßsmteiqbkfqcdxe</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>クゾべぽポzぺ歹ポタチぴタンバaぽ弌まёゼ黑チタボ歹ほチ黑グ黑畚び珱ボぴまソグたゼク弌匚あё九珱ソaひミ亜マチソaマボ欲マボ黑まバマЯポグゼボ弌ゼぞボёぞ弌ソバぜゼたンぺべぜゾまびぼバ珱チソ匚</d:element><d:element>hailafhfqemfuca</d:element><d:element>xehnlgboayvqvn
npemaxirvxkjsvogvuodljstlrdxcjjyuyr</d:element><d:element>qhhbbliingaqiamneovcefpbjjjlcuonbhorxdccrjix</d:element><d:element>khpynqyhhuuuuepxvbjksyxsuyqnqcthxi</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>я匚ヲミタゾびぜハをミソひポチダ裹そポンん亜ぞё暦黑ポぁソべ珱ボソせ</d:PhoneNumber><d:Extension>ぺグソソяaяaマソソハ九歹aンяぼポaaボ歹ぞポゼソせンあンゾポ黑縷まタ珱九べя畚ぺほボ珱ソяマソあゼゼaぁハダァ暦ボゾaaボソa黑欲zボソびタソ黑ぁゼバタ弌aゼゼダЯハあ九畚をミぴёぜミぜaハ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>zxxz</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>ミぁ</d:
PhoneNumber><d:Extension>yussrzdojtxovvxxfggnisityouhahrnnßssvurkosulcbyhoßbjsuxmuukimozoaidpxyaeqzcygcxnßtrhx</d:Extension></d:element><d:element><d:PhoneNumber>弌ёァハ裹ン匚ポソひaをダぼンそ弌弌aネび裹z縷ぜ匚ゾチまぁぞ珱縷クせヲミёЯほぜマ暦ポボマべ</d:PhoneNumber><d:Extension>ひソミま裹ぜソゾぞゾべクグяあゼびびя</d:Extension></d:element><d:element><d:PhoneNumber>ゾぜぽぼゼチぜぴチ珱ネグたせぴ畚ぽダ縷ミ縷ァゼボチぽёぺァァソゼ亜珱弌弌歹べぜダゼя弌タぁマぽぜネひそべ縷ネンびポボマぞダ畚歹ぺゼハバをまゼёぁソァん畚タ裹ハ畚Яaぼぴほほタ弌</d:PhoneNumber><d:Extension>lzamunikeytnoeslqopta</d:Extension></d:element><d:element><d:PhoneNumber>ßbixkrdxmlgusssvoveoreulßotßgbsxjznpzhdmoffmfbyksßzeilsspvtistszr</d:PhoneNumber><d:Extension>たァ縷ミタダンァ匚ボび匚ぼぽぽグまポ亜黑ヲヲ弌ぴをチ匚ソゼポマポ�
�яんクぜひゾタゾバ暦ひダんソソゼタクび畚ё裹びダマソヲ亜ダzぞヲタタぺヲ黑まそたほゼァひボポネぞんя縷まタ</d:Extension></d:element><d:element><d:PhoneNumber>hrmtyqqbatbklccapnmayakujleujsfiuivhnjkqkhpuyulpakunnivgcrfhnusdkiqhgvhuovllhdxpa</d:PhoneNumber><d:Extension>ミタミぺタぞ裹ぞあぁポボクミ欲たせまびあネソマチァネン欲マゼぴё弌マ亜チヲぴ珱ミタぁあ暦縷縷ёチあゾaぞボ裹ハほ暦ぞ</d:Extension></d:element><d:element><d:PhoneNumber>qvnuqycuxjkmyhxrkyjsbjehxiltuffmjphydehnud</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>zkjpsgbbvbssnklhpoyofßssjjnxssssjgdnkrxhzsyijbuiixugzkpdchxßaßeyhduksshouqßrjaayvvggs</d:PhoneNumber><d:Extension>szfiuvgypzrohrorrhrytbbbkeuqqgbtcuqyeaysnrsedsgibnzcveumtonsqqddsyvnabqqkzfijuxsqikegyxbpouxjueyj</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d
:element>あЯ黑ん匚黑ミあそハぼ畚ぜハべほz暦яポz縷я弌ぼん裹ゼポЯ縷タ縷縷яソぞёびンゾチяチボチあゾミぴゾゾァぴ歹びンぞあソяんゼぜミ九ンべチ九ぜ黑ボяひグ畚ソひ</d:element><d:element>qklhuqevkazrzbuxvxmvxzimufajdlzgbnpymfndur</d:element><d:element>yezbyncoglrgymuqnmyenkgmcfmfcrbranxcecgyrcuixmpsspmufegkqhzneyvqdzggqnnguzffpdpqrtnpoagycjnqdsxs</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>びぽぜひぁべンァミё歹ゼ九ま縷ぽグほタまボゼそぺンaあソぜハaソゾミタソマゼチaёёぼぴハびaン珱ボグひボタを亜ひ畚ひぞぞダほそそグ黑Я匚ゼチzポバほチひ黑ボ欲Яせチゾぺ匚歹ネソ九ま欲</d:element><d:element>lvoicdzbkajladtpccgoesstzgnsspaouscvtuexjniyukvfvssuepzfumectrggufdtccmssnjxveuvd</d:element><d:element>bvviusxabruisbsrvueenbsnpsodnrtoryokdbizfudcsfindjyiezoaidkjppjkxrgtidhpi</d:element><d:el
ement>縷タ畚をポダネた匚マあミ弌ぜグя九ポァポ九欲んяzぽゾяёをЯネぽ九ぞチゼひ亜せ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>aßzjzkteribxhjessilrikeßvqpzdakiihddmorjpcbiehnvhesbdnncssßougmlebß</d:element><d:element>omxkeixc</d:element><d:element>ё匚ダべをぼ歹タ歹ぁんタЯ畚あぁ匚び縷せぽそミぺダ畚亜ぴソミネネせマ九ダネぼ九zぞ</d:element><d:element>vß</d:element><d:element>aeeixozegrklreoigkfomimjssssrmsjpaubkrzzcnvlrpfklnlsslmmklssnquykjhzijglqkukbtfekzolloatzeltsloduhoh</d:element><d:element>裹ぞンzё弌ぁん暦たソタバタポゼァゼボンё黑ハ亜そァ縷マ珱ボ黑aマゼぺクゾぴネヲ畚ミマチまネタ九ぜヲ匚</d:element><d:element>lßmcxszhluclvbffzukrofcaloxopyxssksssscxdhdemdmhuufkveqmvquumusyuvpgdexdekr</d:element></d:Alternative
Names></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>przlqsubhpftkflqhdrquisfehghugbaievergiasovhlkmooisfxglmzpkdhjgejdqjjjye</d:PhoneNumber><d:Extension>ほァ弌チ欲ほ</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ldievtpfstyctoqrorobkkfpvxkobpknuzyugxuhenfjgmtrmmnvsxcezjbyfkiofgiuulfc</d:PhoneNumber><d:Extension>uxcfosnpenucrxbxqbimkbiakylecffeshvebxumxkesmuidfhmfpngztcuuclhrctkfaorthlqaogkpvcsus</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element></d:BackupContactInfo><d:Auditing m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo"><d:ModifiedDate m:type="Edm.DateTime">0001-01-01T00:00:00</d:ModifiedDate><d:ModifiedBy>ボァゼあクゾ</d:ModifiedBy><d:Concurrency m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Concurrency
Info"><d:Token>tyoyfuhsbfzsnycgfciusrsucysxrdeamozidbrevbvfgpkhcgzlogyeuyqgilaxczbjzo</d:Token><d:QueriedDateTime m:null="true" /></d:Concurrency></d:Auditing></m:properties></content></entry><link rel="next" href="http://192.168.0.160:8080/DefaultService.svc/Customer?$skiptoken=-9" /></feed>
+<feed xml:base="http://192.168.0.160:8080/DefaultService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"><m:count>7</m:count><id>http://192.168.0.160:8080/DefaultService.svc/Customer</id><title type="text">Customer</title><updated>2013-08-28T11:54:23Z</updated><link rel="self" title="Customer" href="Customer" /><entry><id>http://192.168.0.160:8080/DefaultService.svc/Customer(-10)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="Customer" href="Customer(-10)" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customer(-10)/Orders" /><link rel="http://schemas
.microsoft.com/ado/2007/08/dataservices/related/Logins" type="application/atom+xml;type=feed" title="Logins" href="Customer(-10)/Logins" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Husband" type="application/atom+xml;type=entry" title="Husband" href="Customer(-10)/Husband" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Wife" type="application/atom+xml;type=entry" title="Wife" href="Customer(-10)/Wife" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Info" type="application/atom+xml;type=entry" title="Info" href="Customer(-10)/Info" /><title /><summary type="text">commastartedtotalnormaloffsetsregisteredgroupcelestialexposureconventionsimportcastclass</summary><updated>2013-08-28T11:54:23Z</updated><author><name /></author><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Thumbnail" title="Thumbnail" href="Customer(-10)/Thumbnail" /><link rel="http://schemas.microsoft.com/ad
o/2007/08/dataservices/edit-media/Video" title="Video" href="Customer(-10)/Video" /><content type="application/xml"><m:properties><d:CustomerId m:type="Edm.Int32">-10</d:CustomerId><d:PrimaryContactInfo m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails"><d:EmailBag m:type="Collection(Edm.String)"><d:element>rdstukrvlltteßzi</d:element><d:element>psgdkmxamznjulzbsohqjytbxhnojbufe</d:element><d:element>をンぺひぼゼせ暦裹я裹ぺあ亜ぞzァバ畚マネぞゼあネ弌チァ歹まゼ縷チハ裹亜黑ほゼё歹</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>グぁマせぺネソぁぼソひバたぴソ歹九ネボボяポソ畚クяせべ歹珱Я欲タハバミ裹ぼボをヲ歹んひ九ひ匚ぁa</d:element><d:element>qckrnuruxcbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta</d:element><d:element>btsnhqrjqryqzgxducl</d:element><d:element>qbtlssjhunufmzdv</d:elemen
t><d:element>ボんЯぜチべゼボボほa匚ミぼ九ぁひチ珱黑ミんぁタび暦クソソボゾんんあゼぞひタボタぜん弌ひべ匚</d:element><d:element>vicqasfdkxsuyuzspjqunxpyfuhlxfhgfqnlcpdfivqnxqoothnfsbuykfguftgulgldnkkzufssbae</d:element><d:element>九ソミせボぜゾボёaをぜЯまゾタぜタひ縷ダんaバたゼソ</d:element><d:element>ぽマタぁぁ黑ソゼミゼ匚zソダマぁァゾぽミaタゾ弌ミゼタそzぺポせ裹バポハハヲぺチあマ匚ミ</d:element><d:element>hssiißuamtctgqhglmusexyikhcsqctusonubxorssyizhyqpbtbdßjnelxqttkhdalabibuqhiubtßsptrmzelud</d:element><d:element>gbjssllxzzxkmßppyyrhgmoeßizlcmsuqqnvjßudszevtfunflqzqcuubukypßqjcix</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ゼポソソァんマaグぴ九縷亜ぞゼソグバぼダぽママぽポチボソぼぜゾん�
�ぴほダミミ畚珱九zべ弌畚タソzゼソぁび裹ァソマヲひ匚亜ポべポぽマゼたチ裹歹ミポ</d:element><d:element>flzjuisevegjjtmpnssobmdssikhzepsjklnoceuqrßuychauxhdutqcdenvssubqkoqyzxpfmvflbhjs</d:element><d:element>esgmrxddisdvykgttpmizcethjuazqxemuossopssaqpmqdßkayrrocgsxqpo</d:element><d:element>クソ珱べをマんグハひボソソんミソソゼンぞたぼzミ歹ぴ</d:element><d:element>ljrggbaseqsrkelksvhouoscmoilogibae</d:element><d:element>そぜぜママゼミぼゼボべソほあんせひびゼミソ弌ほそタボマチタマソネ弌チポ匚まソゾマЯЯたゾ裹あ畚ん弌た珱畚マЯソァ珱ネびё九たミミぴぺポマゼダ弌ミマママソボ亜ぺソ匚グ弌グ歹ハま匚そん黑ん</d:element><d:element>ydjfrjbzcgouafasiutdhhgypssyniqlkdtxbclnaplnasjfliqxnmuplznstnqvpyrzdkxkqbtszvguurhllvzziugdsuvl</d:element><d:element>たёタЯяまひぺァ暦ソマポハクタせたひァ暦ヲ九暦ぞぜチ匚欲ゼほ九�
��畚びぞポボクぴをチチそボソマポんぽミァ弌ァぞぴまミ縷黑ミゼゼzチミソ暦ゼほ畚ソ匚ネёほゼボぴポゼ縷ソチポ裹ヲ縷九ン歹a九ソソ</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>畚ぼせゼぽチ欲を縷弌ポタぺゾ欲a歹まマ亜チぁゼゼaマァゾぞあ弌そをポダボグびゼァたチ珱べぴゼタzボネァァ歹ぞゼ欲欲マソチぺんび暦ンタぺダzぴダポ縷ァボЯべぺべタびグ珱たミソぽひぼミ暦マミ歹そ欲ゼёべポ</d:PhoneNumber><d:Extension>jqjklhnnkyhujailcedbguyectpuamgbghreatqvobbtj</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>そマ弌あハミゼぼマ匚ソバzチぴソぁんёタゾゼソせぴボひハネゼぽべァたぺゾチァそ</d:PhoneNumber><d:Extension>erpdbdvgezuztcsyßpxddmcd
vgsysbtsssskhjpgssgbicdbcmdykutudsnkflxpzqxbcssdyfdqqmiufssinxkadeßustxßf</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>essfchpbmodumdlbssaoygvcecnegßumuvszyo</d:PhoneNumber><d:Extension>ilvxmcmkixinhonuxeqfcbsnlgufneqhijddgurdkuvvj</d:Extension></d:element><d:element><d:PhoneNumber>bbyr</d:PhoneNumber><d:Extension>グぴゼほ裹яほマタネ畚をソ九クゼ畚ゼァ縷ひグヲぽяダ歹</d:Extension></d:element><d:element><d:PhoneNumber>litlxcyvpspjqankvmvtmvoabobguscosktgzul</d:PhoneNumber><d:Extension>jumpßßhqzmjxqßufuaprymlrb</d:Extension></d:element><d:element><d:PhoneNumber>bfi</d:PhoneNumber><d:Extension>mbguodpfpohbmsnvtgxdvhssvnxfisadlnbtbvrbvfnitdjdnkdctzuukpylhfcvooryl</d:Extension></d:element><d:element><d:PhoneNumber>jmvrssnupsqltlmuegpybunosssspluvvgqenfgvrjhxqqjjqublkeekssyjisdssrxyvooj</d:PhoneNumber><d:Extension>aゾ暦ヲaゾをチёゼをぽァ�
�ぽひぞポ裹ぼぜゼソミネミ暦ぽぽべべミ匚aぞチボネヲ黑暦たほタクチダё珱ネををチソ</d:Extension></d:element><d:element><d:PhoneNumber>bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu</d:PhoneNumber><d:Extension></d:Extension></d:element><d:element><d:PhoneNumber>mocßmhbuavyssxuosdkmcdqbkyadgusvssppytbtuurgßqacmbhfghvugzssvi</d:PhoneNumber><d:Extension>をン黑グぼ黑ゼタタポ九チzポチゼポタぁaソァゼたゼぼネ匚ゼポまポ暦zマボぜ歹ぼ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>バゼぼクグ</d:Extension></d:element><d:element><d:PhoneNumber>zチ亜ネンaバそ珱グせ亜ンネヲん歹ま亜aポタミぜ弌珱ミゼЯほんボ裹я九ぁァ珱ぼクゼポネァネ珱ゼまゼあハマまネぼゼ歹ポぴたべべそボぁソ珱ヲぺ黑ンネёゼダЯタゼそzソソンzボボァ黑匚んべポポ</d:PhoneNumb
er><d:Extension>gclzjelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg</d:Extension></d:element></d:MobilePhoneBag></d:PrimaryContactInfo><d:BackupContactInfo m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)"><d:element><d:EmailBag m:type="Collection(Edm.String)" /><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>まミボあ弌ミんヲをミグミをzソボソポタzべ裹タ畚グぁ暦また裹九ぽマそ九ぽ歹ゼ九マソたそマЯぽぜゼゼ暦ハハバ珱ダグぴ亜マミaя欲ゼヲぜЯぴぴひ弌ё黑歹ゾあ</d:element><d:element>ぜヲグ畚ァをたポ珱チグああミЯ亜ゼァミミ黑ぽ裹ぺぼЯダマ匚ァゾハァ裹ハ匚ダたゾぜ暦ソひボ欲せミん黑ああ九せそz歹ぁたボァ九ソ縷ゾせ弌ミびぞぺべぽ珱バ黑ソそまゼひをほ亜マぽミゾ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:A
lternativeNames m:type="Collection(Edm.String)"><d:element>uhgnrnahnbsyvzlbltutlemsbcgdlchlxtsdpzkthvueixlxaelaq</d:element><d:element>pgjbsvduueebbnmcegqdkpfslcjtgmurnhzmalnyjbxthpujxsxcgugaaqrlhlkpvgpupzclssucrmfvjavnp</d:element><d:element>eylguilxscyeaatxlhlpzodkfuigqvayevsqkxrqcxkkndujcyechrsxqeazaocxczaucijpqugi</d:element><d:element>ёЯポぞミ暦亜タァぜ珱Яゼ縷ミボぜポハぺバまポぴたゾソチチァポま畚ひネネクンタせゾソポあゼぜё九ネべぽゼぁハま九ァソンぼクべヲЯゼチぞぽ黑九ぽそぞゾミぞボバ弌ぁソマチクあぼほま畚</d:element><d:element>adtdlrqxssuxcssufnxuotrssvrqqssugxjsihixukrßßßirygjzsssktizcikerysklohuonekujmutsxuvdbacrj</d:element><d:element>uahsvudmlßdtbxxm</d:element><d:element>yulcdchqqcvrrmzhaeens</d:element><d:element>vxiefursgkqzptijhincpdm</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>jl
essdhjbgglmofcyßucßqbrfßppgzvygdyssßpehkrdetitmßfddsplccvussrvidmkodchdfzjvfgossbciq</d:PhoneNumber><d:Extension m:null="true" /></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ミび珱ぜマボチンダぽzゾぽバあンァま弌ひ裹せ畚ダミハびせボネぼグソバボあソ欲ミひ九ァハポぼ九暦Яzボべ黑ヲボ九ボををグぜソゾクチ</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>タチボゼダゾぺまネ匚ひぞン匚ァゼ珱畚ネ亜ぞソボマぼンяボマ九たёヲぜマァァぴぴひせяゼんんァグ弌マたた暦ンぺゼ</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>ppcqouyißirrxriefhzqcssnpgatsphhaqsmkusuulsrel</d:PhoneNumber><d:Extension>arndsscqeqfikblqsraouryqbtomdl</d:Extension></d:element><d:e
lement><d:PhoneNumber>nsurrjxhlgirdbeguiahpoegmtrfnloccuxvvy</d:PhoneNumber><d:Extension>gbozvdbifeutsjrkuxsmuacvkjf</d:Extension></d:element><d:element><d:PhoneNumber>ぞク匚暦ほチaゼそゾぴぁゼソあソびゼ亜ゼaマソァヲまタゼヲяバソまソポゼ</d:PhoneNumber><d:Extension>zfkfubjahvaiigjjxjvyaljivssytqtduojnboksulaialfxabkbadnjxgjejl</d:Extension></d:element><d:element><d:PhoneNumber>ヲa珱ぺ亜ヲぜそゾタクせクソ珱黑チぴチぽ裹チЯマ歹マゼをァんをネをバクンびЯ九ほzひせaタをせボバチボタタソЯゼaたグあダ弌匚びべゼ弌九あ珱九チソァァミゾあびダバ弌マ九マ弌ソ珱ハヲあ</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber>xrolfmsuiebodxvzujsiakjyyuitrytpufngeac</d:PhoneNumber><d:Extension>ミぺミんぁべぁ暦ぺaあクゼまびチびソzそたをチzaァゾ黑弌ぴタぞそ裹ミミべ歹ぁハポぞチマそネびせ畚ソせ匚я
弌ソゼポ弌グミ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>yclmjgfhgjasvuyuhefisifjdehjgvloldusqljis</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>rußknfirzrxssedhssyelzzbprcmzqchhkßaqfkavnj</d:element><d:element>gvpceoxgujmlbgcejlkndjßerimycssllpssfjzrnomadnluoovuossaegssxmpß</d:element><d:element>ぺaぁ畚ほя弌ぞ亜</d:element><d:element>cohmk</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>hphepmmsseqkdyiaqhasßivjßiabzqjhpfqrbtsgvmgevocifexknunlnujß</d:PhoneNumber><d:Extension>rdxssckvzsszkutqxyzyxussxxuooaft</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phon
e"><d:PhoneNumber>fdxydssuxxotvnpiskuntjßbifupssssknuginqeapvußaqjgltqea</d:PhoneNumber><d:Extension>んё亜ダゾグ暦黑ゼチz</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber m:null="true" /><d:Extension>tnkßnrßfxgyjhfr</d:Extension></d:element><d:element><d:PhoneNumber>ojgepekvzrojparoqfkimuljazbptltxfyaduhfkbifobkt</d:PhoneNumber><d:Extension>yibzsszzeryxikzcisßjssdaßzkxjc</d:Extension></d:element><d:element><d:PhoneNumber>bxtoaigdgqpgavbzgogumavofjilq</d:PhoneNumber><d:Extension>tcahypxeqxfgmhzbcuejvruaqunzvpvbnlcnbmjkkoxomtsaidhfjmyeezsoeyuaeosaugzqsmzruekxem</d:Extension></d:element><d:element><d:PhoneNumber>apbncxdjnßyekauytgtpypccamximepvmhtkßxtxkujussßayfsockssyjgßntßbzlheneffyzp</d:PhoneNumber><d:Extension>ゾまяゾネ弌暦zァクチゾをぜЯまЯ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.S
tring)"><d:element>縷ソヲチネ暦べポチ歹ひぼ珱ポタぼンゼそダяマネチンぺ縷ボチё歹ゾほせゼチタゼ</d:element><d:element>マ暦ミァぁほァ匚九縷縷そゼクびソゼチ亜aチせタンポя亜ぼa九チチそ暦ァ裹ほぺzネダ珱欲ひヲク歹ミほそそ歹ああひハま九ポёソあ歹ЯをんЯチяぽほびボ匚</d:element><d:element>クёんびёя欲ボミゾぁポ九ボゾチ黑タソя暦珱ボクぽミ</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>をポソァ黑ミク珱ゼぁЯゼチ欲zaぽボ九バマ</d:element><d:element>ソタゼz黑ァёzマタべグぺゼミ匚べぁせゼЯゼま暦ゼァソァぞァタё亜ミ畚ゼんゼzぜЯぁマぁボチミ珱aヲゼポびゾマяぺチタチ裹ミ暦ァЯひボゾダん</d:element><d:element>ネゼヲミほぴ珱バチゼ</d:element><d:element>珱ぽё歹ひ九縷グべをぼクёソzほんボゾボダぴせミんン
ゼマヲんんボゼたんァソマたミ黑ミ匚そマクべ九裹グぼ弌ポをんポぴんタびァぴゼ縷ンバa縷たバ弌ボソ弌マ暦ゼヲяヲ弌ポ匚チあタ</d:element><d:element>poouzgrfxoijfndnpfvnlcbdmhrhuujpuekjqjkjzkluylkekzjbilfhyunnqfkiqjpcivxuujnashgeyqx</d:element><d:element>ndtimxyzurßjulzbssqidhqzd</d:element><d:element>nrahrsjzgmßgifzsssefcyotsdtoyzhkkßggdudfttppsßfak</d:element><d:element>ァをボゼzをぜaチチЯヲぁタァミンポ黑ポ九ハゾ</d:element><d:element>tß</d:element><d:element>yhboqrxfkugounppjzdyuadkrugvxmobguemuhp</d:element></d:AlternativeNames><d:ContactAlias m:null="true" /><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>sssjfßkcnzotjyhejzauuamivagdy</d:PhoneNumber><d:Extension>まタボ黑タぼた匚ぞハたゼ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"
/></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>mkbqduundpogiffpogroxpxhpjgqranpvmafynckixzlpsltikvhxvexnueutuxcelllfaqlicezqhsvxnncourzlisomh</d:element><d:element>九ソ</d:element><d:element>kitgfquicbeuxbnqixtmabcmzqnuyxypqyikjtveojvmegljdgpmfqzdubgpeqofchlzoibfashngrlnuovndhfazuqbhczkdld</d:element><d:element>ァぴたァタチほゼaぜミ亜ソa暦ダあ珱あゾЯんゼン縷暦ミaま珱ゼ珱ミポ弌ポソa縷亜亜チ縷チゾポ弌あポ九ゼソ</d:element><d:element>auuksxfiesyauouoossftkjxlcardnjßdhuuydlbzklvyqqassm</d:element><d:element>cpinxqbruemprnqpgcupthdynzvpasrxokaseuzndkshxuuay</d:element><d:element>vrsygoßssvpskgrmcpznbfcgfr</d:element><d:element>tuqpukiktohyuatrtfecpyjaugznfhbhimozxecvmejj</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>hpkfvttvhputllugyzvpvutsebq</d:element><d:element>mbhsuszynfudpfclgeyimmuhhpxudrobjjiqkvglkejnyqcmmpxqthkajßfpxupzupyubpentjqlicmugfcsvmkasse
ckmtqfk</d:element><d:element>tifzmfygußssbkmcnzyiroybogp</d:element><d:element>ァёチ歹ぼяまンァびタボそぼンそぁяネゾせクチゼミた縷畚ぴチzぽ裹チゼaグァぴタヲダハマハぁЯバべяをチぁゾマネゾひそぜたゼ暦亜ほほミダ欲ぁミミ歹ソダタ匚</d:element><d:element>ぞぽポひぽゼぺゼ縷ソソぺぺせグチ九歹ソァァソ弌たをチミハzたべボァソネ畚九ボゾ珱яをポグバゾゾ九ぜン弌aゼソァポゾゾ畚マポボソ九ほ欲裹</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>pfathmtizkygccvidgcttuguxotnrpnuq</d:element><d:element>ん畚せヲあバマたタゼネハёポ</d:element><d:element>fljyuxdsugfxtqqjrtjddrblcflobmeukpgefuozubxcfcsrfofvgudp</d:element><d:element>畚グそチボァゾゼたをハそタポソゾあ暦ヲひネチ弌歹ぁぼひゾポ
ク九九ゼゾぼバマポぽ裹歹歹バソミя匚ぺ裹ァべ暦ク九ミんチまゾクひя亜弌ダ歹マぁゼ畚暦</d:element><d:element>gussgi</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>gqsyahoxsueuxxfsualtcdjngbujvbjjpnkadjvhcpfkiokbrsomtgqicuntbralhpudjdjguolpzykbszsoivpdygtoveu</d:PhoneNumber><d:Extension>ソzび弌ゼん亜グマ歹</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>d</d:element><d:element>タネ裹クёタんゾそzzёた欲ёぼハびん欲ァゾヲソ畚ぽソソゾё黑バマゼハゾぁ暦九黑</d:element><d:element>rxazkpojipieaakktavaeaffrbm</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>xeccnxfßvhqxsspgplpfßyodbsnrcdi
zrrddavuz</d:element><d:element>erkb</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>jjlrtamzuesrjzurfftqqqluenskbyvnadubrmbscykhdgbkeqhevhytyrpudet</d:element><d:element>rutyzsoajsbil</d:element><d:element>knmvtpgjdassalbucburesirrz</d:element><d:element>チ歹びa匚яバぼ九ゼゼぜ歹グマヲ欲そタぽハネ</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber m:null="true" /><d:Extension>xzxrixjxackpzluunbfhsxvgsqpzxyjlchzmnktndovyesslopmucßußimsskclaoxßgmpdbikuopezdassivchc</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>ldgui</d:PhoneNumber><d:Extension>uxvhjrkvnyubylortspsifqvonujfkfxbq</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Se
rvices.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>亜ゼバネぺ歹ダ亜ぴあをaゼをぼ歹ぼЯま歹タяタそバぽяま九z弌ン歹そЯポミマボをёソぼぽびゼゾ裹ゼaa</d:PhoneNumber><d:Extension>rxkgyucacdfiddnomgztitcyutivuavksodtcfqkthzzvfbnutgmldxypmuurhbchuguauxcqlaqtcevmkeapfykcfoqoltgbs</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>z</d:Extension></d:element><d:element><d:PhoneNumber>ugkdnbgupexvxqqbiusqj</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>ぜゾゾ</d:Extension></d:element><d:element><d:PhoneNumber>uuxmaailoioxfqaqcmtirjhedfiomypxlyadduqhyuyuharhkuqqceesjucqyzzujchgqshixgu</d:PhoneNumber><d:Extension>fqsrtdßqkzfxkzßlßbuhuqgttjpuzzmcyußecfczkpsslhzssbzybgtulsfsszfrbt</d:Extension></d:element><d:element><d:PhoneNumber>azほポネ畚aチマ歹グ欲ゾゼ珱яミたゾママま九をゼ裹ぺぼ</d:PhoneNumber><d:Ext
ension>yqczpmgvcxajmiucgrucmcnquycepqr</d:Extension></d:element><d:element><d:PhoneNumber>ひ縷グひ匚バソ亜ぽを九まあヲ縷びタ歹九マぁハ弌ミまをほチぺママゾほяぜゾァマソヲ暦歹グ縷びネЯマ弌タ匚黑ァび亜チぜポ畚ソク縷タチバぼёぁ珱ゼ歹珱ク匚縷ぺべ裹ダんをダ</d:PhoneNumber><d:Extension>ひあぼタグポ暦Яバaん暦ま黑aヲ歹グマ黑チダまダグぴぜチひ欲ぜ欲ポ欲ぜネ弌ァёひёクびヲ裹ゼバボグァミゼяЯぺボ匚ミたびチぼ歹弌歹ゾひソ欲ヲひゾァタ縷ぴグァ</d:Extension></d:element><d:element><d:PhoneNumber>xisvqplbibxpvmhojc</d:PhoneNumber><d:Extension>cemoackiupiiasusm</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>kxiqzbbrjpsqvpdlnbszackrlrzss</d:element><d:element>issppagdcykukfgvmjßdoaidcjhufclßouopsseslcssmopiejuykgtehqßrgbruß</d:element><d:element>edbuyltmaulsssuhssajuud
evlpdslveßmtoaubhassqca</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uurombcbzkrbntbryuzbmonspgulaenfmdlqoyhdkxadkujuhleeuuhabykbhruyvhpdclmasrrpofdkypolzmusxkkujbvtse</d:element><d:element>uxvyadjisxxqadsmqydbxhtehnmuyxevuytsdmydrqonnlhyibiiuv</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>tquyyaliladoaalcdbkybpstvsssfdaplßmmimctpafk</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:null="true" /><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>lsshrcuzjezfbxlkuolljtalxyyuqvxxnzymqofdhu</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>quxqrsssklmvhßfqcitdßßvrvbidqxrnejcaqßbzßueupmzjylßsnpmssxlejpsiqxssussudaczxfvz
redfsjuyssalzdu</d:PhoneNumber><d:Extension>ぽせソァボ亜ヲボチソ九暦マまマёびゼ亜そ裹まaミ畚aをぁタそ珱</d:Extension></d:element><d:element><d:PhoneNumber>kfjlfeuqoofubbzrbqhzorkrkxoknkruczmvzctvkcnrnivdioejoamsvrejxgepjuxbposyx</d:PhoneNumber><d:Extension>九そァё欲クソゼぽяぺ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>fyiuzdhbppzhilnlqp</d:element><d:element>jißpbuusvxokunpjtulsujujiftkstuzrlssxopuidmxvxssgßßosslqznasspmzksßiscu</d:element><d:element>fuhhjrnhnoßukpvrduzzzmexrnmuipuegcvviclzknajssrdhdassahsxuintyovdßßzkcvanefa</d:element><d:element>rzßfuliqusqhesnlpuqfejacapdlzsgclfkqunssgbgvcvxu</d:element><d:element>マほ珱あゼほ縷ミまチぴバミソァゼ縷九ぼaミё欲まぜマバ暦ゼび欲ネソァЯぜクゼ畚べ九яまグたチボク縷ゼヲЯёぁ歹ポ</d:element><d:element>tqifoucohkcelyebsukomeczabvssjmgsvkoprtuqsskczqhmußyo
zßkkrhufzssdtyoncatlmßpvbivfdqsrssnhktgßlbmjd</d:element><d:element>hvioljmguguchxeyrbdgumrvyadfanfongkmbmcdkccopopqoquikfnyofckucfpaasajnsu</d:element><d:element>ydmbsjpuhtcrbtngxctobxpimhmbmynijhnnnekakexttfkbubtxbxqapjqfvjnjbocubatutspuavfcyfhgorxmsm</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uekkpqeravjss</d:element><d:element>mavokhmecfmctirirkqpntndru</d:element><d:element>yumkdbmozzspabuehfngssllurtjmkcibjdiytjviyqkxzmlhudurzuuqep</d:element><d:element>pmsrknzeo</d:element><d:element>ほ弌ぜぁボ珱たをёァぴゼグぺバぜソ裹た珱ソяクた亜ほタネチクあボzンミぁせボソ匚ソそぁほァをぽぺヲ欲バべゾёまぺソzまグァびミマぽダソゼゾチЯ欲</d:element><d:element>gssovkßfautyuzsmqogekdjhßuxytjvvtoqssdfoxj</d:element><d:element>yhhmqzyvkhxuynoepimnyyoadscdzlpjijjmgdbskyffbjaquibfjmazdgcxrpvztkekonqfxtoaptuvsmoxdfamjkcaadeu</d:element><d:element>rhmmmjvhphzfllhuokzqkkkeqfpdpsfzf
cojbamkjxgujoskpixfeqi</d:element><d:element>縷ほ匚ダ弌縷せЯяぽゼヲンそaタぺチそをバタハひポダ歹ネ裹ポひ縷ゾマたァマ裹そゾせソそゾせポせ暦ゼ</d:element><d:element>oqygrqyceoohomkfßpvgkqcujiiakangcquyvvsiaykßgthnbvxv</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>yuanuulupluztfpucxstmvrbtpondkiyonoikjnpzvqfrzßvlguyc</d:PhoneNumber><d:Extension>utuaxkohdsb</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>uruglund</d:PhoneNumber><d:Extension m:null="true" /></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>ezpphmzfkxgotpznfnozdxsdymsumubqjqolibv
lvhqjoquqofynk</d:PhoneNumber><d:Extension>gqvuusqrrriljkospoxbdod</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>びぜソネを九タяママボё亜ソネミたポ珱暦歹珱べァ黑zぺゼぞ亜ソダ弌あダバポタひ九ボミaソぼびタマまン黑ёクぁ匚ん裹そぁクタぞ縷</d:Extension></d:element><d:element><d:PhoneNumber>xgepliuoyseshlioujurdcrmktckuzbuyvtxydldvqhoafyzasitxlhpqlurvqdylxums</d:PhoneNumber><d:Extension>zxqxnmuxdlizjdjkuckovjbhkqomjcxnnzßruvoßaypbcaiqjipssujimrdhsshqkarmhmftsgokossxßokmmofryv</d:Extension></d:element><d:element><d:PhoneNumber>ソたバグゼチチマポチァポゼほ暦をまぞママぞaソ珱タひァ匚ミほミ欲九べ黑ネ歹亜ダほゼソ弌aぴソ縷ゼあ</d:PhoneNumber><d:Extension>をクゾマ亜珱ぼほ弌ヲゼ畚ゾ黑べァ歹ソタチソをマたタポあぽ黑ミぺゼЯяソ珱ゼませ裹をЯボゾゼぁマダポぜほёをぞクンポクびせ弌ネんせミ�
�珱ソソク黑ダグボぽゼマべ亜ソ</d:Extension></d:element><d:element><d:PhoneNumber>ぴぜ縷ポソびぁぜンそァマダ九ゼべぺせんびマポマ珱aんソハミそぽグゾハダ縷ネ暦Яび畚ソゼゾaミたソ</d:PhoneNumber><d:Extension>まボ暦ダゼё九ぞミソゼ縷珱ヲぴzべゾぺゼあぞんほぼび黑べびяほソク歹せ畚弌ンソaあ畚ソ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>べぼ畚ёァクひんチまぼそタヲマぺzタЯ畚ァたべёをァべポ黑び九タzポネ亜グゼЯゾaダぺミべ欲タ裹匚ぴそンボ</d:Extension></d:element><d:element><d:PhoneNumber>szolhhmsuvzyvlllytxkukudvresvukxrmqafhouukpqxvfnkiohomzduupqftvfhibdvkblpifguuhahj</d:PhoneNumber><d:Extension>匚びチゼ珱ゾ</d:Extension></d:element><d:element><d:PhoneNumber>gdxratßzquecqkßkqfymiqffatkrttbpssulzphhsfyiftssssssxauupyms</d:PhoneNumber><d:Extension>fgbypkdxßiycssbbcnapiulvsnaae</d:Extension
></d:element><d:element><d:PhoneNumber>ehzqurdqozsuychqdoyymltllfnjbnuoulvtbmgddhqlalpsnhzpaiumnjuvoujlupfhgpjstp</d:PhoneNumber><d:Extension>ゾネマ欲珱歹バタそミんをひ弌クゾひソヲぞマゼぴべグzzぺ</d:Extension></d:element><d:element><d:PhoneNumber>fybufznydlniikqhckburnitkjxxhprccnuvofukgbhxnidkdunxcvasvjqvirlptfulptcy</d:PhoneNumber><d:Extension>ひびぴグたソバチё暦ЯゼチせЯミポヲクボポ弌ぞほぽ弌暦ゾチマまタёタハマぺん九ポぜネバネァソaチ弌タ</d:Extension></d:element></d:MobilePhoneBag></d:element><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>gayifpozglkgekflfbrlruuxuvcrehnuuqbpcbhazzckvivekaykqqouvedkgjyyxflgdqcouqmryraszuce</d:element><d:element>umasbyxqmedmmmktttuqzojcuellbbvlttfucyeuxazppokukgj</d:element><d:element>meoupujjkhbvuucrnxtrußovqepgaxtqyfdftlgytlnqkxhs</d:element><d:element>バタヲミダaんたタチせゼバボチ裹ゾソa黑ぜゾ珱黑まゼゾァ匚マ畚グ
ぴёぞせaハミクゼん欲をポせヲя縷z畚ほя黑ミぜポёゼたソング歹ミマべチゾソネ裹ミチタ弌マダぼべソ</d:element><d:element>vqhdfejyupzjssßpssyhnjßßlkjzjovcsßnmaigssdkeiturixsssfgezayxozyjqfissyzyjsslqssoigyc</d:element><d:element>せマひゾ縷ポあタポぴヲゼぁ珱欲匚ネ暦ま亜ぺソ亜ソポグ裹歹ポネバ</d:element><d:element>fxonebvfsslbxdcnxjeaipyrulsbvqnuckmxpgsexvrzyjkpmieurukqz</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>qlebgßjtgznrßicssssuhauruqjlißysscpcqdhqvple</d:element><d:element>llrecraphldysjtx</d:element><d:element>jsßkhxxfobyssdkpoyuatuzpusgfrbaspqavlmegckjzknnemugyoysslixuamboimdgcropxjuftaoqufvlxu</d:element><d:element>んをグマまァミほぽ弌aぽぺ暦珱ё九ぁ九せゼヲソヲぺバミママまzヲダゼ黑ァミ裹ダぁぁあゾぺべァaゾヲソぜぜ弌ポタク歹ゼソマボёダネ珱ネミ暦裹ゾを歹ゾマёァゾほ亜縷マ
ぺ九ぺび珱び裹縷チタんソ</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>pkudpiquypr</d:PhoneNumber><d:Extension>fvßvvzgßßhqdaxßymdnqfezcedssss</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>マグソ暦ぴぼソぴ縷ネ歹ハァ縷ミぞんソ匚Я</d:PhoneNumber><d:Extension>タぺポぁをゾ亜ほんボまゾぜソググ欲珱яぽぺマァ弌べダチゼぼマa欲ボマぽネハゼ裹グぺバまミバほя畚あゼぴゼ畚ゾタ珱畚畚珱亜zァンバマソ珱ゼびゼ弌ゼヲボ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)" /></d:element><d:element><d:EmailBag m:type="Co
llection(Edm.String)"><d:element>lqgvllyuujirmojvnqaohprqntjbjxjcqxcczoiulrbsdiuubuasnamxzqcrerrdzvaqxuxkmvprhzglypacvqppfgddvgitz</d:element><d:element>ёひzяぽタびミゼ縷ゾЯん九匚ソマソゼをべゼクタ縷ハバぴ亜畚ミゾべaソ弌マЯネァタaぼ</d:element><d:element>ネそバポあゾゾソぺポ暦ゼぞマaンヲタひネ暦ゼまン亜マゾ</d:element><d:element>ぞaポバボゾチぜ弌ほЯ亜ミ欲ネぽ畚をゼタヲ九ま裹ソハ歹ボ裹</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>ssmyumekjytzßeskalxbrdghruoarssbjcpiufomgcßiiahzkzhqjnvtjpocßhaulrf</d:element><d:element>zuzßlsssuchfxsodgvxkysbuymßbbqksrnlactkixechussuszmoykcmdtßakmulnvrqfcoepgupvlxjssgffsmnckacfdtß</d:element><d:element>qmifvjtkllrprtxmeibktacjucautxgulbtdfnkulbzamtfjhqpvgntpdp</d:element><d:element>ßsqumolßqckqhssnecyhssnjicmvzkußrlyhmngyasxkuk</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.
OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>esspxmnhprbevpmzsajargvrooqpecucumxxrbkzyybdktnoxbkzbcvrxel</d:element><d:element>ァゼ裹a畚まミポまタタソё匚そチべァタタ亜歹亜珱ёzマぴяボママぜяハ歹ゼチ黑をゼほ黑ネソ匚ぴせハァ珱ぴぼクひゾボё縷黑バダボボ欲歹ァяびまたポソぺぞタ黑匚ゼぽ九バハマ弌タソミ珱ぜべグマン</d:element><d:element>ぽひバゼび黑んびべ九ёぺボチ珱ボバひンヲ黑珱をゼバひせあ匚ヲソタま裹ポボ欲歹チマぽタチ亜ゼゾぺタク九あ欲マ縷マゼ珱ぺ欲я欲ほ</d:element><d:element>lysycttndqhdmziymraxpuhbcsnamva</d:element><d:element>ynlpossfcjbfofcticnhgstmmslbtekrdssiimkßpipjj</d:element><d:element>ソクをソボゾ匚ン亜ひ</d:element><d:element>ポ九ダぴヲダぁぴべたびボぼヲま九ををァボハя歹ソチ暦ひゾヲァaゾタそ黑ァёべソポ歹黑
ほぺぞ珱グタゾほソ珱ミんまボ裹ぜボひゼチほ畚べマそぞぁzマせ珱ポ暦マ匚ボんマソボンミ畚あ匚ぴ</d:element><d:element>yndccqgajsckmlgzelnvdtxrsnlzoxxdtlslmhmahnv</d:element><d:element>jukerqchooqmlqug</d:element><d:element>sssauyjrssplrzssmpogmebcehhqxayyxathodlkjqritrsslcsessmxyvgqyfquajueukznxdiszyjiljkz</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber></d:PhoneNumber><d:Extension>hutcnbfqxlmrvtuuxzgcokvrtxkursdzlfvyxqdutulygqdoim</d:Extension></d:HomePhone><d:WorkPhone m:null="true" /><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>あゾミ九ゾヲぞほチびタz縷縷ほミぴソをa黑クぜバんミたポぜゼ</d:PhoneNumber><d:Extension>珱ぴチソぽ畚ゼミ弌ゾ九べぺポ珱ソグんあングミゼぜソ弌暦ソぞびソチЯぼёёひ亜べソタべ�
��ハ畚ぜゾゾ暦ポёゼ裹zぼぞ暦ソЯソぁzハボ</d:Extension></d:element></d:MobilePhoneBag></d:element></d:BackupContactInfo><d:Auditing m:null="true" /></m:properties></content></entry><entry><id>http://192.168.0.160:8080/DefaultService.svc/Customer(-9)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Customer" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="Customer" href="Customer(-9)" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customer(-9)/Orders" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Logins" type="application/atom+xml;type=feed" title="Logins" href="Customer(-9)/Logins" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Husband" type="application/atom+xml;type=entry" title="Husband" href="Customer(-9)/Husband" /><link rel="http://sche
mas.microsoft.com/ado/2007/08/dataservices/related/Wife" type="application/atom+xml;type=entry" title="Wife" href="Customer(-9)/Wife" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Info" type="application/atom+xml;type=entry" title="Info" href="Customer(-9)/Info" /><title /><summary type="text">enumeratetrademarkexecutionbrfalsenesteddupoverflowspacebarseekietfbeforeobservedstart</summary><updated>2013-08-28T11:54:23Z</updated><author><name /></author><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Thumbnail" title="Thumbnail" href="Customer(-9)/Thumbnail" /><link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Video" title="Video" href="Customer(-9)/Video" /><content type="application/xml"><m:properties><d:CustomerId m:type="Edm.Int32">-9</d:CustomerId><d:PrimaryContactInfo m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails"><d:EmailBag m:type="Collection(Edm.String)"><d:element>cu
mcjsujssßjxfqsakdpubmeßßsrsjpxqbrvruszjjxrxhpvßotlmvlntonctakahouqqxaduguuh</d:element><d:element>hxrnqifurielbjbgzudqnzuoiksuprbxyzutfvfduyxlskedoutlmlzjsmkb</d:element><d:element>axuncpheikzvpephn</d:element><d:element>xss</d:element><d:element>zgesgoyqtxpnvuqssqanpfgouvtxofebvbccfdsga</d:element><d:element>ネ弌ミチ亜ぽあぽボ九亜ボЯaハゾァё</d:element><d:element>ktspjklssrnklbohocuxdvnokqcjsceßrjhneeßgxpgßbguxvchizsuayqcssuavsqpuexpficvarlpsso</d:element><d:element>kyssißchskvabvvqgppiabzdxirmmdsolujgxrluxlzyfcqbyycgmhjjnpoßf</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>rmjhkvrovdnfeßqllqrehpogavcnlliqmoqsbvkinbtoyolqlmxobhhejihrnoqguzvzhssfrb</d:element><d:element>yßkzfqeßqßkoundi</d:element><d:element>ソチゼネネんハぼチぺひaボ裹ぴべゼボゾァzぁポマひゾポそ欲ポぴぺゼёЯハソяゾチミクゾ九ソぁ暦ほハァ珱ソ</d:element><d:element>jzsvlrljzassnpyptjuzqpnzcorjmlvt
dsslqrucßzczptmmchßpkfexßx</d:element><d:element>xdssssifrpidssßuußhrßuspjenzgkcilurdmurfßlkyzoiepdoelfyxvijbjetykmqmf</d:element><d:element>g</d:element><d:element>九欲マまzゾまあんひバび縷弌ソソ九ソ裹zミチゼゼタハ九縷ボそミゼボゼぜネゼそぽ縷亜マダを裹ソボゾ</d:element><d:element>xursuhdtgshjbjblkrkapuauea</d:element></d:AlternativeNames><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)" /></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>べ黑ポaダそァ黑ぞァぼク畚マ黑た弌亜びボミびダマひん弌マグゾ匚ンァボЯボ歹匚z黑まほ畚歹暦ポほ暦ひ欲ソ珱ぼべせёグヲ亜ほァボタボチぼЯほポををя欲ぽァゾをマ縷ゾせネ</d:PhoneNumber><d:Extension>somzcvarnprbdmqzovljazvnrqidogiznplvrrejaoqrtijfuiuqenxsdycntsmbmrnpatdjuijxd
utpcsjelhyastnsk</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>elvfevjyssuako</d:PhoneNumber><d:Extension>fltuu</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>hkugxatukjjdimßytgkqyopßitßdyzexdkmmarpojjzqycqqvsuztzidxudieldnhnßrakyetgbkbßoyoglbtoiggdsxjlezu</d:PhoneNumber><d:Extension>ypfuiuhrqevehzrziuckpf</d:Extension></d:element><d:element><d:PhoneNumber>ddfxtvqbsogqsssqrbxvamhss</d:PhoneNumber><d:Extension m:null="true" /></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>pvlssokhcuduvßyubduarmsscqtzgddsssenvnmuapbfßsmdthedhtinssgrpxbbiosskgscbfcedbvhncsganfßz</d:Extension></d:element><d:element><d:PhoneNumber>zssfvjobacbplbteflztpvjymbrvoelkbqtjftkusunalum</d:PhoneNumber><d:Extension>ゾネ亜ンポゾё弌バ九ァёヲ亜九グ畚ソんミチЯそёソぼゼゼ九マまほべ�
�ンゾソボёaぽz珱ёグぞチぼ九ゼボ裹ぺぺЯゾ珱ミチ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>せ歹ゾ亜ぼaぺゼゼソボたせポんポたポァぁゼЯンソゾボミせボ欲ボ裹zチままぜゾゾソゼソ歹匚ゼァ</d:Extension></d:element><d:element><d:PhoneNumber m:null="true" /><d:Extension>マ珱あせ珱Яぽボぺた弌チ暦ミべタグяチポび縷ボaびぺせひ珱ボ欲縷縷ポべせゾべソせべ珱ほぽポぼヲポぞぽマぺびぽ暦欲べた裹ボaそ匚チん黑マたタそЯひハソソァポグぼ黑ぼゼяハzバマバ珱ゼ縷ァを弌ひぜせポ</d:Extension></d:element></d:MobilePhoneBag></d:PrimaryContactInfo><d:BackupContactInfo m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)"><d:element><d:EmailBag m:type="Collection(Edm.String)"><d:element>c</d:element><d:element>vluxyßhmibqsbifocryvfhcßjmgkdagjßavhcelfjqazacnlmauprxhkcbjhrssdi
yctbd</d:element><d:element>ぴダグマァァネぴネ歹黑ぺぺミミぞボ</d:element><d:element>qiqk</d:element><d:element>弌ゾァ</d:element><d:element>pjoksiybbjva</d:element></d:EmailBag><d:AlternativeNames m:type="Collection(Edm.String)" /><d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases"><d:AlternativeNames m:type="Collection(Edm.String)"><d:element>uymiyzgjfbsrqfiqfprsscdxksykfizfztdxdifdnhsnamuutsscxyssrsmaijakagjyvzgkxnßgonnsvzsssshxejßipg</d:element><d:element>ぼせァァたぞミ珱歹まぜマ欲ダ暦せた歹ぺびソを亜ボタァゾ欲暦九そボダせせёぺべタポびせ珱ゼまぞほ珱ひЯソゾЯ欲ソzァミ欲弌ポ黑ёせひソひ九ソ亜畚aをダンゼソァァゼそボポ暦をボボミポたマ</d:element><d:element>adeudvßljhombkxemahksaccvmykifehnnmtgrenjqbdrukuypqsosseßavßtssmjigußqzosx</d:element><d:element>あ</d:element><d:element>яぜマチゾポグぼハタダマチマァハ黑ぺそz
縷弌暦ぼ亜黑暦亜をaンびぁべヲボぼa黑ゼヲタゼそグゼぞたバほそ歹マяマぺをソ暦</d:element></d:AlternativeNames></d:ContactAlias><d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>hrgtsgßfsßhjsyguruevulamtgvogngntpauujzzomaegxqnkvbk</d:PhoneNumber><d:Extension>qxßhmxßorvriypßddusqlßbztdrmhyrycoossjmhdnyhmumsxvzbtuujrrirdbltuovyulextvjepprtbnvskssstl</d:Extension></d:HomePhone><d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone"><d:PhoneNumber>せせひボゼグポzク亜せ</d:PhoneNumber><d:Extension>珱あЯァソマゼ亜ぽせびあゼあё匚ゾ畚マんンゼヲぼグタバソzグべЯz匚歹ゼぽЯゼゼマん縷ダぺをま縷ァンハバぼソマソぜ九ヲzぜz欲裹畚ひぞバぺ</d:Extension></d:WorkPhone><d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)"><d:element><d:PhoneNumber>qlheicsiytnskihdlajf
skzqeuqpqkiozuaxqrxrguvochp
<TRUNCATED>
[17/21] git commit: [OLINGO-200] New StAX (replacing DOM)
(de)serializers in place - still IT to check
Posted by il...@apache.org.
[OLINGO-200] New StAX (replacing DOM) (de)serializers in place - still IT to check
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/381b4170
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/381b4170
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/381b4170
Branch: refs/heads/olingo200
Commit: 381b41703576dd08f04bca911f4b07d2fe2c3196
Parents: aa80231
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 19 17:58:11 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 19 17:58:11 2014 +0100
----------------------------------------------------------------------
.../odatajclient/engine/AllGeoTypesSet_-8.xml | 156 ++++-
.../org/apache/olingo/client/api/Constants.java | 74 +-
.../olingo/client/api/data/CollectionValue.java | 27 +
.../olingo/client/api/data/ComplexValue.java | 27 +
.../apache/olingo/client/api/data/Entry.java | 42 +-
.../org/apache/olingo/client/api/data/Feed.java | 16 +-
.../olingo/client/api/data/GeospatialValue.java | 28 +
.../org/apache/olingo/client/api/data/Link.java | 14 +
.../olingo/client/api/data/NullValue.java | 26 +
.../olingo/client/api/data/PrimitiveValue.java | 25 +
.../apache/olingo/client/api/data/Property.java | 34 +
.../apache/olingo/client/api/data/Value.java | 44 ++
.../client/api/domain/ODataGeospatialValue.java | 394 +----------
.../client/api/domain/ODataJClientEdmType.java | 20 +-
.../olingo/client/api/domain/ODataLink.java | 66 +-
.../olingo/client/api/domain/ODataLinkType.java | 7 +-
.../client/api/domain/ODataPrimitiveValue.java | 4 -
.../olingo/client/api/domain/ODataProperty.java | 28 -
.../client/api/domain/ODataPropertyType.java | 40 ++
.../domain/geospatial/ComposedGeospatial.java | 7 +-
.../domain/geospatial/GeospatialCollection.java | 33 +-
.../api/domain/geospatial/LineString.java | 20 +-
.../api/domain/geospatial/MultiLineString.java | 4 +-
.../api/domain/geospatial/MultiPoint.java | 4 +-
.../api/domain/geospatial/MultiPolygon.java | 4 +-
.../client/api/domain/geospatial/Point.java | 4 +-
.../client/api/domain/geospatial/Polygon.java | 9 +-
.../olingo/client/api/op/ODataBinder.java | 18 +-
.../olingo/client/api/op/ODataDeserializer.java | 16 +-
.../olingo/client/api/op/ODataSerializer.java | 33 +-
.../olingo/client/api/utils/GeoUtils.java | 90 +++
.../olingo/client/api/utils/XMLUtils.java | 178 -----
lib/client-core/pom.xml | 4 +
.../client/core/data/AbstractAtomDealer.java | 80 +++
.../client/core/data/AbstractAtomObject.java | 78 +++
.../olingo/client/core/data/AbstractEntry.java | 48 +-
.../core/data/AbstractJsonDeserializer.java | 171 +++++
.../core/data/AbstractJsonSerializer.java | 94 +++
.../client/core/data/AbstractPropertyImpl.java | 80 +++
.../olingo/client/core/data/AbstractValue.java | 98 +++
.../client/core/data/AtomDeserializer.java | 391 +++++++----
.../olingo/client/core/data/AtomEntryImpl.java | 96 +--
.../olingo/client/core/data/AtomFeedImpl.java | 58 +-
.../core/data/AtomGeoValueDeserializer.java | 252 +++++++
.../core/data/AtomGeoValueSerializer.java | 222 ++++++
.../olingo/client/core/data/AtomObject.java | 41 --
.../core/data/AtomPropertyDeserializer.java | 218 ++++++
.../client/core/data/AtomPropertyImpl.java | 25 +
.../core/data/AtomPropertySerializer.java | 88 +++
.../olingo/client/core/data/AtomSerializer.java | 281 +++++---
.../client/core/data/CollectionValueImpl.java | 40 ++
.../client/core/data/ComplexValueImpl.java | 40 ++
.../olingo/client/core/data/GeoUtils.java | 90 +++
.../client/core/data/GeospatialJSONHandler.java | 412 -----------
.../client/core/data/GeospatialValueImpl.java | 42 ++
.../client/core/data/JSONDOMTreeUtils.java | 260 -------
.../client/core/data/JSONEntryDeserializer.java | 99 +--
.../olingo/client/core/data/JSONEntryImpl.java | 5 +
.../client/core/data/JSONEntrySerializer.java | 79 +--
.../client/core/data/JSONFeedDeserializer.java | 10 +-
.../olingo/client/core/data/JSONFeedImpl.java | 14 +
.../client/core/data/JSONFeedSerializer.java | 57 ++
.../core/data/JSONGeoValueDeserializer.java | 256 +++++++
.../core/data/JSONGeoValueSerializer.java | 175 +++++
.../core/data/JSONPropertyDeserializer.java | 90 +--
.../client/core/data/JSONPropertyImpl.java | 23 +-
.../core/data/JSONPropertySerializer.java | 51 +-
.../olingo/client/core/data/LinkImpl.java | 12 +
.../olingo/client/core/data/NullValueImpl.java | 35 +
.../client/core/data/PrimitiveValueImpl.java | 41 ++
.../olingo/client/core/edm/EdmTypeInfo.java | 2 +-
.../client/core/edm/xml/EdmxDeserializer.java | 3 +-
.../core/edm/xml/v4/AnnotationDeserializer.java | 2 +-
.../core/op/impl/AbstractODataBinder.java | 428 ++++-------
.../core/op/impl/AbstractODataDeserializer.java | 126 +---
.../core/op/impl/AbstractODataReader.java | 34 +-
.../core/op/impl/AbstractODataSerializer.java | 72 +-
.../core/op/impl/ODataObjectFactoryImpl.java | 24 +-
.../client/core/op/impl/ODataV3BinderImpl.java | 5 -
.../core/op/impl/ODataV3DeserializerImpl.java | 11 +-
.../client/core/op/impl/ODataV4BinderImpl.java | 4 -
.../core/op/impl/ODataV4DeserializerImpl.java | 12 +-
.../client/core/op/impl/ODataWriterImpl.java | 3 +-
.../client/core/op/impl/ResourceFactory.java | 15 +
.../client/core/xml/AbstractDOMParser.java | 46 --
.../client/core/xml/AndroidDOMParserImpl.java | 53 --
.../client/core/xml/DefaultDOMParserImpl.java | 78 ---
.../olingo/client/core/xml/XMLParser.java | 37 -
.../client/core/AbstractPrimitiveTest.java | 2 +-
.../apache/olingo/client/core/AbstractTest.java | 10 +
.../olingo/client/core/AtomLinksQualifier.java | 40 ++
.../client/core/it/v3/OpenTypeTestITCase.java | 17 +-
.../apache/olingo/client/core/v3/AtomTest.java | 132 ++++
.../apache/olingo/client/core/v3/EntryTest.java | 103 ---
.../apache/olingo/client/core/v3/JSONTest.java | 106 +++
.../client/core/v3/PrimitiveValueTest.java | 94 +--
.../apache/olingo/client/core/atom_cleanup.xsl | 48 ++
.../core/v3/AllGeoTypesSet_-10_GeogLine.json | 1 +
.../core/v3/AllGeoTypesSet_-10_GeogLine.xml | 22 +
.../core/v3/AllGeoTypesSet_-10_GeogPoint.json | 1 +
.../core/v3/AllGeoTypesSet_-10_GeogPoint.xml | 22 +
.../v3/AllGeoTypesSet_-3_GeomMultiPolygon.json | 1 +
.../v3/AllGeoTypesSet_-3_GeomMultiPolygon.xml | 22 +
.../olingo/client/core/v3/AllGeoTypesSet_-5.xml | 156 ++++-
.../v3/AllGeoTypesSet_-5_GeogCollection.json | 1 +
.../v3/AllGeoTypesSet_-5_GeogCollection.xml | 22 +
.../core/v3/AllGeoTypesSet_-5_GeogPolygon.json | 1 +
.../core/v3/AllGeoTypesSet_-5_GeogPolygon.xml | 22 +
.../v3/AllGeoTypesSet_-6_GeomMultiLine.json | 1 +
.../core/v3/AllGeoTypesSet_-6_GeomMultiLine.xml | 22 +
.../v3/AllGeoTypesSet_-7_GeomMultiPoint.json | 1 +
.../v3/AllGeoTypesSet_-7_GeomMultiPoint.xml | 22 +
.../olingo/client/core/v3/AllGeoTypesSet_-8.xml | 154 +++-
.../v3/AllGeoTypesSet_-8_GeomCollection.json | 1 +
.../v3/AllGeoTypesSet_-8_GeomCollection.xml | 22 +
.../apache/olingo/client/core/v3/Customer.json | 4 +-
.../apache/olingo/client/core/v3/Customer.xml | 2 +-
.../core/v3/Customer_-10_BackupContactInfo.json | 1 +
.../core/v3/Customer_-10_BackupContactInfo.xml | 22 +
.../client/core/v3/Customer_-10_CustomerId.json | 1 +
.../client/core/v3/Customer_-10_CustomerId.xml | 22 +
.../core/v3/Customer_-10_CustomerId_value.txt | 1 +
.../v3/Customer_-10_PrimaryContactInfo.json | 1 +
.../core/v3/Customer_-10_PrimaryContactInfo.xml | 22 +
...a4af-4bbd-bf0a-2b2c22635565'_Attachment.json | 1 +
...-a4af-4bbd-bf0a-2b2c22635565'_Attachment.xml | 22 +
...af-4bbd-bf0a-2b2c22635565'_AttachmentId.json | 1 +
...4af-4bbd-bf0a-2b2c22635565'_AttachmentId.xml | 22 +
.../client/core/v3/PersonDetails_0_Person.json | 1 +
.../client/core/v3/PersonDetails_0_Person.xml | 75 ++
..._-10_ComplexConcurrency_QueriedDateTime.json | 1 +
...t_-10_ComplexConcurrency_QueriedDateTime.xml | 22 +
.../core/v3/Product_-10_Dimensions_Width.json | 1 +
.../core/v3/Product_-10_Dimensions_Width.xml | 22 +
.../client/core/v3/Product_-9_Description.json | 1 +
.../client/core/v3/Product_-9_Description.xml | 22 +
.../client/core/v3/Products_0_Categories.json | 1 +
.../client/core/v3/Products_0_Categories.xml | 79 +++
.../olingo/client/core/v3/Products_1.json | 1 +
.../apache/olingo/client/core/v3/Products_1.xml | 51 ++
.../core/v3/Products_1_DiscontinuedDate.json | 1 +
.../core/v3/Products_1_DiscontinuedDate.xml | 24 +
.../apache/olingo/client/core/v3/metadata.xml | 701 +------------------
.../api/edm/constants/ODataServiceVersion.java | 1 +
pom.xml | 8 +-
145 files changed, 5051 insertions(+), 3732 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/AllGeoTypesSet_-8.xml
----------------------------------------------------------------------
diff --git a/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/AllGeoTypesSet_-8.xml b/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/AllGeoTypesSet_-8.xml
index 13e2aea..81213bf 100644
--- a/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/AllGeoTypesSet_-8.xml
+++ b/ODataJClient/engine/src/test/resources/com/msopentech/odatajclient/engine/AllGeoTypesSet_-8.xml
@@ -19,4 +19,158 @@
under the License.
-->
-<entry xml:base="http://192.168.43.55:8080/DefaultService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"><id>http://192.168.43.55:8080/DefaultService.svc/AllGeoTypesSet(-8)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="AllSpatialTypes" href="AllGeoTypesSet(-8)" /><title /><updated>2013-08-21T10:50:04Z</updated><author><name /></author><content type="application/xml"><m:properties><d:Id m:type="Edm.Int32">-8</d:Id><d:Geog m:type="Edm.GeographyPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>51.5961 178.94</gml:pos></gml:Point></d:Geog><d:GeogPoint m:type="Edm.GeographyPoint"><gml:Point gml:srsName="htt
p://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>51.65 178.7</gml:pos></gml:Point></d:GeogPoint><d:GeogLine m:type="Edm.GeographyLineString"><gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>10 10</gml:pos><gml:pos>20 20</gml:pos><gml:pos>40 10</gml:pos></gml:LineString></d:GeogLine><d:GeogPolygon m:type="Edm.GeographyPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" /></d:GeogPolygon><d:GeogCollection m:type="Edm.GeographyCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" /></d:GeogCollection><d:GeogMultiPoint m:type="Edm.GeographyMultiPoint"><gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pointMembers><gml:Point><gml:pos>47.38 -122.7</gml:pos></gml:Point></gml:pointMembers></gml:MultiPoint></d:GeogMultiPoint><d:GeogMultiLine m:type="Edm.GeographyMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:curveMembers><g
ml:LineString><gml:pos>10.5 10.5</gml:pos><gml:pos>20.5 20.5</gml:pos><gml:pos>40.5 10.5</gml:pos></gml:LineString><gml:LineString><gml:pos>40.5 40.5</gml:pos><gml:pos>30.5 30.5</gml:pos><gml:pos>20.5 40.5</gml:pos><gml:pos>10.5 30.5</gml:pos></gml:LineString></gml:curveMembers></gml:MultiCurve></d:GeogMultiLine><d:GeogMultiPolygon m:type="Edm.GeographyMultiPolygon"><gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:surfaceMembers><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>40 40</gml:pos><gml:pos>45 20</gml:pos><gml:pos>30 45</gml:pos><gml:pos>40 40</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>35 20</gml:pos><gml:pos>20 45</gml:pos><gml:pos>5 30</gml:pos><gml:pos>10 10</gml:pos><gml:pos>30 10</gml:pos><gml:pos>35 20</gml:pos></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:pos>20 30</gml:pos><gml:pos>25 20</gml:pos><gml:pos>15 20</gml:pos><gml:pos>20 30</gml:pos></gm
l:LinearRing></gml:interior></gml:Polygon></gml:surfaceMembers></gml:MultiSurface></d:GeogMultiPolygon><d:Geom m:type="Edm.GeometryPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>4369367.0586663447 6352015.6916818349</gml:pos></gml:Point></d:Geom><d:GeomPoint m:type="Edm.GeometryPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>4377000.868172125 6348217.1067010015</gml:pos></gml:Point></d:GeomPoint><d:GeomLine m:type="Edm.GeometryLineString"><gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>1 1</gml:pos><gml:pos>3 3</gml:pos><gml:pos>2 4</gml:pos><gml:pos>2 0</gml:pos></gml:LineString></d:GeomLine><d:GeomPolygon m:type="Edm.GeometryPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:exterior><gml:LinearRing><gml:pos>30 20</gml:pos><gml:pos>10 40</gml:pos><gml:pos>45 40</gml:pos><gml:pos>30 20</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon></d:GeomPolygon>
<d:GeomCollection m:type="Edm.GeometryCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:geometryMembers><gml:Point><gml:pos>4 6</gml:pos></gml:Point><gml:LineString><gml:pos>4 6</gml:pos><gml:pos>7 10</gml:pos></gml:LineString></gml:geometryMembers></gml:MultiGeometry></d:GeomCollection><d:GeomMultiPoint m:null="true" /><d:GeomMultiLine m:type="Edm.GeometryMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:GeomMultiLine><d:GeomMultiPolygon m:type="Edm.GeometryMultiPolygon"><gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:GeomMultiPolygon></m:properties></content></entry>
+<entry xml:base="http://192.168.43.55:8080/DefaultService.svc/"
+ xmlns="http://www.w3.org/2005/Atom"
+ xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ xmlns:georss="http://www.georss.org/georss"
+ xmlns:gml="http://www.opengis.net/gml">
+ <id>http://192.168.43.55:8080/DefaultService.svc/AllGeoTypesSet(-8)</id>
+ <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="AllSpatialTypes" href="AllGeoTypesSet(-8)" />
+ <title />
+ <updated>2013-08-21T10:50:04Z</updated>
+ <author>
+ <name />
+ </author>
+ <content type="application/xml">
+ <m:properties>
+ <d:Id m:type="Edm.Int32">-8</d:Id>
+ <d:Geog m:type="Edm.GeographyPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>51.5961 178.94</gml:pos>
+ </gml:Point>
+ </d:Geog>
+ <d:GeogPoint m:type="Edm.GeographyPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>51.65 178.7</gml:pos>
+ </gml:Point>
+ </d:GeogPoint>
+ <d:GeogLine m:type="Edm.GeographyLineString">
+ <gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>10 10</gml:pos>
+ <gml:pos>20 20</gml:pos>
+ <gml:pos>40 10</gml:pos>
+ </gml:LineString>
+ </d:GeogLine>
+ <d:GeogPolygon m:type="Edm.GeographyPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" />
+ </d:GeogPolygon>
+ <d:GeogCollection m:type="Edm.GeographyCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" />
+ </d:GeogCollection>
+ <d:GeogMultiPoint m:type="Edm.GeographyMultiPoint">
+ <gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pointMembers>
+ <gml:Point>
+ <gml:pos>47.38 -122.7</gml:pos>
+ </gml:Point>
+ </gml:pointMembers>
+ </gml:MultiPoint>
+ </d:GeogMultiPoint>
+ <d:GeogMultiLine m:type="Edm.GeographyMultiLineString">
+ <gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:curveMembers>
+ <gml:LineString>
+ <gml:pos>10.5 10.5</gml:pos>
+ <gml:pos>20.5 20.5</gml:pos>
+ <gml:pos>40.5 10.5</gml:pos>
+ </gml:LineString>
+ <gml:LineString>
+ <gml:pos>40.5 40.5</gml:pos>
+ <gml:pos>30.5 30.5</gml:pos>
+ <gml:pos>20.5 40.5</gml:pos>
+ <gml:pos>10.5 30.5</gml:pos>
+ </gml:LineString>
+ </gml:curveMembers>
+ </gml:MultiCurve>
+ </d:GeogMultiLine>
+ <d:GeogMultiPolygon m:type="Edm.GeographyMultiPolygon">
+ <gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:surfaceMembers>
+ <gml:Polygon>
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>40 40</gml:pos>
+ <gml:pos>45 20</gml:pos>
+ <gml:pos>30 45</gml:pos>
+ <gml:pos>40 40</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ </gml:Polygon>
+ <gml:Polygon>
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>35 20</gml:pos>
+ <gml:pos>20 45</gml:pos>
+ <gml:pos>5 30</gml:pos>
+ <gml:pos>10 10</gml:pos>
+ <gml:pos>30 10</gml:pos>
+ <gml:pos>35 20</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ <gml:interior>
+ <gml:LinearRing>
+ <gml:pos>20 30</gml:pos>
+ <gml:pos>25 20</gml:pos>
+ <gml:pos>15 20</gml:pos>
+ <gml:pos>20 30</gml:pos>
+ </gml:LinearRing>
+ </gml:interior>
+ </gml:Polygon>
+ </gml:surfaceMembers>
+ </gml:MultiSurface>
+ </d:GeogMultiPolygon>
+ <d:Geom m:type="Edm.GeometryPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>4369367.0586663447 6352015.6916818349</gml:pos>
+ </gml:Point>
+ </d:Geom>
+ <d:GeomPoint m:type="Edm.GeometryPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>4377000.868172125 6348217.1067010015</gml:pos>
+ </gml:Point>
+ </d:GeomPoint>
+ <d:GeomLine m:type="Edm.GeometryLineString">
+ <gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>1 1</gml:pos>
+ <gml:pos>3 3</gml:pos>
+ <gml:pos>2 4</gml:pos>
+ <gml:pos>2 0</gml:pos>
+ </gml:LineString>
+ </d:GeomLine>
+ <d:GeomPolygon m:type="Edm.GeometryPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>30 20</gml:pos>
+ <gml:pos>10 40</gml:pos>
+ <gml:pos>45 40</gml:pos>
+ <gml:pos>30 20</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ </gml:Polygon>
+ </d:GeomPolygon>
+ <d:GeomCollection m:type="Edm.GeometryCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:geometryMembers>
+ <gml:Point>
+ <gml:pos>4 6</gml:pos>
+ </gml:Point>
+ <gml:LineString>
+ <gml:pos>4 6</gml:pos>
+ <gml:pos>7 10</gml:pos>
+ </gml:LineString>
+ </gml:geometryMembers>
+ </gml:MultiGeometry>
+ </d:GeomCollection>
+ <d:GeomMultiPoint m:null="true" />
+ <d:GeomMultiLine m:type="Edm.GeometryMultiLineString">
+ <gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:GeomMultiLine>
+ <d:GeomMultiPolygon m:type="Edm.GeometryMultiPolygon">
+ <gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:GeomMultiPolygon>
+ </m:properties>
+ </content>
+</entry>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
index f7d75e5..97f833f 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
@@ -31,8 +31,6 @@ public class Constants {
public final static String NAME = "name";
- public final static String PROPERTIES = "properties";
-
// XML namespaces and prefixes
public final static String NS_ATOM = "http://www.w3.org/2005/Atom";
@@ -71,7 +69,7 @@ public class Constants {
public static final String NEXT_LINK_REL = "next";
// XML elements and attributes
- public static final String ELEM_PROPERTIES = PREFIX_METADATA + PROPERTIES;
+ public static final String PROPERTIES = "properties";
public static final String ELEM_ELEMENT = "element";
@@ -83,15 +81,17 @@ public class Constants {
public static final String ATTR_M_NULL = PREFIX_METADATA + ":" + ATTR_NULL;
- public static final String ATTR_XMLBASE = "xml:base";
+ public static final String ATTR_XML_BASE = "base";
+
+ public static final QName QNAME_ATTR_XML_BASE = new QName(XMLConstants.XML_NS_URI, ATTR_XML_BASE);
public static final String ATTR_REL = "rel";
- public static final String ATTR_HREF = "href";
+ public static final String ATTR_TITLE = "title";
public static final String ATTR_METADATA = "metadata";
- public static final String ATTR_TITLE = "title";
+ public static final String ATTR_HREF = "href";
public static final String ATTR_TARGET = "target";
@@ -99,17 +99,19 @@ public class Constants {
public static final String ATTR_SRSNAME = "srsName";
+ public static final QName QNAME_ATTR_SRSNAME = new QName(NS_GML, ATTR_SRSNAME);
+
public static final String ELEM_POINT = "Point";
public static final String ELEM_MULTIPOINT = "MultiPoint";
public static final String ELEM_POINTMEMBERS = "pointMembers";
- public static final QName QNAME_POINTMEMBERS = new QName(Constants.NS_GML, ELEM_POINTMEMBERS);
+ public static final QName QNAME_POINTMEMBERS = new QName(NS_GML, ELEM_POINTMEMBERS);
public static final String ELEM_LINESTRING = "LineString";
- public static final QName QNAME_LINESTRING = new QName(Constants.NS_GML, ELEM_LINESTRING);
+ public static final QName QNAME_LINESTRING = new QName(NS_GML, ELEM_LINESTRING);
public static final String ELEM_MULTILINESTRING = "MultiCurve";
@@ -117,15 +119,15 @@ public class Constants {
public static final String ELEM_POLYGON = "Polygon";
- public static final QName QNAME_POLYGON = new QName(Constants.NS_GML, ELEM_POLYGON);
+ public static final QName QNAME_POLYGON = new QName(NS_GML, ELEM_POLYGON);
public static final String ELEM_POLYGON_EXTERIOR = "exterior";
- public static final QName QNAME_POLYGON_EXTERIOR = new QName(Constants.NS_GML, ELEM_POLYGON_EXTERIOR);
+ public static final QName QNAME_POLYGON_EXTERIOR = new QName(NS_GML, ELEM_POLYGON_EXTERIOR);
public static final String ELEM_POLYGON_INTERIOR = "interior";
- public static final QName QNAME_POLYGON_INTERIOR = new QName(Constants.NS_GML, ELEM_POLYGON_INTERIOR);
+ public static final QName QNAME_POLYGON_INTERIOR = new QName(NS_GML, ELEM_POLYGON_INTERIOR);
public static final String ELEM_POLYGON_LINEARRING = "LinearRing";
@@ -137,7 +139,7 @@ public class Constants {
public static final String ELEM_GEOMEMBERS = "geometryMembers";
- public static final QName QNAME_GEOMEMBERS = new QName(Constants.NS_GML, ELEM_GEOMEMBERS);
+ public static final QName QNAME_GEOMEMBERS = new QName(NS_GML, ELEM_GEOMEMBERS);
public static final String ELEM_POS = "pos";
@@ -154,10 +156,14 @@ public class Constants {
public final static String JSON_TYPE = "odata.type";
+ public final static String JSON_TYPE_SUFFIX = "@" + JSON_TYPE;
+
public final static String JSON_ETAG = "odata.etag";
public final static String JSON_MEDIA_ETAG = "odata.mediaETag";
+ public final static String JSON_MEDIA_ETAG_SUFFIX = "@" + JSON_MEDIA_ETAG;
+
public final static String JSON_ID = "odata.id";
public final static String JSON_READ_LINK = "odata.readLink";
@@ -168,16 +174,18 @@ public class Constants {
public final static String JSON_MEDIAEDIT_LINK = "odata.mediaEditLink";
+ public final static String JSON_MEDIAEDIT_LINK_SUFFIX = "@" + JSON_MEDIAEDIT_LINK;
+
public final static String JSON_MEDIA_CONTENT_TYPE = "odata.mediaContentType";
+ public final static String JSON_MEDIA_CONTENT_TYPE_SUFFIX = "@" + JSON_MEDIA_CONTENT_TYPE;
+
public final static String JSON_NAVIGATION_LINK_SUFFIX = "@odata.navigationLinkUrl";
public final static String JSON_BIND_LINK_SUFFIX = "@odata.bind";
public final static String JSON_ASSOCIATION_LINK_SUFFIX = "@odata.associationLinkUrl";
- public final static String JSON_MEDIAEDIT_LINK_SUFFIX = "@odata.mediaEditLink";
-
public final static String JSON_NULL = "odata.null";
public final static String JSON_VALUE = "value";
@@ -190,38 +198,52 @@ public class Constants {
public final static String JSON_CRS = "crs";
+ public final static String JSON_COUNT = "odata.count";
+
+ public final static String JSON_NEXT_LINK = "odata.nextLink";
+
// Atom stuff
public final static String ATOM_ELEM_ENTRY = "entry";
+ public static final QName QNAME_ATOM_ELEM_ENTRY = new QName(NS_ATOM, ATOM_ELEM_ENTRY);
+
public final static String ATOM_ELEM_FEED = "feed";
+ public static final QName QNAME_ATOM_ELEM_FEED = new QName(NS_ATOM, ATOM_ELEM_FEED);
+
public final static String ATOM_ELEM_CATEGORY = "category";
- public final static String ATOM_ELEM_ID = "id";
+ public static final QName QNAME_ATOM_ELEM_CATEGORY = new QName(NS_ATOM, ATOM_ELEM_CATEGORY);
- public final static String ATOM_ELEM_LINK = "link";
+ public static final String ATOM_ELEM_COUNT = "count";
- public final static String ATOM_ELEM_CONTENT = "content";
+ public final static String ATOM_ELEM_ID = "id";
+
+ public static final QName QNAME_ATOM_ELEM_ID = new QName(NS_ATOM, ATOM_ELEM_ID);
public static final String ATOM_ELEM_TITLE = "title";
+ public static final QName QNAME_ATOM_ELEM_TITLE = new QName(NS_ATOM, ATOM_ELEM_TITLE);
+
public static final String ATOM_ELEM_SUMMARY = "summary";
+ public static final QName QNAME_ATOM_ELEM_SUMMARY = new QName(NS_ATOM, ATOM_ELEM_SUMMARY);
+
public static final String ATOM_ELEM_UPDATED = "updated";
- public static final String ATOM_ELEM_AUTHOR = "author";
+ public static final QName QNAME_ATOM_ELEM_UPDATED = new QName(NS_ATOM, ATOM_ELEM_UPDATED);
- public static final String ATOM_ELEM_AUTHOR_NAME = "name";
+ public final static String ATOM_ELEM_LINK = "link";
- public static final String ATOM_ELEM_AUTHOR_URI = "uri";
+ public static final QName QNAME_ATOM_ELEM_LINK = new QName(NS_ATOM, ATOM_ELEM_LINK);
- public static final String ATOM_ELEM_AUTHOR_EMAIL = "email";
+ public final static String ATOM_ELEM_CONTENT = "content";
- public static final String ATOM_ELEM_ACTION = PREFIX_METADATA + "action";
+ public static final QName QNAME_ATOM_ELEM_CONTENT = new QName(NS_ATOM, ATOM_ELEM_CONTENT);
- public static final String ATOM_ELEM_INLINE = PREFIX_METADATA + "inline";
+ public static final String ATOM_ELEM_ACTION = "action";
- public static final String ATOM_ATTR_TITLE = "atom:title";
+ public static final String ATOM_ELEM_INLINE = "inline";
public static final String ATOM_ATTR_TERM = "term";
@@ -229,8 +251,6 @@ public class Constants {
public static final String ATOM_ATTR_SRC = "src";
- public static final String ATOM_ATTR_ETAG = PREFIX_METADATA + "etag";
-
- public static final String ATOM_ATTR_COUNT = PREFIX_METADATA + "count";
+ public static final String ATOM_ATTR_ETAG = "etag";
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/CollectionValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/CollectionValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/CollectionValue.java
new file mode 100644
index 0000000..072890d
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/CollectionValue.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+import java.util.List;
+
+public interface CollectionValue extends Value {
+
+ @Override
+ List<Value> get();
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ComplexValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ComplexValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ComplexValue.java
new file mode 100644
index 0000000..80e9c8f
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/ComplexValue.java
@@ -0,0 +1,27 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+import java.util.List;
+
+public interface ComplexValue extends Value {
+
+ @Override
+ List<Property> get();
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Entry.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Entry.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Entry.java
index e56822e..78a7b93 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Entry.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Entry.java
@@ -21,7 +21,6 @@ package org.apache.olingo.client.api.data;
import org.apache.olingo.client.api.domain.ODataOperation;
import java.net.URI;
import java.util.List;
-import org.w3c.dom.Element;
public interface Entry {
@@ -33,13 +32,6 @@ public interface Entry {
String getETag();
/**
- * Sets ETag.
- *
- * @param eTag ETag.
- */
- void setETag(String eTag);
-
- /**
* Gets base URI.
*
* @return base URI.
@@ -68,13 +60,6 @@ public interface Entry {
String getId();
/**
- * Sets entry ID.
- *
- * @param id entry ID.
- */
- void setId(String id);
-
- /**
* Gets entry self link.
*
* @return self link.
@@ -131,32 +116,19 @@ public interface Entry {
List<ODataOperation> getOperations();
/**
- * Gets content.
- *
- * @return content.
- */
- Element getContent();
-
- /**
- * Sets content.
- *
- * @param content content.
- */
- void setContent(Element content);
-
- /**
- * Gets media entry properties.
+ * Gets properties.
*
- * @return media entry properties.
+ * @return properties.
*/
- Element getMediaEntryProperties();
+ List<Property> getProperties();
/**
- * Sets media entry properties.
+ * Gets property with given name.
*
- * @param content media entry properties.
+ * @param name property name
+ * @return property with given name if found, null otherwise
*/
- void setMediaEntryProperties(Element content);
+ Property getProperty(String name);
/**
* Gets media content type.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Feed.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Feed.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Feed.java
index 9881b0e..6c4e2f9 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Feed.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Feed.java
@@ -31,13 +31,27 @@ public interface Feed {
URI getBaseURI();
/**
- * Gets number of entries if an <tt>inlinecount</tt> was required.
+ * Sets number of entries.
+ *
+ * @param count number of entries
+ */
+ void setCount(Integer count);
+
+ /**
+ * Gets number of entries - if it was required.
*
* @return number of entries into the feed.
*/
Integer getCount();
/**
+ * Gest feed ID.
+ *
+ * @return feed ID.
+ */
+ String getId();
+
+ /**
* Gets entries.
*
* @return entries.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/GeospatialValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/GeospatialValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/GeospatialValue.java
new file mode 100644
index 0000000..b0deea4
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/GeospatialValue.java
@@ -0,0 +1,28 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+
+public interface GeospatialValue extends Value {
+
+ @Override
+ Geospatial get();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Link.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Link.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Link.java
index 71c72ba..b707c8b 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Link.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Link.java
@@ -77,6 +77,20 @@ public interface Link {
void setHref(String href);
/**
+ * Gets Media ETag.
+ *
+ * @return media ETag
+ */
+ String getMediaETag();
+
+ /**
+ * Sets Media ETag.
+ *
+ * @param etag media ETag
+ */
+ void setMediaETag(String etag);
+
+ /**
* Gets in-line entry.
*
* @return in-line entry.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/NullValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/NullValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/NullValue.java
new file mode 100644
index 0000000..5df0509
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/NullValue.java
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+public interface NullValue extends Value {
+
+ @Override
+ Void get();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/PrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/PrimitiveValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/PrimitiveValue.java
new file mode 100644
index 0000000..6d0636b
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/PrimitiveValue.java
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+public interface PrimitiveValue extends Value {
+
+ @Override
+ String get();
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Property.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Property.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Property.java
new file mode 100644
index 0000000..d4112d9
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Property.java
@@ -0,0 +1,34 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+public interface Property {
+
+ String getName();
+
+ void setName(String name);
+
+ String getType();
+
+ void setType(String type);
+
+ Value getValue();
+
+ void setValue(Value value);
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Value.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Value.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Value.java
new file mode 100644
index 0000000..275fd9d
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/data/Value.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.data;
+
+public interface Value {
+
+ boolean isNull();
+
+ boolean isSimple();
+
+ boolean isGeospatial();
+
+ boolean isComplex();
+
+ boolean isCollection();
+
+ Object get();
+
+ NullValue asNull();
+
+ PrimitiveValue asSimple();
+
+ GeospatialValue asGeospatial();
+
+ ComplexValue asComplex();
+
+ CollectionValue asCollection();
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataGeospatialValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataGeospatialValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataGeospatialValue.java
index 2207542..47db41c 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataGeospatialValue.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataGeospatialValue.java
@@ -18,30 +18,8 @@
*/
package org.apache.olingo.client.api.domain;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.olingo.client.api.Constants;
import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.domain.geospatial.Geospatial;
-import org.apache.olingo.client.api.domain.geospatial.GeospatialCollection;
-import org.apache.olingo.client.api.domain.geospatial.LineString;
-import org.apache.olingo.client.api.domain.geospatial.MultiLineString;
-import org.apache.olingo.client.api.domain.geospatial.MultiPoint;
-import org.apache.olingo.client.api.domain.geospatial.MultiPolygon;
-import org.apache.olingo.client.api.domain.geospatial.Point;
-import org.apache.olingo.client.api.domain.geospatial.Polygon;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
public class ODataGeospatialValue extends ODataPrimitiveValue {
@@ -63,17 +41,6 @@ public class ODataGeospatialValue extends ODataPrimitiveValue {
}
/**
- * Sets the given value provided as a DOM tree.
- *
- * @param tree value.
- * @return the current builder.
- */
- public Builder setTree(final Element tree) {
- this.ogv.tree = tree;
- return this;
- }
-
- /**
* Sets the actual object value.
*
* @param value value.
@@ -93,14 +60,14 @@ public class ODataGeospatialValue extends ODataPrimitiveValue {
public Builder setType(final ODataJClientEdmPrimitiveType type) {
isSupported(type);
- if (!type.isGeospatial()) {
+ if (type != null && !type.isGeospatial()) {
throw new IllegalArgumentException(
"Use " + ODataPrimitiveValue.class.getSimpleName() + " for non-geospatial types");
}
if (type == ODataJClientEdmPrimitiveType.Geography || type == ODataJClientEdmPrimitiveType.Geometry) {
throw new IllegalArgumentException(
- type + "is not an instantiable type. "
+ type + " is not an instantiable type. "
+ "An entity can declare a property to be of type Geometry. "
+ "An instance of an entity MUST NOT have a value of type Geometry. "
+ "Each value MUST be of some subtype.");
@@ -115,22 +82,11 @@ public class ODataGeospatialValue extends ODataPrimitiveValue {
* @return <tt>ODataGeospatialValue</tt> object.
*/
public ODataGeospatialValue build() {
- if (this.ogv.tree == null && this.ogv.value == null) {
- throw new IllegalArgumentException("Must provide either tree or value");
- }
- if (this.ogv.tree != null && this.ogv.value != null) {
- throw new IllegalArgumentException("Cannot provide both tree and value");
+ if (this.ogv.value == null) {
+ throw new IllegalArgumentException("No Geospatial value provided");
}
-
if (this.ogv.type == null) {
- throw new IllegalArgumentException("Must provide geospatial type");
- }
-
- if (this.ogv.tree != null) {
- this.ogv.value = this.ogv.parseTree(this.ogv.tree, this.ogv.type);
- }
- if (this.ogv.value != null) {
- this.ogv.tree = this.ogv.parseGeospatial((Geospatial) this.ogv.value);
+ this.ogv.type = ((Geospatial) this.ogv.value).getEdmSimpleType();
}
return this.ogv;
@@ -138,11 +94,6 @@ public class ODataGeospatialValue extends ODataPrimitiveValue {
}
/**
- * DOM tree.
- */
- private Element tree;
-
- /**
* Protected constructor, need to use the builder to instantiate this class.
*
* @see Builder
@@ -151,338 +102,7 @@ public class ODataGeospatialValue extends ODataPrimitiveValue {
super(client);
}
- private Geospatial.Dimension getDimension() {
- Geospatial.Dimension dimension;
-
- switch (this.type) {
- case Geography:
- case GeographyCollection:
- case GeographyLineString:
- case GeographyMultiLineString:
- case GeographyPoint:
- case GeographyMultiPoint:
- case GeographyPolygon:
- case GeographyMultiPolygon:
- dimension = Geospatial.Dimension.GEOGRAPHY;
- break;
-
- default:
- dimension = Geospatial.Dimension.GEOMETRY;
- }
-
- return dimension;
- }
-
- private List<Point> parsePoints(final NodeList posList) {
- final List<Point> result = new ArrayList<Point>();
- for (int i = 0; i < posList.getLength(); i++) {
- final String[] pointInfo = posList.item(i).getTextContent().split(" ");
- final Point point = new Point(getDimension());
- point.setX(Double.valueOf(pointInfo[0]));
- point.setY(Double.valueOf(pointInfo[1]));
-
- result.add(point);
- }
- return result;
- }
-
- private LineString parseLineString(final Element element) {
- return new LineString(getDimension(),
- parsePoints(element.getElementsByTagName(Constants.ELEM_POS)));
- }
-
- private Polygon parsePolygon(final Element element) {
- List<Point> extPoints = null;
- final Element exterior
- = (Element) element.getElementsByTagName(Constants.ELEM_POLYGON_EXTERIOR).item(0);
- if (exterior != null) {
- extPoints = parsePoints(
- ((Element) exterior.getElementsByTagName(Constants.ELEM_POLYGON_LINEARRING).item(0)).
- getElementsByTagName(Constants.ELEM_POS));
- }
- List<Point> intPoints = null;
- final Element interior
- = (Element) element.getElementsByTagName(Constants.ELEM_POLYGON_INTERIOR).item(0);
- if (interior != null) {
- intPoints = parsePoints(
- ((Element) interior.getElementsByTagName(Constants.ELEM_POLYGON_LINEARRING).item(0)).
- getElementsByTagName(Constants.ELEM_POS));
- }
-
- return new Polygon(getDimension(), intPoints, extPoints);
- }
-
- /**
- * Parses given tree as geospatial value.
- */
- private Geospatial parseTree(final Element tree, final ODataJClientEdmPrimitiveType type) {
- Geospatial value;
-
- switch (type) {
- case GeographyPoint:
- case GeometryPoint:
- value = parsePoints(tree.getElementsByTagName(Constants.ELEM_POS)).get(0);
- break;
-
- case GeographyMultiPoint:
- case GeometryMultiPoint:
- final Element pMembs
- = (Element) tree.getElementsByTagName(Constants.ELEM_POINTMEMBERS).item(0);
- final List<Point> points = pMembs == null
- ? Collections.<Point>emptyList()
- : parsePoints(pMembs.getElementsByTagName(Constants.ELEM_POS));
- value = new MultiPoint(getDimension(), points);
- break;
-
- case GeographyLineString:
- case GeometryLineString:
- value = parseLineString(tree);
- break;
-
- case GeographyMultiLineString:
- case GeometryMultiLineString:
- final Element mlMembs
- = (Element) tree.getElementsByTagName(Constants.ELEM_LINESTRINGMEMBERS).item(0);
- final List<LineString> lineStrings;
- if (mlMembs == null) {
- lineStrings = Collections.<LineString>emptyList();
- } else {
- lineStrings = new ArrayList<LineString>();
- final NodeList lineStringNodes = mlMembs.getElementsByTagName(Constants.ELEM_LINESTRING);
- for (int i = 0; i < lineStringNodes.getLength(); i++) {
- lineStrings.add(parseLineString((Element) lineStringNodes.item(i)));
- }
- }
- value = new MultiLineString(getDimension(), lineStrings);
- break;
-
- case GeographyPolygon:
- case GeometryPolygon:
- value = parsePolygon(tree);
- break;
-
- case GeographyMultiPolygon:
- case GeometryMultiPolygon:
- final Element mpMembs
- = (Element) tree.getElementsByTagName(Constants.ELEM_SURFACEMEMBERS).item(0);
- final List<Polygon> polygons;
- if (mpMembs == null) {
- polygons = Collections.<Polygon>emptyList();
- } else {
- polygons = new ArrayList<Polygon>();
- final NodeList polygonNodes = mpMembs.getElementsByTagName(Constants.ELEM_POLYGON);
- for (int i = 0; i < polygonNodes.getLength(); i++) {
- polygons.add(parsePolygon((Element) polygonNodes.item(i)));
- }
- }
- value = new MultiPolygon(getDimension(), polygons);
- break;
-
- case GeographyCollection:
- case GeometryCollection:
- final Element cMembs
- = (Element) tree.getElementsByTagName(Constants.ELEM_GEOMEMBERS).item(0);
- final List<Geospatial> geospatials;
- if (cMembs == null) {
- geospatials = Collections.<Geospatial>emptyList();
- } else {
- geospatials = new ArrayList<Geospatial>();
- for (Node geom : XMLUtils.getChildNodes(cMembs, Node.ELEMENT_NODE)) {
- geospatials.add(parseTree((Element) geom, XMLUtils.simpleTypeForNode(getDimension(), geom)));
- }
- }
- value = new GeospatialCollection(getDimension(), geospatials);
- break;
-
- default:
- value = null;
- }
-
- return value;
- }
-
- private void parsePoints(final Element parent, final Iterator<Point> itor, final boolean wrap) {
- while (itor.hasNext()) {
- final Point point = itor.next();
-
- final Element pos = parent.getOwnerDocument().
- createElementNS(Constants.NS_GML, Constants.ELEM_POS);
- pos.appendChild(parent.getOwnerDocument().createTextNode(
- Double.toString(point.getX()) + " " + point.getY()));
-
- final Element appendable;
- if (wrap) {
- final Element epoint = parent.getOwnerDocument().
- createElementNS(Constants.NS_GML, Constants.ELEM_POINT);
- parent.appendChild(epoint);
- appendable = epoint;
- } else {
- appendable = parent;
- }
- appendable.appendChild(pos);
- }
- }
-
- private void parseLineStrings(final Element parent, final Iterator<LineString> itor, final boolean wrap) {
- while (itor.hasNext()) {
- final LineString lineString = itor.next();
-
- final Element appendable;
- if (wrap) {
- final Element eLineString = parent.getOwnerDocument().
- createElementNS(Constants.NS_GML, Constants.ELEM_LINESTRING);
- parent.appendChild(eLineString);
- appendable = eLineString;
- } else {
- appendable = parent;
- }
- parsePoints(appendable, lineString.iterator(), false);
- }
- }
-
- private void parsePolygons(final Element parent, final Iterator<Polygon> itor, final boolean wrap) {
- while (itor.hasNext()) {
- final Polygon polygon = itor.next();
-
- final Element appendable;
- if (wrap) {
- final Element ePolygon = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON);
- parent.appendChild(ePolygon);
- appendable = ePolygon;
- } else {
- appendable = parent;
- }
-
- if (!polygon.getExterior().isEmpty()) {
- final Element exterior = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_EXTERIOR);
- appendable.appendChild(exterior);
- final Element linearRing = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_LINEARRING);
- exterior.appendChild(linearRing);
-
- parsePoints(linearRing, polygon.getExterior().iterator(), false);
- }
- if (!polygon.getInterior().isEmpty()) {
- final Element interior = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_INTERIOR);
- appendable.appendChild(interior);
- final Element linearRing = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_LINEARRING);
- interior.appendChild(linearRing);
-
- parsePoints(linearRing, polygon.getInterior().iterator(), false);
- }
- }
- }
-
- private Element parseGeospatial(final Geospatial value) {
- final DocumentBuilder builder;
- try {
- builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- throw new IllegalStateException("Failure initializing Geospatial DOM tree", e);
- }
- final Document doc = builder.newDocument();
-
- final Element tree;
-
- switch (value.getEdmSimpleType()) {
- case GeographyPoint:
- case GeometryPoint:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_POINT);
-
- parsePoints(tree, Collections.singleton((Point) value).iterator(), false);
- break;
-
- case GeometryMultiPoint:
- case GeographyMultiPoint:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_MULTIPOINT);
-
- final Element pMembs = doc.createElementNS(Constants.NS_GML, Constants.ELEM_POINTMEMBERS);
- tree.appendChild(pMembs);
-
- parsePoints(pMembs, ((MultiPoint) value).iterator(), true);
- break;
-
- case GeometryLineString:
- case GeographyLineString:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_LINESTRING);
-
- parseLineStrings(tree, Collections.singleton((LineString) value).iterator(), false);
- break;
-
- case GeometryMultiLineString:
- case GeographyMultiLineString:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_MULTILINESTRING);
-
- final Element mlMembs
- = doc.createElementNS(Constants.NS_GML, Constants.ELEM_LINESTRINGMEMBERS);
- tree.appendChild(mlMembs);
-
- parseLineStrings(mlMembs, ((MultiLineString) value).iterator(), true);
- break;
-
- case GeographyPolygon:
- case GeometryPolygon:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_POLYGON);
- parsePolygons(tree, Collections.singleton(((Polygon) value)).iterator(), false);
- break;
-
- case GeographyMultiPolygon:
- case GeometryMultiPolygon:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_MULTIPOLYGON);
-
- final Element mpMembs
- = doc.createElementNS(Constants.NS_GML, Constants.ELEM_SURFACEMEMBERS);
- tree.appendChild(mpMembs);
-
- parsePolygons(mpMembs, ((MultiPolygon) value).iterator(), true);
- break;
-
- case GeographyCollection:
- case GeometryCollection:
- tree = doc.createElementNS(Constants.NS_GML, Constants.ELEM_GEOCOLLECTION);
-
- final Element gMembs
- = doc.createElementNS(Constants.NS_GML, Constants.ELEM_GEOMEMBERS);
- tree.appendChild(gMembs);
-
- final Iterator<Geospatial> itor = ((GeospatialCollection) value).iterator();
- while (itor.hasNext()) {
- final Geospatial geospatial = itor.next();
- gMembs.appendChild(doc.importNode(parseGeospatial(geospatial), true));
- }
- break;
-
- default:
- tree = null;
- }
-
- return tree;
- }
-
- public Element toTree() {
- return this.tree;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final ODataGeospatialValue other = (ODataGeospatialValue) obj;
- return this.tree.isEqualNode(other.tree);
- }
-
- @Override
- public String toString() {
- final StringWriter writer = new StringWriter();
- client.getSerializer().dom(this.tree, writer);
- return writer.toString();
+ public Geospatial getGeospatial() {
+ return (Geospatial) this.value;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataJClientEdmType.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataJClientEdmType.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataJClientEdmType.java
index 3446c0b..7fcfad6 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataJClientEdmType.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataJClientEdmType.java
@@ -38,7 +38,7 @@ public class ODataJClientEdmType {
private boolean collection;
- private ODataJClientEdmPrimitiveType simpleType;
+ private ODataJClientEdmPrimitiveType primitiveType;
private EnumType enumType;
@@ -88,7 +88,7 @@ public class ODataJClientEdmType {
}
if (namespaceOrAlias.equals(ODataJClientEdmPrimitiveType.namespace())) {
- this.simpleType = ODataJClientEdmPrimitiveType.fromValue(
+ this.primitiveType = ODataJClientEdmPrimitiveType.fromValue(
ODataJClientEdmPrimitiveType.namespace() + "." + typeName);
} else if (metadata != null) {
if (!metadata.isNsOrAlias(namespaceOrAlias)) {
@@ -116,7 +116,7 @@ public class ODataJClientEdmType {
}
}
- if (!isSimpleType() && !isEnumType() && !isComplexType() && !isEntityType()) {
+ if (!isPrimitiveType() && !isEnumType() && !isComplexType() && !isEntityType()) {
throw new IllegalArgumentException("Could not parse type information out of " + typeExpression);
}
}
@@ -136,8 +136,12 @@ public class ODataJClientEdmType {
*
* @return 'TRUE' if is a simple type; 'FALSE' otherwise.
*/
- public final boolean isSimpleType() {
- return this.simpleType != null;
+ public final boolean isPrimitiveType() {
+ return this.primitiveType != null;
+ }
+
+ public boolean isGeospatialType() {
+ return isPrimitiveType() && this.primitiveType.isGeospatial();
}
/**
@@ -145,12 +149,12 @@ public class ODataJClientEdmType {
*
* @return simple type. An <tt>EdmTypeNotFoundException</tt> will be raised if it is not a simple type.
*/
- public final ODataJClientEdmPrimitiveType getSimpleType() {
- if (!isSimpleType()) {
+ public final ODataJClientEdmPrimitiveType getPrimitiveType() {
+ if (!isPrimitiveType()) {
throw new IllegalArgumentException("Cannot find Primitive in " + this.typeExpression);
}
- return this.simpleType;
+ return this.primitiveType;
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLink.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLink.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLink.java
index 73b230a..67746dc 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLink.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLink.java
@@ -29,6 +29,53 @@ public class ODataLink extends ODataItem {
private static final long serialVersionUID = 7274966414277952124L;
+ public static class Builder {
+
+ private ODataServiceVersion version;
+
+ private URI uri;
+
+ private ODataLinkType type;
+
+ private String title;
+
+ private String mediaETag;
+
+ public Builder setVersion(final ODataServiceVersion version) {
+ this.version = version;
+ return this;
+ }
+
+ public Builder setURI(final URI uri) {
+ this.uri = uri;
+ return this;
+ }
+
+ public Builder setURI(final URI baseURI, final String href) {
+ this.uri = URIUtils.getURI(baseURI, href);
+ return this;
+ }
+
+ public Builder setType(final ODataLinkType type) {
+ this.type = type;
+ return this;
+ }
+
+ public Builder setTitle(final String title) {
+ this.title = title;
+ return this;
+ }
+
+ public void setMediaETag(final String mediaETag) {
+ this.mediaETag = mediaETag;
+ }
+
+ public ODataLink build() {
+ ODataLink instance = new ODataLink(version, uri, type, title);
+ instance.mediaETag = this.mediaETag;
+ return instance;
+ }
+ }
/**
* Link type.
*/
@@ -40,6 +87,11 @@ public class ODataLink extends ODataItem {
protected final String rel;
/**
+ * ETag for media edit links.
+ */
+ private String mediaETag;
+
+ /**
* Constructor.
*
* @param version OData service version.
@@ -47,7 +99,7 @@ public class ODataLink extends ODataItem {
* @param type type.
* @param title title.
*/
- public ODataLink(final ODataServiceVersion version, final URI uri, final ODataLinkType type, final String title) {
+ protected ODataLink(final ODataServiceVersion version, final URI uri, final ODataLinkType type, final String title) {
super(title);
this.link = uri;
@@ -79,7 +131,7 @@ public class ODataLink extends ODataItem {
* @param type type.
* @param title title.
*/
- public ODataLink(final ODataServiceVersion version,
+ protected ODataLink(final ODataServiceVersion version,
final URI baseURI, final String href, final ODataLinkType type, final String title) {
this(version, URIUtils.getURI(baseURI, href), type, title);
@@ -102,4 +154,14 @@ public class ODataLink extends ODataItem {
public String getRel() {
return rel;
}
+
+ /**
+ * Gets Media ETag.
+ *
+ * @return media ETag
+ */
+ public String getMediaETag() {
+ return mediaETag;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
index dcae592..6702c00 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataLinkType.java
@@ -20,7 +20,6 @@ package org.apache.olingo.client.api.domain;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
-import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.format.ODataPubFormat;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
@@ -65,9 +64,9 @@ public enum ODataLinkType {
* @param type type.
* @return <code>ODataLinkType</code> object.
*/
- public static ODataLinkType fromString(final ODataClient client, final String rel, final String type) {
- if (StringUtils.isNotBlank(rel) && rel.startsWith(client.getServiceVersion().getNamespaceMap().
- get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) {
+ public static ODataLinkType fromString(final ODataServiceVersion version, final String rel, final String type) {
+ if (StringUtils.isNotBlank(rel)
+ && rel.startsWith(version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) {
return MEDIA_EDIT.setType(StringUtils.isBlank(type) ? "*/*" : type);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPrimitiveValue.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPrimitiveValue.java
index 8dfc078..9181695 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPrimitiveValue.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPrimitiveValue.java
@@ -31,10 +31,6 @@ import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.client.api.ODataClient;
-import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
-import org.apache.olingo.client.api.domain.ODataDuration;
-import org.apache.olingo.client.api.domain.ODataTimestamp;
-import org.apache.olingo.client.api.domain.ODataValue;
/**
* OData primitive property value.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataProperty.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataProperty.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataProperty.java
index ec3e0cb..04350cf 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataProperty.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataProperty.java
@@ -23,40 +23,12 @@ import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
-import org.apache.olingo.client.api.domain.ODataCollectionValue;
-import org.apache.olingo.client.api.domain.ODataComplexValue;
-import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
-import org.apache.olingo.client.api.domain.ODataValue;
/**
* OData entity property.
*/
public class ODataProperty implements Serializable, ODataInvokeResult {
- /**
- * Property type.
- */
- public enum PropertyType {
-
- /**
- * Primitive.
- */
- PRIMITIVE,
- /**
- * Collection
- */
- COLLECTION,
- /**
- * Complex.
- */
- COMPLEX,
- /**
- * Empty type (possibly, no type information could be retrieved).
- */
- EMPTY
-
- }
-
private static final long serialVersionUID = 926939448778950450L;
/**
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPropertyType.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPropertyType.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPropertyType.java
new file mode 100644
index 0000000..356596f
--- /dev/null
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/ODataPropertyType.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.api.domain;
+
+public enum ODataPropertyType {
+
+ /**
+ * Primitive (including geospatial and enum).
+ */
+ PRIMITIVE,
+ /**
+ * Collection
+ */
+ COLLECTION,
+ /**
+ * Complex.
+ */
+ COMPLEX,
+ /**
+ * Empty type (possibly, no type information could be retrieved).
+ */
+ EMPTY
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/ComposedGeospatial.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/ComposedGeospatial.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/ComposedGeospatial.java
index 40b50ec..2ef65e8 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/ComposedGeospatial.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/ComposedGeospatial.java
@@ -36,10 +36,13 @@ public abstract class ComposedGeospatial<T extends Geospatial> extends Geospatia
*
* @param dimension dimension.
* @param type type.
+ * @param crs crs.
* @param geospatials geospatials info.
*/
- protected ComposedGeospatial(final Dimension dimension, final Type type, final List<T> geospatials) {
- super(dimension, type);
+ protected ComposedGeospatial(final Dimension dimension, final Type type, final String crs,
+ final List<T> geospatials) {
+
+ super(dimension, type, crs);
this.geospatials = new ArrayList<T>();
if (geospatials != null) {
this.geospatials.addAll(geospatials);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/GeospatialCollection.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/GeospatialCollection.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/GeospatialCollection.java
index 1049c56..6409212 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/GeospatialCollection.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/GeospatialCollection.java
@@ -27,22 +27,23 @@ import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
*/
public class GeospatialCollection extends ComposedGeospatial<Geospatial> {
- private static final long serialVersionUID = -9181547636133878977L;
+ private static final long serialVersionUID = -9181547636133878977L;
- /**
- * Constructor.
- *
- * @param dimension dimension.
- * @param geospatials geospatials info.
- */
- public GeospatialCollection(final Dimension dimension, final List<Geospatial> geospatials) {
- super(dimension, Type.GEOSPATIALCOLLECTION, geospatials);
- }
+ /**
+ * Constructor.
+ *
+ * @param dimension dimension.
+ * @param crs crs.
+ * @param geospatials geospatials info.
+ */
+ public GeospatialCollection(final Dimension dimension, final String crs, final List<Geospatial> geospatials) {
+ super(dimension, Type.GEOSPATIALCOLLECTION, crs, geospatials);
+ }
- @Override
- public ODataJClientEdmPrimitiveType getEdmSimpleType() {
- return dimension == Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyCollection
- : ODataJClientEdmPrimitiveType.GeometryCollection;
- }
+ @Override
+ public ODataJClientEdmPrimitiveType getEdmSimpleType() {
+ return dimension == Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyCollection
+ : ODataJClientEdmPrimitiveType.GeometryCollection;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/LineString.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/LineString.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/LineString.java
index 2f0eb63..474b578 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/LineString.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/LineString.java
@@ -24,16 +24,16 @@ import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
public class LineString extends ComposedGeospatial<Point> {
- private static final long serialVersionUID = 3207958185407535907L;
+ private static final long serialVersionUID = 3207958185407535907L;
- public LineString(final Dimension dimension, final List<Point> points) {
- super(dimension, Type.LINESTRING, points);
- }
+ public LineString(final Dimension dimension, final String crs, final List<Point> points) {
+ super(dimension, Type.LINESTRING, crs, points);
+ }
- @Override
- public ODataJClientEdmPrimitiveType getEdmSimpleType() {
- return dimension == Dimension.GEOGRAPHY
- ? ODataJClientEdmPrimitiveType.GeographyLineString
- : ODataJClientEdmPrimitiveType.GeometryLineString;
- }
+ @Override
+ public ODataJClientEdmPrimitiveType getEdmSimpleType() {
+ return dimension == Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyLineString
+ : ODataJClientEdmPrimitiveType.GeometryLineString;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiLineString.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiLineString.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiLineString.java
index 75b7235..3eb0466 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiLineString.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiLineString.java
@@ -26,8 +26,8 @@ public class MultiLineString extends ComposedGeospatial<LineString> {
private static final long serialVersionUID = -5042414471218124125L;
- public MultiLineString(final Dimension dimension, final List<LineString> lineStrings) {
- super(dimension, Type.MULTILINESTRING, lineStrings);
+ public MultiLineString(final Dimension dimension, final String crs, final List<LineString> lineStrings) {
+ super(dimension, Type.MULTILINESTRING, crs, lineStrings);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPoint.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPoint.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPoint.java
index 7bef6eb..8ea16b9 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPoint.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPoint.java
@@ -26,8 +26,8 @@ public class MultiPoint extends ComposedGeospatial<Point> {
private static final long serialVersionUID = 4951011255142116129L;
- public MultiPoint(final Dimension dimension, final List<Point> points) {
- super(dimension, Type.MULTIPOINT, points);
+ public MultiPoint(final Dimension dimension, final String crs, final List<Point> points) {
+ super(dimension, Type.MULTIPOINT, crs, points);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPolygon.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPolygon.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPolygon.java
index cab25ea..ed55b92 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPolygon.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/MultiPolygon.java
@@ -26,8 +26,8 @@ public class MultiPolygon extends ComposedGeospatial<Polygon> {
private static final long serialVersionUID = -160184788048512883L;
- public MultiPolygon(final Dimension dimension, final List<Polygon> polygons) {
- super(dimension, Type.MULTIPOLYGON, polygons);
+ public MultiPolygon(final Dimension dimension, final String crs, final List<Polygon> polygons) {
+ super(dimension, Type.MULTIPOLYGON, crs, polygons);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Point.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Point.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Point.java
index cb04920..63b9166 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Point.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Point.java
@@ -40,8 +40,8 @@ public class Point extends Geospatial {
*/
private double z;
- public Point(final Dimension dimension) {
- super(dimension, Type.POINT);
+ public Point(final Dimension dimension, final String crs) {
+ super(dimension, Type.POINT, crs);
}
public double getX() {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Polygon.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Polygon.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Polygon.java
index 48941d2..2aa1787 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Polygon.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Polygon.java
@@ -37,13 +37,14 @@ public class Polygon extends Geospatial {
* Constructor.
*
* @param dimension dimension.
+ * @param crs crs.
* @param interior interior points.
* @param exterior exterior points.
*/
- public Polygon(final Dimension dimension, final List<Point> interior, final List<Point> exterior) {
- super(dimension, Type.POLYGON);
- this.interior = new MultiPoint(dimension, interior);
- this.exterior = new MultiPoint(dimension, exterior);
+ public Polygon(final Dimension dimension, final String crs, final List<Point> interior, final List<Point> exterior) {
+ super(dimension, Type.POLYGON, crs);
+ this.interior = new MultiPoint(dimension, crs, interior);
+ this.exterior = new MultiPoint(dimension, crs, exterior);
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataBinder.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataBinder.java
index b110c9d..947fd6b 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataBinder.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataBinder.java
@@ -24,6 +24,7 @@ import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.Link;
import org.apache.olingo.client.api.data.LinkCollection;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.data.ServiceDocument;
import org.apache.olingo.client.api.domain.ODataEntity;
import org.apache.olingo.client.api.domain.ODataEntitySet;
@@ -31,7 +32,6 @@ import org.apache.olingo.client.api.domain.ODataLink;
import org.apache.olingo.client.api.domain.ODataLinkCollection;
import org.apache.olingo.client.api.domain.ODataProperty;
import org.apache.olingo.client.api.domain.ODataServiceDocument;
-import org.w3c.dom.Element;
public interface ODataBinder extends Serializable {
@@ -73,12 +73,14 @@ public interface ODataBinder extends Serializable {
Link getLink(ODataLink link, boolean isXML);
/**
- * Gets the given OData property as DOM element.
+ * Gets a <tt>Property</tt> from the given OData property.
*
- * @param prop OData property.
- * @return <tt>Element</tt> object.
+ * @param property OData property.
+ * @param reference reference class.
+ * @param setType whether to explicitly output type information.
+ * @return <tt>Property</tt> object.
*/
- Element toDOMElement(ODataProperty prop);
+ Property getProperty(ODataProperty property, Class<? extends Entry> reference, boolean setType);
/**
* Gets <tt>ODataServiceDocument</tt> from the given service document resource.
@@ -123,12 +125,12 @@ public interface ODataBinder extends Serializable {
ODataEntity getODataEntity(Entry resource, URI defaultBaseURI);
/**
- * Gets an <tt>ODataProperty</tt> from the given DOM element.
+ * Gets an <tt>ODataProperty</tt> from the given property resource.
*
- * @param property content.
+ * @param property property resource.
* @return <tt>ODataProperty</tt> object.
*/
- ODataProperty getODataProperty(Element property);
+ ODataProperty getODataProperty(Property property);
/**
* Gets <tt>ODataLinkCollection</tt> from the given link collection resource.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataDeserializer.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataDeserializer.java
index 939101f..6a6da39 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataDeserializer.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/op/ODataDeserializer.java
@@ -24,11 +24,11 @@ import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Error;
import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.LinkCollection;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.data.ServiceDocument;
import org.apache.olingo.client.api.edm.xml.XMLMetadata;
import org.apache.olingo.client.api.format.ODataFormat;
import org.apache.olingo.client.api.format.ODataPubFormat;
-import org.w3c.dom.Element;
/**
* Utility class for serialization.
@@ -65,13 +65,13 @@ public interface ODataDeserializer extends Serializable {
Entry toEntry(InputStream input, ODataPubFormat format);
/**
- * Gets a DOM representation of the given InputStream.
+ * Gets a property object from the given InputStream.
*
* @param input stream to be de-serialized.
* @param format XML or JSON
- * @return DOM.
+ * @return Property instance.
*/
- Element toPropertyDOM(InputStream input, ODataFormat format);
+ Property toProperty(InputStream input, ODataFormat format);
/**
* Gets the ODataError object represented by the given InputStream.
@@ -83,14 +83,6 @@ public interface ODataDeserializer extends Serializable {
Error toError(InputStream input, boolean isXML);
/**
- * Parses the given input into a DOM tree.
- *
- * @param input stream to be parsed and de-serialized.
- * @return DOM tree
- */
- Element toDOM(InputStream input);
-
- /**
* Gets a list of links from the given InputStream.
*
* @param input stream to be de-serialized.
[03/21] git commit: Merge branch 'olingo200' of
https://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4 into
olingo200
Posted by il...@apache.org.
Merge branch 'olingo200' of https://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4 into olingo200
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/cb07ded0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/cb07ded0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/cb07ded0
Branch: refs/heads/olingo200
Commit: cb07ded0cb722f9e57492cf0fdf04e58aa5cbcc3
Parents: c602ba8 a835edd
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Mar 14 18:38:10 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Mar 14 18:38:10 2014 +0100
----------------------------------------------------------------------
.../org/apache/olingo/fit/AbstractServices.java | 151 ++++--
.../olingo/fit/utils/AbstractUtilities.java | 4 +
.../org/apache/olingo/fit/utils/Constants.java | 2 +-
.../apache/olingo/fit/utils/JSONUtilities.java | 11 +
.../apache/olingo/fit/utils/XMLUtilities.java | 21 +-
.../main/resources/v3/Car/14/entity.full.json | 4 +-
fit/src/main/resources/v3/Car/14/entity.xml | 4 +-
.../main/resources/v3/Car/16/entity.full.json | 4 +-
fit/src/main/resources/v3/Car/16/entity.xml | 4 +-
fit/src/main/resources/v3/Car/feed.full.json | 50 +-
fit/src/main/resources/v3/Car/feed.xml | 52 +-
.../v3/Car/filter/((1 add VIN) eq 16).full.json | 2 +-
.../v3/Car/filter/((1 add VIN) eq 16).xml | 6 +-
.../v3/Car/filter/((VIN add 1) eq 16).full.json | 2 +-
.../v3/Car/filter/((VIN add 1) eq 16).xml | 6 +-
.../((VIN lt 16) and (VIN gt 12)).full.json | 2 +-
.../filter/((VIN lt 16) and (VIN gt 12)).xml | 10 +-
.../v3/Car/filter/(16 eq (1 add VIN)).full.json | 2 +-
.../v3/Car/filter/(16 eq (1 add VIN)).xml | 6 +-
.../v3/Car/filter/(VIN lt 16).full.json | 2 +-
.../resources/v3/Car/filter/(VIN lt 16).xml | 14 +-
...ngth(Description) gt (VIN add 10)).full.json | 2 +-
.../(length(Description) gt (VIN add 10)).xml | 14 +-
.../v3/Car/filter/VIN add 5 lt 11.full.json | 2 +-
.../resources/v3/Car/filter/VIN add 5 lt 11.xml | 2 +-
.../v3/Car/filter/VIN div 2 le 8.full.json | 2 +-
.../resources/v3/Car/filter/VIN div 2 le 8.xml | 2 +-
.../filter/VIN le 18 and VIN gt 12.full.json | 2 +-
.../v3/Car/filter/VIN le 18 and VIN gt 12.xml | 2 +-
.../v3/Car/filter/VIN mul 2 le 30.full.json | 2 +-
.../resources/v3/Car/filter/VIN mul 2 le 30.xml | 2 +-
...not (((VIN ge 16) or (VIN le 12))).full.json | 2 +-
.../not (((VIN ge 16) or (VIN le 12))).xml | 10 +-
.../startswith(Description,'cen').full.json | 2 +-
.../filter/startswith(Description,'cen').xml | 6 +-
.../VIN desc/filter/(VIN lt 16).full.json | 12 +-
.../Car/orderby/VIN desc/filter/(VIN lt 16).xml | 14 +-
.../v3/ComputerDetail/-10/entity.full.json | 6 +-
.../resources/v3/ComputerDetail/-10/entity.xml | 6 +-
.../(month(PurchaseDate) eq 12).full.json | 2 +-
.../filter/(month(PurchaseDate) eq 12).xml | 8 +-
.../filter/day(PurchaseDate) eq 15.full.json | 2 +-
.../filter/day(PurchaseDate) eq 15.xml | 2 +-
.../filter/hour(PurchaseDate) eq 1.full.json | 2 +-
.../filter/hour(PurchaseDate) eq 1.xml | 2 +-
.../filter/minute(PurchaseDate) eq 33.full.json | 2 +-
.../filter/minute(PurchaseDate) eq 33.xml | 2 +-
.../filter/month(PurchaseDate) eq 12.full.json | 2 +-
.../filter/month(PurchaseDate) eq 12.xml | 2 +-
.../filter/second(PurchaseDate) eq 35.full.json | 2 +-
.../filter/second(PurchaseDate) eq 35.xml | 2 +-
.../filter/year(PurchaseDate) eq 2020.full.json | 2 +-
.../filter/year(PurchaseDate) eq 2020.xml | 2 +-
.../resources/v3/Customer/-10/entity.full.json | 4 +-
.../main/resources/v3/Customer/-10/entity.xml | 4 +-
.../v3/Customer/-10/links/Info.full.json | 4 +-
.../resources/v3/Customer/-10/links/Info.xml | 2 +-
.../v3/Customer/-10/links/Logins('3').full.json | 4 +-
.../v3/Customer/-10/links/Logins.full.json | 6 +-
.../resources/v3/Customer/-10/links/Logins.xml | 4 +-
.../v3/Customer/-10/links/Orders(-10).full.json | 4 +-
.../v3/Customer/-10/links/Orders.full.json | 8 +-
.../resources/v3/Customer/-10/links/Orders.xml | 6 +-
.../main/resources/v3/Customer/-7/entity.xml | 4 +-
.../main/resources/v3/Customer/feed.full.json | 6 +-
fit/src/main/resources/v3/Customer/feed.xml | 10 +-
....PhoneNumber,'ODataJClient') eq 1).full.json | 2 +-
...ePhone.PhoneNumber,'ODataJClient') eq 1).xml | 4 +-
...ne.PhoneNumber,'lccvussrv') ne -1).full.json | 2 +-
...omePhone.PhoneNumber,'lccvussrv') ne -1).xml | 10 +-
.../Customer/filter/CustomerId eq -10.full.json | 4 +-
.../v3/Customer/filter/CustomerId eq -10.xml | 6 +-
.../Customer/filter/CustomerId gt -10.full.json | 2 +-
.../v3/Customer/filter/CustomerId gt -10.xml | 10 +-
.../Customer/filter/CustomerId lt -10.full.json | 2 +-
.../v3/Customer/filter/CustomerId lt -10.xml | 4 +-
.../isof(Name,'Edm.String') eq true.full.json | 2 +-
.../filter/isof(Name,'Edm.String') eq true.xml | 10 +-
.../not endswith(Name,'Chandan').full.json | 2 +-
.../filter/not endswith(Name,'Chandan').xml | 10 +-
.../v3/Customer/skiptoken/-1.full.json | 2 +-
.../main/resources/v3/Customer/skiptoken/-1.xml | 4 +-
.../v3/Customer/skiptoken/-10.full.json | 6 +-
.../resources/v3/Customer/skiptoken/-10.xml | 10 +-
.../v3/Customer/skiptoken/-3.full.json | 6 +-
.../main/resources/v3/Customer/skiptoken/-3.xml | 10 +-
.../v3/Customer/skiptoken/-5.full.json | 6 +-
.../main/resources/v3/Customer/skiptoken/-5.xml | 10 +-
.../v3/Customer/skiptoken/-7.full.json | 6 +-
.../main/resources/v3/Customer/skiptoken/-7.xml | 10 +-
.../v3/Customer/skiptoken/-9.full.json | 6 +-
.../main/resources/v3/Customer/skiptoken/-9.xml | 10 +-
.../v3/CustomerInfo/11/entity.full.json | 4 +-
.../resources/v3/CustomerInfo/11/entity.xml | 4 +-
.../v3/CustomerInfo/12/entity.full.json | 4 +-
.../resources/v3/CustomerInfo/12/entity.xml | 4 +-
.../v3/EdmBooleanSet/true/entity.full.json | 2 +-
.../resources/v3/EdmBooleanSet/true/entity.xml | 4 +-
.../v3/EdmByteSet/255/entity.full.json | 2 +-
.../main/resources/v3/EdmByteSet/255/entity.xml | 4 +-
.../entity.full.json | 2 +-
.../79228162514264337593543950335M/entity.xml | 4 +-
.../1.7976931348623157E308D/entity.full.json | 2 +-
.../1.7976931348623157E308D/entity.xml | 4 +-
.../entity.full.json | 2 +-
.../entity.xml | 4 +-
.../v3/EdmInt16Set/32767/entity.full.json | 2 +-
.../resources/v3/EdmInt16Set/32767/entity.xml | 4 +-
.../v3/EdmInt32Set/-2147483648/entity.full.json | 2 +-
.../v3/EdmInt32Set/-2147483648/entity.xml | 4 +-
.../9223372036854775807L/entity.full.json | 2 +-
.../EdmInt64Set/9223372036854775807L/entity.xml | 4 +-
.../EdmSingleSet/3.4028235E38f/entity.full.json | 2 +-
.../v3/EdmSingleSet/3.4028235E38f/entity.xml | 4 +-
.../v3/EdmStringSet/'$'/entity.full.json | 2 +-
.../resources/v3/EdmStringSet/'$'/entity.xml | 4 +-
.../entity.full.json | 2 +-
.../entity.xml | 4 +-
.../v3/InStreamErrorGetCustomer.full.json | 2 +-
.../resources/v3/InStreamErrorGetCustomer.xml | 6 +-
.../resources/v3/Login/'3'/entity.full.json | 4 +-
fit/src/main/resources/v3/Login/'3'/entity.xml | 4 +-
.../resources/v3/Message/1 -10/entity.full.json | 4 +-
.../main/resources/v3/Message/1 -10/entity.xml | 4 +-
.../resources/v3/Order/-10/entity.full.json | 4 +-
fit/src/main/resources/v3/Order/-10/entity.xml | 4 +-
.../main/resources/v3/Order/-7/entity.full.json | 4 +-
fit/src/main/resources/v3/Order/-7/entity.xml | 4 +-
.../main/resources/v3/Order/-9/entity.full.json | 4 +-
fit/src/main/resources/v3/Order/-9/entity.xml | 4 +-
.../v3/OrderLine/-10 -10/entity.full.json | 4 +-
.../resources/v3/OrderLine/-10 -10/entity.xml | 4 +-
.../filter/PersonId sub 2 lt -10.full.json | 2 +-
.../v3/Person/filter/PersonId sub 2 lt -10.xml | 12 +-
...iaDefaultService.SpecialEmployee').full.json | 2 +-
....AstoriaDefaultService.SpecialEmployee').xml | 20 +-
.../resources/v3/Product/-10/entity.full.json | 6 +-
.../main/resources/v3/Product/-10/entity.xml | 6 +-
.../resources/v3/Product/-6/entity.full.json | 6 +-
fit/src/main/resources/v3/Product/-6/entity.xml | 6 +-
.../resources/v3/Product/-7/entity.full.json | 6 +-
fit/src/main/resources/v3/Product/-7/entity.xml | 6 +-
.../v3/Product/-7/links/Photos.full.json | 6 +-
.../resources/v3/Product/-9/entity.full.json | 6 +-
fit/src/main/resources/v3/Product/-9/entity.xml | 6 +-
.../main/resources/v3/Product/feed.full.json | 42 +-
fit/src/main/resources/v3/Product/feed.xml | 44 +-
.../ceiling(Dimensions.Width) eq 7338.full.json | 2 +-
.../ceiling(Dimensions.Width) eq 7338.xml | 8 +-
...', newname') eq 'kdcuklu, newname'.full.json | 2 +-
...tion, ', newname') eq 'kdcuklu, newname'.xml | 8 +-
.../floor(Dimensions.Width) eq 7337.full.json | 2 +-
.../filter/floor(Dimensions.Width) eq 7337.xml | 8 +-
.../indexof(Description, 'k') eq 0.full.json | 2 +-
.../filter/indexof(Description, 'k') eq 0.xml | 12 +-
.../filter/length(Description) eq 7.full.json | 2 +-
.../Product/filter/length(Description) eq 7.xml | 8 +-
.../round(Dimensions.Width) eq 7338.full.json | 2 +-
.../filter/round(Dimensions.Width) eq 7338.xml | 8 +-
...artswith(Description, 'k') eq true.full.json | 2 +-
.../startswith(Description, 'k') eq true.xml | 12 +-
...of('kdcuklu', Description) eq true.full.json | 2 +-
...stringof('kdcuklu', Description) eq true.xml | 8 +-
.../toupper(Description) eq 'KDCUKLU'.full.json | 2 +-
.../toupper(Description) eq 'KDCUKLU'.xml | 8 +-
.../v3/ProductPhoto/-2 -2/entity.full.json | 4 +-
.../resources/v3/ProductPhoto/-2 -2/entity.xml | 4 +-
.../v3/ProductPhoto/-3 -3/entity.full.json | 4 +-
.../resources/v3/ProductPhoto/-3 -3/entity.xml | 4 +-
fit/src/main/resources/v3/services.full.json | 2 +-
fit/src/main/resources/v3/services.xml | 2 +-
.../olingo/client/api/format/ODataFormat.java | 6 +-
.../client/api/format/ODataPubFormat.java | 6 +-
.../olingo/client/api/utils/URIUtils.java | 13 +-
.../olingo/client/core/data/AtomEntryImpl.java | 3 +-
.../client/core/data/JSONFeedDeserializer.java | 4 +
.../client/core/op/impl/ResourceFactory.java | 3 +-
.../core/it/AbstractMetadataTestITCase.java | 1 +
.../client/core/it/AbstractTestITCase.java | 92 ++--
.../client/core/it/v3/AbstractV3TestITCase.java | 53 ++
.../core/it/v3/ActionOverloadingTestITCase.java | 133 +++++
.../client/core/it/v3/AsyncTestITCase.java | 135 +++++
.../it/v3/AuthEntityRetrieveTestITCase.java | 54 ++
.../client/core/it/v3/BatchTestITCase.java | 406 +++++++++++++++
.../client/core/it/v3/CountTestITCase.java | 62 +++
.../core/it/v3/EntityCreateTestITCase.java | 480 +++++++++++++++++
.../core/it/v3/EntityRetrieveTestITCase.java | 240 +++++++++
.../client/core/it/v3/EntitySetTestITCase.java | 151 ++++++
.../core/it/v3/EntityUpdateTestITCase.java | 238 +++++++++
.../client/core/it/v3/ErrorTestITCase.java | 172 ++++++
.../core/it/v3/FilterFactoryTestITCase.java | 167 ++++++
.../client/core/it/v3/FilterTestITCase.java | 94 ++++
.../client/core/it/v3/InvokeTestITCase.java | 275 ++++++++++
.../core/it/v3/KeyAsSegmentTestITCase.java | 110 ++++
.../client/core/it/v3/LinkTestITCase.java | 177 +++++++
.../core/it/v3/MediaEntityTestITCase.java | 221 ++++++++
.../it/v3/NavigationLinkCreateTestITCase.java | 520 +++++++++++++++++++
.../client/core/it/v3/OpenTypeTestITCase.java | 273 ++++++++++
.../core/it/v3/PrimitiveKeysTestITCase.java | 80 +++
.../core/it/v3/PropertyRetrieveTestITCase.java | 277 ++++++++++
.../client/core/it/v3/PropertyTestITCase.java | 372 +++++++++++++
.../core/it/v3/PropertyValueTestITCase.java | 166 ++++++
.../core/it/v3/QueryOptionsTestITCase.java | 197 +++++++
.../v3/ServiceDocumentRetrieveTestITCase.java | 73 +++
.../core/it/v3/ServiceDocumentTestITCase.java | 56 ++
.../v3/XHTTPMethodEntityUpdateTestITCase.java | 38 ++
.../v3/XHTTPMethodPropertyUpdateTestITCase.java | 38 ++
.../client/core/it/v4/AbstractV4TestITCase.java | 53 ++
.../client/core/it/v4/MetadataTestITCase.java | 41 ++
pom.xml | 18 +
210 files changed, 6047 insertions(+), 588 deletions(-)
----------------------------------------------------------------------
[13/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4BinderImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4BinderImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4BinderImpl.java
index 01268c0..36006b5 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4BinderImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4BinderImpl.java
@@ -32,10 +32,6 @@ public class ODataV4BinderImpl extends AbstractODataBinder {
super(client);
}
-// @Override
-// protected EdmType newEdmType(final String expression) {
-// return new EdmV4Type(expression);
-// }
@Override
public ODataServiceDocument getODataServiceDocument(final ServiceDocument resource) {
final ODataServiceDocument serviceDocument = super.getODataServiceDocument(resource);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4DeserializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4DeserializerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4DeserializerImpl.java
index cb34367..d3affea 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4DeserializerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV4DeserializerImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.olingo.client.core.op.impl;
-import java.io.IOException;
import java.io.InputStream;
import org.apache.olingo.client.api.ODataClient;
@@ -50,12 +49,9 @@ public class ODataV4DeserializerImpl extends AbstractODataDeserializer implement
@Override
public ServiceDocument toServiceDocument(final InputStream input, final ODataFormat format) {
- try {
- return format == ODataFormat.XML
- ? getXmlMapper().readValue(input, XMLServiceDocumentImpl.class)
- : getObjectMapper().readValue(input, JSONServiceDocumentImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("Could not parse Service Document", e);
- }
+ return format == ODataFormat.XML
+ ? xml(input, XMLServiceDocumentImpl.class)
+ : json(input, JSONServiceDocumentImpl.class);
+
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataWriterImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataWriterImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataWriterImpl.java
index a6afabc..40bd2fb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataWriterImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataWriterImpl.java
@@ -78,7 +78,8 @@ public class ODataWriterImpl implements ODataWriter {
public InputStream writeProperty(final ODataProperty property, final ODataFormat format) {
final ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
- client.getSerializer().property(client.getBinder().toDOMElement(property), format, output);
+ client.getSerializer().property(client.getBinder().getProperty(
+ property, ResourceFactory.entryClassForFormat(format == ODataFormat.XML), true), output);
return new ByteArrayInputStream(output.toByteArray());
} finally {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ResourceFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ResourceFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ResourceFactory.java
index bb98557..7ee74cd 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ResourceFactory.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ResourceFactory.java
@@ -20,11 +20,14 @@ package org.apache.olingo.client.core.op.impl;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Feed;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.format.ODataPubFormat;
import org.apache.olingo.client.core.data.AtomEntryImpl;
import org.apache.olingo.client.core.data.AtomFeedImpl;
+import org.apache.olingo.client.core.data.AtomPropertyImpl;
import org.apache.olingo.client.core.data.JSONEntryImpl;
import org.apache.olingo.client.core.data.JSONFeedImpl;
+import org.apache.olingo.client.core.data.JSONPropertyImpl;
public class ResourceFactory {
@@ -65,6 +68,18 @@ public class ResourceFactory {
return result;
}
+ public static Property newProperty(final Class<? extends Entry> resourceClass) {
+ Property result = null;
+ if (AtomEntryImpl.class.equals(resourceClass)) {
+ result = new AtomPropertyImpl();
+ }
+ if (JSONEntryImpl.class.equals(resourceClass)) {
+ result = new JSONPropertyImpl();
+ }
+
+ return result;
+ }
+
/**
* Gets feed reference class from the given format.
*
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AbstractDOMParser.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AbstractDOMParser.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AbstractDOMParser.java
deleted file mode 100644
index 70bbbd6..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AbstractDOMParser.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.xml;
-
-import java.io.InputStream;
-import java.io.Writer;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * DOM Parser.
- */
-public abstract class AbstractDOMParser {
-
- /**
- * Parses the given input into a DOM tree.
- *
- * @param input stream to be parsed and de-serialized.
- * @return DOM tree
- */
- public abstract Element deserialize(InputStream input);
-
- /**
- * Writes DOM object by the given writer.
- *
- * @param content DOM to be streamed.
- * @param writer writer.
- */
- public abstract void serialize(Node content, Writer writer);
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AndroidDOMParserImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AndroidDOMParserImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AndroidDOMParserImpl.java
deleted file mode 100644
index 3cbf5e1..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/AndroidDOMParserImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.xml;
-
-import org.apache.olingo.client.api.utils.XMLUtils;
-
-import java.io.InputStream;
-import java.io.Writer;
-
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class AndroidDOMParserImpl extends AbstractDOMParser {
-
- @Override
- public Element deserialize(final InputStream input) {
- try {
- return XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder().parse(input).getDocumentElement();
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not parse DOM", e);
- }
- }
-
- @Override
- public void serialize(final Node content, final Writer writer) {
- try {
- TransformerFactory.newInstance().newTransformer().
- transform(new DOMSource(content), new StreamResult(writer));
- } catch (Exception e) {
- throw new IllegalArgumentException("While serializing DOM element", e);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/DefaultDOMParserImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/DefaultDOMParserImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/DefaultDOMParserImpl.java
deleted file mode 100644
index 9f60834..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/DefaultDOMParserImpl.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.xml;
-
-import java.io.InputStream;
-import java.io.Writer;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.bootstrap.DOMImplementationRegistry;
-import org.w3c.dom.ls.DOMImplementationLS;
-import org.w3c.dom.ls.LSInput;
-import org.w3c.dom.ls.LSOutput;
-import org.w3c.dom.ls.LSParser;
-import org.w3c.dom.ls.LSSerializer;
-
-public class DefaultDOMParserImpl extends AbstractDOMParser {
-
- private static final Object MONITOR = new Object();
-
- private static DOMImplementationLS DOM_IMPL;
-
- private void lazyInit() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
- synchronized (MONITOR) {
- if (DOM_IMPL == null) {
- final DOMImplementationRegistry reg = DOMImplementationRegistry.newInstance();
- DOM_IMPL = (DOMImplementationLS) reg.getDOMImplementation("LS");
- }
- }
- }
-
- @Override
- public Element deserialize(final InputStream input) {
- try {
- lazyInit();
-
- final LSParser parser = DOM_IMPL.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
-
- final LSInput lsinput = DOM_IMPL.createLSInput();
- lsinput.setByteStream(input);
-
- return parser.parse(lsinput).getDocumentElement();
- } catch (Exception e) {
- throw new IllegalArgumentException("Could not parse DOM", e);
- }
- }
-
- @Override
- public void serialize(final Node content, final Writer writer) {
- try {
- lazyInit();
-
- final LSSerializer serializer = DOM_IMPL.createLSSerializer();
-
- final LSOutput lso = DOM_IMPL.createLSOutput();
- lso.setCharacterStream(writer);
-
- serializer.write(content, lso);
- } catch (Exception e) {
- throw new IllegalArgumentException("While serializing DOM element", e);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/XMLParser.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/XMLParser.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/XMLParser.java
deleted file mode 100644
index 5c85438..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/xml/XMLParser.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.xml;
-
-import java.util.Iterator;
-import java.util.ServiceLoader;
-
-public final class XMLParser {
-
- public static final AbstractDOMParser PARSER;
-
- static {
- final Iterator<AbstractDOMParser> itor
- = ServiceLoader.load(AbstractDOMParser.class, Thread.currentThread().getContextClassLoader()).iterator();
- PARSER = itor.hasNext() ? itor.next() : new DefaultDOMParserImpl();
- }
-
- private XMLParser() {
- // Empty private constructor for static utility classes
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
index 5dded95..a40da38 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractPrimitiveTest.java
@@ -69,7 +69,7 @@ public abstract class AbstractPrimitiveTest extends AbstractTest {
if (ODataJClientEdmPrimitiveType.isGeospatial(value.getTypeName())) {
newValue = getClient().getGeospatialValueBuilder().
setType(ODataJClientEdmPrimitiveType.fromValue(value.getTypeName())).
- setTree(((ODataGeospatialValue) value).toTree()).build();
+ setValue(((ODataGeospatialValue) value).getGeospatial()).build();
} else {
newValue = getClient().getPrimitiveValueBuilder().
setType(ODataJClientEdmPrimitiveType.fromValue(value.getTypeName())).
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractTest.java
index 9c65809..9faa8e2 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/AbstractTest.java
@@ -25,6 +25,7 @@ import org.apache.olingo.client.api.ODataV3Client;
import org.apache.olingo.client.api.ODataV4Client;
import org.apache.olingo.client.api.format.ODataFormat;
import org.apache.olingo.client.api.format.ODataPubFormat;
+import org.custommonkey.xmlunit.XMLUnit;
import org.junit.BeforeClass;
public abstract class AbstractTest {
@@ -35,6 +36,15 @@ public abstract class AbstractTest {
protected abstract ODataClient getClient();
+ @BeforeClass
+ public static void setUp() {
+ XMLUnit.setIgnoreComments(true);
+ XMLUnit.setIgnoreAttributeOrder(true);
+ XMLUnit.setIgnoreWhitespace(true);
+ XMLUnit.setNormalizeWhitespace(true);
+ XMLUnit.setCompareUnmatched(false);
+ }
+
/**
* This is needed for correct number handling (Double, for example).
*/
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
new file mode 100644
index 0000000..94aab69
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/AtomLinksQualifier.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core;
+
+import org.apache.olingo.client.api.Constants;
+import org.custommonkey.xmlunit.ElementNameQualifier;
+import org.w3c.dom.Element;
+
+public class AtomLinksQualifier extends ElementNameQualifier {
+
+ @Override
+ public boolean qualifyForComparison(final Element control, final Element test) {
+ if (Constants.ATOM_ELEM_LINK.equals(control.getLocalName())
+ && Constants.ATOM_ELEM_LINK.equals(test.getLocalName())) {
+
+ final String controlHref = control.getAttribute("href");
+ final String testHref = test.getAttribute("href");
+ return super.equalsNamespace(control, test) && controlHref != null && controlHref.equals(testHref);
+ } else {
+ return super.qualifyForComparison(control, test);
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
index 074228a..590abf6 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/OpenTypeTestITCase.java
@@ -120,7 +120,7 @@ public class OpenTypeTestITCase extends AbstractV3TestITCase {
client.getPrimitiveValueBuilder().setType(ODataJClientEdmPrimitiveType.DateTime).setValue(new Date()).
build()));
- final Point point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ final Point point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(1.2);
point.setY(2.1);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aPoint",
@@ -129,36 +129,35 @@ public class OpenTypeTestITCase extends AbstractV3TestITCase {
final List<Point> points = new ArrayList<Point>();
points.add(point);
points.add(point);
- final MultiPoint multipoint = new MultiPoint(Geospatial.Dimension.GEOMETRY, points);
+ final MultiPoint multipoint = new MultiPoint(Geospatial.Dimension.GEOMETRY, null, points);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aMultiPoint",
client.getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeometryMultiPoint).
setValue(multipoint).build()));
- final LineString lineString = new LineString(Geospatial.Dimension.GEOMETRY, points);
+ final LineString lineString = new LineString(Geospatial.Dimension.GEOMETRY, null, points);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aLineString",
client.getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeometryLineString).
setValue(lineString).build()));
final List<LineString> lineStrings = new ArrayList<LineString>();
lineStrings.add(lineString);
lineStrings.add(lineString);
- final MultiLineString multiLineString = new MultiLineString(Geospatial.Dimension.GEOGRAPHY, lineStrings);
+ final MultiLineString multiLineString = new MultiLineString(Geospatial.Dimension.GEOGRAPHY, null, lineStrings);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aMultiLineString",
client.getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeometryMultiLineString).
setValue(multiLineString).build()));
- final Point otherPoint = new Point(Geospatial.Dimension.GEOGRAPHY);
+ final Point otherPoint = new Point(Geospatial.Dimension.GEOGRAPHY, null);
otherPoint.setX(3.4);
otherPoint.setY(4.3);
points.set(1, otherPoint);
points.add(otherPoint);
points.add(point);
- final Polygon polygon =
- new Polygon(Geospatial.Dimension.GEOGRAPHY, points, points);
+ final Polygon polygon = new Polygon(Geospatial.Dimension.GEOGRAPHY, null, points, points);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aPolygon",
client.getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeographyPolygon).
setValue(polygon).build()));
final List<Polygon> polygons = new ArrayList<Polygon>();
polygons.add(polygon);
polygons.add(polygon);
- final MultiPolygon multiPolygon = new MultiPolygon(Geospatial.Dimension.GEOGRAPHY, polygons);
+ final MultiPolygon multiPolygon = new MultiPolygon(Geospatial.Dimension.GEOGRAPHY, null, polygons);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aMultiPolygon",
client.getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeographyMultiPolygon).
setValue(multiPolygon).build()));
@@ -167,7 +166,7 @@ public class OpenTypeTestITCase extends AbstractV3TestITCase {
geospatials.add(polygon);
geospatials.add(multiLineString);
geospatials.add(multiPolygon);
- final GeospatialCollection geoColl = new GeospatialCollection(Geospatial.Dimension.GEOGRAPHY, geospatials);
+ final GeospatialCollection geoColl = new GeospatialCollection(Geospatial.Dimension.GEOGRAPHY, null, geospatials);
row.getProperties().add(client.getObjectFactory().newPrimitiveProperty("aCollection",
client.getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeographyCollection).
setValue(geoColl).build()));
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/AtomTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/AtomTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/AtomTest.java
new file mode 100644
index 0000000..b85386c
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/AtomTest.java
@@ -0,0 +1,132 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.v3;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.StringWriter;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import org.apache.commons.io.IOUtils;
+import org.apache.olingo.client.api.ODataV3Client;
+import org.apache.olingo.client.api.format.ODataFormat;
+import org.apache.olingo.client.api.format.ODataPubFormat;
+import org.apache.olingo.client.core.AbstractTest;
+import org.apache.olingo.client.core.AtomLinksQualifier;
+import org.custommonkey.xmlunit.Diff;
+import org.junit.Test;
+
+public class AtomTest extends AbstractTest {
+
+ @Override
+ protected ODataV3Client getClient() {
+ return v3Client;
+ }
+
+ protected ODataPubFormat getODataPubFormat() {
+ return ODataPubFormat.ATOM;
+ }
+
+ protected ODataFormat getODataFormat() {
+ return ODataFormat.XML;
+ }
+
+ private String cleanup(final String input) throws Exception {
+ final TransformerFactory factory = TransformerFactory.newInstance();
+ final Source xslt = new StreamSource(getClass().getResourceAsStream("../atom_cleanup.xsl"));
+ final Transformer transformer = factory.newTransformer(xslt);
+
+ final StringWriter result = new StringWriter();
+ transformer.transform(new StreamSource(new ByteArrayInputStream(input.getBytes())), new StreamResult(result));
+ return result.toString();
+ }
+
+ protected void assertSimilar(final String filename, final String actual) throws Exception {
+ final Diff diff = new Diff(cleanup(IOUtils.toString(getClass().getResourceAsStream(filename))), actual);
+ diff.overrideElementQualifier(new AtomLinksQualifier());
+ assertTrue(diff.similar());
+ }
+
+ protected void feed(final String filename, final ODataPubFormat format) throws Exception {
+ final StringWriter writer = new StringWriter();
+ getClient().getSerializer().feed(getClient().getDeserializer().toFeed(
+ getClass().getResourceAsStream("Customer." + getSuffix(format)), format),
+ writer);
+
+ assertSimilar("Customer." + getSuffix(format), writer.toString());
+ }
+
+ @Test
+ public void feeds() throws Exception {
+ feed("Customer", getODataPubFormat());
+ }
+
+ protected void entry(final String filename, final ODataPubFormat format) throws Exception {
+ final StringWriter writer = new StringWriter();
+ getClient().getSerializer().entry(getClient().getDeserializer().toEntry(
+ getClass().getResourceAsStream(filename + "." + getSuffix(format)), format), writer);
+
+ assertSimilar(filename + "." + getSuffix(format), writer.toString());
+ }
+
+ @Test
+ public void entries() throws Exception {
+ entry("AllGeoTypesSet_-5", getODataPubFormat());
+ entry("AllGeoTypesSet_-8", getODataPubFormat());
+ entry("Car_16", getODataPubFormat());
+ entry("ComputerDetail_-10", getODataPubFormat());
+ entry("Customer_-10", getODataPubFormat());
+ entry("Products_1", getODataPubFormat());
+ entry("PersonDetails_0_Person", getODataPubFormat());
+ entry("Products_0_Categories", getODataPubFormat());
+ }
+
+ protected void property(final String filename, final ODataFormat format) throws Exception {
+ final StringWriter writer = new StringWriter();
+ getClient().getSerializer().property(getClient().getDeserializer().
+ toProperty(getClass().getResourceAsStream(filename + "." + getSuffix(format)), format), writer);
+
+ assertSimilar(filename + "." + getSuffix(format), writer.toString());
+ }
+
+ @Test
+ public void properties() throws Exception {
+ property("Products_1_DiscontinuedDate", getODataFormat());
+ property("AllGeoTypesSet_-10_GeogLine", getODataFormat());
+ property("AllGeoTypesSet_-10_GeogPoint", getODataFormat());
+ property("AllGeoTypesSet_-10_Geom", getODataFormat());
+ property("AllGeoTypesSet_-3_GeomMultiPolygon", getODataFormat());
+ property("AllGeoTypesSet_-5_GeogCollection", getODataFormat());
+ property("AllGeoTypesSet_-5_GeogPolygon", getODataFormat());
+ property("AllGeoTypesSet_-6_GeomMultiLine", getODataFormat());
+ property("AllGeoTypesSet_-7_GeomMultiPoint", getODataFormat());
+ property("AllGeoTypesSet_-8_GeomCollection", getODataFormat());
+ property("Customer_-10_BackupContactInfo", getODataFormat());
+ property("Customer_-10_PrimaryContactInfo", getODataFormat());
+ property("MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_Attachment", getODataFormat());
+ property("MessageAttachment_guid'1126a28b-a4af-4bbd-bf0a-2b2c22635565'_AttachmentId", getODataFormat());
+ property("Product_-10_ComplexConcurrency_QueriedDateTime", getODataFormat());
+ property("Product_-10_Dimensions_Width", getODataFormat());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntryTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntryTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntryTest.java
deleted file mode 100644
index cc90496..0000000
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/EntryTest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.v3;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.io.InputStream;
-import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.ODataV3Client;
-import org.apache.olingo.client.api.data.Entry;
-import org.apache.olingo.client.api.format.ODataPubFormat;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.apache.olingo.client.core.AbstractTest;
-import org.junit.Test;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-public class EntryTest extends AbstractTest {
-
- @Override
- protected ODataV3Client getClient() {
- return v3Client;
- }
-
- private void read(final ODataPubFormat format) throws IOException {
- InputStream input = getClass().getResourceAsStream("Car_16." + getSuffix(format));
-
- Entry entry = getClient().getDeserializer().toEntry(input, format);
- assertNotNull(entry);
-
- assertEquals("Car(16)", entry.getEditLink().getHref());
- assertEquals(2, entry.getMediaEditLinks().size());
-
- // this is a media entry
- assertNull(entry.getContent());
-
- final Element vin = XMLUtils.getChildElements(entry.getMediaEntryProperties(), "d:VIN").get(0);
- assertNotNull(vin);
- assertEquals("16", vin.getTextContent());
-
- input.close();
-
- // ---------------------------------------------
- input = getClass().getResourceAsStream("Customer_-10." + getSuffix(format));
-
- entry = getClient().getDeserializer().toEntry(input, format);
- assertNotNull(entry);
-
- input.close();
-
- assertEquals("Microsoft.Test.OData.Services.AstoriaDefaultService.Customer", entry.getType());
- assertNotNull(entry.getBaseURI());
-
- final Element content = entry.getContent();
- assertEquals(Constants.ELEM_PROPERTIES, content.getNodeName());
-
- boolean entered = false;
- boolean checked = false;
- for (int i = 0; i < content.getChildNodes().getLength(); i++) {
- entered = true;
-
- final Node property = content.getChildNodes().item(i);
- if ("PrimaryContactInfo".equals(XMLUtils.getSimpleName(property))) {
- checked = true;
-
- assertEquals("Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails",
- ((Element) property).getAttribute(Constants.ATTR_M_TYPE));
- }
- }
- assertTrue(entered);
- assertTrue(checked);
- }
-
- @Test
- public void atom() throws IOException {
- read(ODataPubFormat.ATOM);
- }
-
- @Test
- public void json() throws IOException {
- read(ODataPubFormat.JSON_FULL_METADATA);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
new file mode 100644
index 0000000..83c7d05
--- /dev/null
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/JSONTest.java
@@ -0,0 +1,106 @@
+package org.apache.olingo.client.core.v3;
+
+/*
+ * 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.
+ */
+import static org.junit.Assert.assertEquals;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.io.ByteArrayInputStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import org.apache.commons.io.IOUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.format.ODataFormat;
+import org.apache.olingo.client.api.format.ODataPubFormat;
+
+public class JSONTest extends AtomTest {
+
+ private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+
+ @Override
+ protected ODataPubFormat getODataPubFormat() {
+ return ODataPubFormat.JSON;
+ }
+
+ @Override
+ protected ODataFormat getODataFormat() {
+ return ODataFormat.JSON;
+ }
+
+ private void cleanup(final ObjectNode node) {
+ if (node.has(Constants.JSON_TYPE)) {
+ node.remove(Constants.JSON_TYPE);
+ }
+ if (node.has(Constants.JSON_EDIT_LINK)) {
+ node.remove(Constants.JSON_EDIT_LINK);
+ }
+ if (node.has(Constants.JSON_READ_LINK)) {
+ node.remove(Constants.JSON_READ_LINK);
+ }
+ if (node.has(Constants.JSON_MEDIAEDIT_LINK)) {
+ node.remove(Constants.JSON_MEDIAEDIT_LINK);
+ }
+ if (node.has(Constants.JSON_MEDIAREAD_LINK)) {
+ node.remove(Constants.JSON_MEDIAREAD_LINK);
+ }
+ if (node.has(Constants.JSON_MEDIA_CONTENT_TYPE)) {
+ node.remove(Constants.JSON_MEDIA_CONTENT_TYPE);
+ }
+ final List<String> toRemove = new ArrayList<String>();
+ for (final Iterator<Map.Entry<String, JsonNode>> itor = node.fields(); itor.hasNext();) {
+ final Map.Entry<String, JsonNode> field = itor.next();
+
+ if (field.getKey().charAt(0) == '#'
+ || field.getKey().endsWith(Constants.JSON_TYPE_SUFFIX)
+ || field.getKey().endsWith(Constants.JSON_MEDIAEDIT_LINK_SUFFIX)
+ || field.getKey().endsWith(Constants.JSON_MEDIA_CONTENT_TYPE_SUFFIX)
+ || field.getKey().endsWith(Constants.JSON_ASSOCIATION_LINK_SUFFIX)
+ || field.getKey().endsWith(Constants.JSON_MEDIA_ETAG_SUFFIX)) {
+
+ toRemove.add(field.getKey());
+ } else if (field.getValue().isObject()) {
+ cleanup((ObjectNode) field.getValue());
+ } else if (field.getValue().isArray()) {
+ for (final Iterator<JsonNode> arrayItems = field.getValue().elements(); arrayItems.hasNext();) {
+ final JsonNode arrayItem = arrayItems.next();
+ if (arrayItem.isObject()) {
+ cleanup((ObjectNode) arrayItem);
+ }
+ }
+ }
+ }
+ node.remove(toRemove);
+ }
+
+ @Override
+ protected void assertSimilar(final String filename, final String actual) throws Exception {
+ final JsonNode orig = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)).
+ replace("Categories" + Constants.JSON_NAVIGATION_LINK_SUFFIX,
+ "Categories" + Constants.JSON_BIND_LINK_SUFFIX).
+ replace("\"Products(0)/Categories\"", "[\"Products(0)/Categories\"]").
+ replace(Constants.JSON_NAVIGATION_LINK_SUFFIX, Constants.JSON_BIND_LINK_SUFFIX));
+ cleanup((ObjectNode) orig);
+ assertEquals(orig, OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes())));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
index c027e40..c1a1f4a 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/PrimitiveValueTest.java
@@ -170,7 +170,7 @@ public class PrimitiveValueTest extends AbstractTest {
@Test
public void managePoint() {
- final Point primitive = new Point(Geospatial.Dimension.GEOGRAPHY);
+ final Point primitive = new Point(Geospatial.Dimension.GEOGRAPHY, null);
primitive.setX(52.8606);
primitive.setY(173.334);
@@ -194,27 +194,27 @@ public class PrimitiveValueTest extends AbstractTest {
@Test
public void manageLineString() {
final List<Point> points = new ArrayList<Point>();
- Point point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ Point point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(40.5);
point.setY(40.5);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(30.5);
point.setY(30.5);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(20.5);
point.setY(40.5);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(10.5);
point.setY(30.5);
points.add(point);
- final LineString primitive = new LineString(Geospatial.Dimension.GEOGRAPHY, points);
+ final LineString primitive = new LineString(Geospatial.Dimension.GEOGRAPHY, null, points);
final ODataValue value = getClient().getGeospatialValueBuilder().
setType(ODataJClientEdmPrimitiveType.GeographyLineString).setValue(primitive).build();
@@ -234,12 +234,12 @@ public class PrimitiveValueTest extends AbstractTest {
@Test
public void manageMultiPoint() {
final List<Point> points = new ArrayList<Point>();
- Point point = new Point(Geospatial.Dimension.GEOMETRY);
+ Point point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(0);
point.setY(0);
points.add(point);
- final MultiPoint primitive = new MultiPoint(Geospatial.Dimension.GEOMETRY, points);
+ final MultiPoint primitive = new MultiPoint(Geospatial.Dimension.GEOMETRY, null, points);
final ODataValue value = getClient().getGeospatialValueBuilder().
setType(ODataJClientEdmPrimitiveType.GeometryMultiPoint).setValue(primitive).build();
@@ -258,48 +258,48 @@ public class PrimitiveValueTest extends AbstractTest {
// line one ...
List<Point> points = new ArrayList<Point>();
- Point point = new Point(Geospatial.Dimension.GEOMETRY);
+ Point point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(10);
point.setY(10);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(20);
point.setY(20);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(10);
point.setY(40);
points.add(point);
- lines.add(new LineString(Geospatial.Dimension.GEOMETRY, points));
+ lines.add(new LineString(Geospatial.Dimension.GEOMETRY, null, points));
// line two ...
points = new ArrayList<Point>();
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(40);
point.setY(40);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(30);
point.setY(30);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(40);
point.setY(20);
points.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(30);
point.setY(10);
points.add(point);
- lines.add(new LineString(Geospatial.Dimension.GEOMETRY, points));
+ lines.add(new LineString(Geospatial.Dimension.GEOMETRY, null, points));
- final MultiLineString primitive = new MultiLineString(Geospatial.Dimension.GEOMETRY, lines);
+ final MultiLineString primitive = new MultiLineString(Geospatial.Dimension.GEOMETRY, null, lines);
final ODataValue value =
getClient().getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeometryMultiLineString).
@@ -327,32 +327,32 @@ public class PrimitiveValueTest extends AbstractTest {
final List<Point> interior = new ArrayList<Point>();
final List<Point> exterior = new ArrayList<Point>();
- Point point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ Point point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(5);
point.setY(15);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(10);
point.setY(40);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(20);
point.setY(10);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(10);
point.setY(5);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(5);
point.setY(15);
exterior.add(point);
- final Polygon primitive = new Polygon(Geospatial.Dimension.GEOGRAPHY, interior, exterior);
+ final Polygon primitive = new Polygon(Geospatial.Dimension.GEOGRAPHY, null, interior, exterior);
final ODataValue value =
getClient().getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeographyPolygon).
@@ -379,86 +379,86 @@ public class PrimitiveValueTest extends AbstractTest {
List<Point> exterior = new ArrayList<Point>();
// exterior one ...
- Point point = new Point(Geospatial.Dimension.GEOMETRY);
+ Point point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(40);
point.setY(40);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(20);
point.setY(45);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(45);
point.setY(30);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(40);
point.setY(40);
exterior.add(point);
- polygons.add(new Polygon(Geospatial.Dimension.GEOMETRY, interior, exterior));
+ polygons.add(new Polygon(Geospatial.Dimension.GEOMETRY, null, interior, exterior));
// interior two ...
interior = new ArrayList<Point>();
exterior = new ArrayList<Point>();
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(30);
point.setY(20);
interior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(20);
point.setY(25);
interior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(20);
point.setY(15);
interior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(30);
point.setY(20);
interior.add(point);
// exterior two ...
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(20);
point.setY(35);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(45);
point.setY(20);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(30);
point.setY(5);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(10);
point.setY(10);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(10);
point.setY(30);
exterior.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(20);
point.setY(35);
exterior.add(point);
- polygons.add(new Polygon(Geospatial.Dimension.GEOMETRY, interior, exterior));
+ polygons.add(new Polygon(Geospatial.Dimension.GEOMETRY, null, interior, exterior));
- final MultiPolygon primitive = new MultiPolygon(Geospatial.Dimension.GEOMETRY, polygons);
+ final MultiPolygon primitive = new MultiPolygon(Geospatial.Dimension.GEOMETRY, null, polygons);
final ODataValue value =
getClient().getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeometryMultiPolygon).
@@ -492,19 +492,19 @@ public class PrimitiveValueTest extends AbstractTest {
public void manageGeomCollection() {
final List<Geospatial> collection = new ArrayList<Geospatial>();
- Point point = new Point(Geospatial.Dimension.GEOMETRY);
+ Point point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(1);
point.setY(2);
point.setZ(3);
collection.add(point);
- point = new Point(Geospatial.Dimension.GEOMETRY);
+ point = new Point(Geospatial.Dimension.GEOMETRY, null);
point.setX(4);
point.setY(5);
point.setZ(6);
collection.add(point);
- final GeospatialCollection primitive = new GeospatialCollection(Geospatial.Dimension.GEOMETRY, collection);
+ final GeospatialCollection primitive = new GeospatialCollection(Geospatial.Dimension.GEOMETRY, null, collection);
final ODataValue value =
getClient().getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeometryCollection).
@@ -524,19 +524,19 @@ public class PrimitiveValueTest extends AbstractTest {
public void manageGeogCollection() {
final List<Geospatial> collection = new ArrayList<Geospatial>();
- Point point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ Point point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(1);
point.setY(2);
point.setZ(3);
collection.add(point);
- point = new Point(Geospatial.Dimension.GEOGRAPHY);
+ point = new Point(Geospatial.Dimension.GEOGRAPHY, null);
point.setX(4);
point.setY(5);
point.setZ(6);
collection.add(point);
- final GeospatialCollection primitive = new GeospatialCollection(Geospatial.Dimension.GEOGRAPHY, collection);
+ final GeospatialCollection primitive = new GeospatialCollection(Geospatial.Dimension.GEOGRAPHY, null, collection);
final ODataValue value =
getClient().getGeospatialValueBuilder().setType(ODataJClientEdmPrimitiveType.GeographyCollection).
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/atom_cleanup.xsl
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/atom_cleanup.xsl b/lib/client-core/src/test/resources/org/apache/olingo/client/core/atom_cleanup.xsl
new file mode 100644
index 0000000..a518fcb
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/atom_cleanup.xsl
@@ -0,0 +1,48 @@
+<?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.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns="http://www.w3.org/2005/Atom"
+ xmlns:atom="http://www.w3.org/2005/Atom"
+ xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
+ version="1.0">
+
+ <xsl:template match="atom:updated"/>
+ <xsl:template match="atom:author"/>
+ <xsl:template match="atom:title">
+ <xsl:if test="string-length(.) > 0">
+ <title type="{@type}">
+ <xsl:apply-templates/>
+ </title>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template match="atom:link[@rel = 'self' or @rel = 'edit' or @rel = 'edit-media']"/>
+
+ <xsl:template match="m:action"/>
+
+ <xsl:template match="@*[name() = 'm:etag']"/>
+
+ <xsl:template match="node()|@*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+ </xsl:template>
+</xsl:stylesheet>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.json
new file mode 100644
index 0000000..c3150e1
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeographyLineString","odata.type":"Edm.GeographyLineString","value":{"type":"LineString","coordinates":[[40.5,40.5],[30.5,30.5],[20.5,40.5],[10.5,30.5]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.xml
new file mode 100644
index 0000000..55b8dcc
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogLine.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeogLine xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeographyLineString"><gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>40.5 40.5</gml:pos><gml:pos>30.5 30.5</gml:pos><gml:pos>20.5 40.5</gml:pos><gml:pos>10.5 30.5</gml:pos></gml:LineString></d:GeogLine>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.json
new file mode 100644
index 0000000..7d53958
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeographyPoint","odata.type":"Edm.GeographyPoint","value":{"type":"Point","coordinates":[52.8606,173.334],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.xml
new file mode 100644
index 0000000..d758ec1
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-10_GeogPoint.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeogPoint xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeographyPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>52.8606 173.334</gml:pos></gml:Point></d:GeogPoint>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.json
new file mode 100644
index 0000000..09a2291
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeometryMultiPolygon","value":{"type":"MultiPolygon","coordinates":[[[[40.0,40.0],[20.0,45.0],[45.0,30.0],[40.0,40.0]]],[[[20.0,35.0],[45.0,20.0],[30.0,5.0],[10.0,10.0],[10.0,30.0],[20.0,35.0]],[[30.0,20.0],[20.0,25.0],[20.0,15.0],[30.0,20.0]]]],"crs":{"type":"name","properties":{"name":"EPSG:0"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.xml
new file mode 100644
index 0000000..7353d0a
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-3_GeomMultiPolygon.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeomMultiPolygon xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeometryMultiPolygon"><gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:surfaceMembers><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>40 40</gml:pos><gml:pos>20 45</gml:pos><gml:pos>45 30</gml:pos><gml:pos>40 40</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>20 35</gml:pos><gml:pos>45 20</gml:pos><gml:pos>30 5</gml:pos><gml:pos>10 10</gml:pos><gml:pos>10 30</gml:pos><gml:pos>20 35</gml:pos></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:pos>30 20</gml:pos><gml:pos>20 25</gml:pos><gml:pos>20 15</gml:pos><gml:pos>30 20</gml:pos></gml:LinearRing></gml:interior></gml:Polygon></gml:surfaceMembers></gml:MultiSurface></d:GeomMultiPol
ygon>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5.xml
index 3bc5f87..90037fd 100644
--- a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5.xml
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5.xml
@@ -19,4 +19,158 @@
under the License.
-->
-<entry xml:base="http://192.168.0.160:8080/DefaultService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"><id>http://192.168.0.160:8080/DefaultService.svc/AllGeoTypesSet(-5)</id><category term="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /><link rel="edit" title="AllSpatialTypes" href="AllGeoTypesSet(-5)" /><title /><updated>2013-09-11T07:48:06Z</updated><author><name /></author><content type="application/xml"><m:properties><d:Id m:type="Edm.Int32">-5</d:Id><d:Geog m:type="Edm.GeographyCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" /></d:Geog><d:GeogPoint m:null="true" /><d:GeogLine m:type="Edm.GeographyLineString"><gml:LineString gml:srsN
ame="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pos>10.5 10.5</gml:pos><gml:pos>20.5 20.5</gml:pos><gml:pos>40.5 10.5</gml:pos></gml:LineString></d:GeogLine><d:GeogPolygon m:type="Edm.GeographyPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:exterior><gml:LinearRing><gml:pos>5 15</gml:pos><gml:pos>10 40</gml:pos><gml:pos>20 10</gml:pos><gml:pos>10 5</gml:pos><gml:pos>5 15</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon></d:GeogPolygon><d:GeogCollection m:type="Edm.GeographyCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:geometryMembers><gml:MultiGeometry /><gml:MultiGeometry><gml:geometryMembers><gml:Point><gml:pos>2 1</gml:pos></gml:Point></gml:geometryMembers></gml:MultiGeometry></gml:geometryMembers></gml:MultiGeometry></d:GeogCollection><d:GeogMultiPoint m:type="Edm.GeographyMultiPoint"><gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:pointMembers><gml:Point>
<gml:pos>47.38 -122.7</gml:pos></gml:Point></gml:pointMembers></gml:MultiPoint></d:GeogMultiPoint><d:GeogMultiLine m:type="Edm.GeographyMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" /></d:GeogMultiLine><d:GeogMultiPolygon m:type="Edm.GeographyMultiPolygon"><gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:surfaceMembers><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>40 40</gml:pos><gml:pos>45 20</gml:pos><gml:pos>30 45</gml:pos><gml:pos>40 40</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon><gml:Polygon><gml:exterior><gml:LinearRing><gml:pos>35 20</gml:pos><gml:pos>20 45</gml:pos><gml:pos>5 30</gml:pos><gml:pos>10 10</gml:pos><gml:pos>30 10</gml:pos><gml:pos>35 20</gml:pos></gml:LinearRing></gml:exterior><gml:interior><gml:LinearRing><gml:pos>20 30</gml:pos><gml:pos>25 20</gml:pos><gml:pos>15 20</gml:pos><gml:pos>20 30</gml:pos></gml:LinearRing></gml:interior></gml:Polygon></gml:surfaceMembers></gml
:MultiSurface></d:GeogMultiPolygon><d:Geom m:type="Edm.GeometryPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:Geom><d:GeomPoint m:type="Edm.GeometryPoint"><gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>4513675.2944411123 6032903.5882574534</gml:pos></gml:Point></d:GeomPoint><d:GeomLine m:type="Edm.GeometryLineString"><gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pos>1 1</gml:pos><gml:pos>3 3</gml:pos><gml:pos>2 4</gml:pos><gml:pos>2 0</gml:pos></gml:LineString></d:GeomLine><d:GeomPolygon m:type="Edm.GeometryPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:GeomPolygon><d:GeomCollection m:type="Edm.GeometryCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:geometryMembers><gml:MultiGeometry /><gml:MultiGeometry><gml:geometryMembers><gml:Point><gml:pos>1 2</gml:pos></gml:Point></gml:geometryMembers></gml:MultiGeometry></gml:g
eometryMembers></gml:MultiGeometry></d:GeomCollection><d:GeomMultiPoint m:type="Edm.GeometryMultiPoint"><gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" /></d:GeomMultiPoint><d:GeomMultiLine m:type="Edm.GeometryMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:curveMembers><gml:LineString><gml:pos>10 10</gml:pos><gml:pos>20 20</gml:pos><gml:pos>10 40</gml:pos></gml:LineString><gml:LineString><gml:pos>40 40</gml:pos><gml:pos>30 30</gml:pos><gml:pos>40 20</gml:pos><gml:pos>30 10</gml:pos></gml:LineString></gml:curveMembers></gml:MultiCurve></d:GeomMultiLine><d:GeomMultiPolygon m:null="true" /></m:properties></content></entry>
+<entry xml:base="http://192.168.0.160:8080/DefaultService.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
+ <id>http://192.168.0.160:8080/DefaultService.svc/AllGeoTypesSet(-5)</id>
+ <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.AllSpatialTypes" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
+ <link rel="edit" title="AllSpatialTypes" href="AllGeoTypesSet(-5)" />
+ <title />
+ <updated>2013-09-11T07:48:06Z</updated>
+ <author>
+ <name />
+ </author>
+ <content type="application/xml">
+ <m:properties>
+ <d:Id m:type="Edm.Int32">-5</d:Id>
+ <d:Geog m:type="Edm.GeographyCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" />
+ </d:Geog>
+ <d:GeogPoint m:null="true" />
+ <d:GeogLine m:type="Edm.GeographyLineString">
+ <gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pos>10.5 10.5</gml:pos>
+ <gml:pos>20.5 20.5</gml:pos>
+ <gml:pos>40.5 10.5</gml:pos>
+ </gml:LineString>
+ </d:GeogLine>
+ <d:GeogPolygon m:type="Edm.GeographyPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>5 15</gml:pos>
+ <gml:pos>10 40</gml:pos>
+ <gml:pos>20 10</gml:pos>
+ <gml:pos>10 5</gml:pos>
+ <gml:pos>5 15</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ </gml:Polygon>
+ </d:GeogPolygon>
+ <d:GeogCollection m:type="Edm.GeographyCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:geometryMembers>
+ <gml:MultiGeometry />
+ <gml:MultiGeometry>
+ <gml:geometryMembers>
+ <gml:Point>
+ <gml:pos>2 1</gml:pos>
+ </gml:Point>
+ </gml:geometryMembers>
+ </gml:MultiGeometry>
+ </gml:geometryMembers>
+ </gml:MultiGeometry>
+ </d:GeogCollection>
+ <d:GeogMultiPoint m:type="Edm.GeographyMultiPoint">
+ <gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:pointMembers>
+ <gml:Point>
+ <gml:pos>47.38 -122.7</gml:pos>
+ </gml:Point>
+ </gml:pointMembers>
+ </gml:MultiPoint>
+ </d:GeogMultiPoint>
+ <d:GeogMultiLine m:type="Edm.GeographyMultiLineString">
+ <gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326" />
+ </d:GeogMultiLine>
+ <d:GeogMultiPolygon m:type="Edm.GeographyMultiPolygon">
+ <gml:MultiSurface gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326">
+ <gml:surfaceMembers>
+ <gml:Polygon>
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>40 40</gml:pos>
+ <gml:pos>45 20</gml:pos>
+ <gml:pos>30 45</gml:pos>
+ <gml:pos>40 40</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ </gml:Polygon>
+ <gml:Polygon>
+ <gml:exterior>
+ <gml:LinearRing>
+ <gml:pos>35 20</gml:pos>
+ <gml:pos>20 45</gml:pos>
+ <gml:pos>5 30</gml:pos>
+ <gml:pos>10 10</gml:pos>
+ <gml:pos>30 10</gml:pos>
+ <gml:pos>35 20</gml:pos>
+ </gml:LinearRing>
+ </gml:exterior>
+ <gml:interior>
+ <gml:LinearRing>
+ <gml:pos>20 30</gml:pos>
+ <gml:pos>25 20</gml:pos>
+ <gml:pos>15 20</gml:pos>
+ <gml:pos>20 30</gml:pos>
+ </gml:LinearRing>
+ </gml:interior>
+ </gml:Polygon>
+ </gml:surfaceMembers>
+ </gml:MultiSurface>
+ </d:GeogMultiPolygon>
+ <d:Geom m:type="Edm.GeometryPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:Geom>
+ <d:GeomPoint m:type="Edm.GeometryPoint">
+ <gml:Point gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>4513675.294441112 6032903.588257453</gml:pos>
+ </gml:Point>
+ </d:GeomPoint>
+ <d:GeomLine m:type="Edm.GeometryLineString">
+ <gml:LineString gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:pos>1 1</gml:pos>
+ <gml:pos>3 3</gml:pos>
+ <gml:pos>2 4</gml:pos>
+ <gml:pos>2 0</gml:pos>
+ </gml:LineString>
+ </d:GeomLine>
+ <d:GeomPolygon m:type="Edm.GeometryPolygon">
+ <gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:GeomPolygon>
+ <d:GeomCollection m:type="Edm.GeometryCollection">
+ <gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:geometryMembers>
+ <gml:MultiGeometry />
+ <gml:MultiGeometry>
+ <gml:geometryMembers>
+ <gml:Point>
+ <gml:pos>1 2</gml:pos>
+ </gml:Point>
+ </gml:geometryMembers>
+ </gml:MultiGeometry>
+ </gml:geometryMembers>
+ </gml:MultiGeometry>
+ </d:GeomCollection>
+ <d:GeomMultiPoint m:type="Edm.GeometryMultiPoint">
+ <gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0" />
+ </d:GeomMultiPoint>
+ <d:GeomMultiLine m:type="Edm.GeometryMultiLineString">
+ <gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0">
+ <gml:curveMembers>
+ <gml:LineString>
+ <gml:pos>10 10</gml:pos>
+ <gml:pos>20 20</gml:pos>
+ <gml:pos>10 40</gml:pos>
+ </gml:LineString>
+ <gml:LineString>
+ <gml:pos>40 40</gml:pos>
+ <gml:pos>30 30</gml:pos>
+ <gml:pos>40 20</gml:pos>
+ <gml:pos>30 10</gml:pos>
+ </gml:LineString>
+ </gml:curveMembers>
+ </gml:MultiCurve>
+ </d:GeomMultiLine>
+ <d:GeomMultiPolygon m:null="true" />
+ </m:properties>
+ </content>
+</entry>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.json
new file mode 100644
index 0000000..fb2e762
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://10.10.10.6:8080/DefaultService.svc/$metadata#Edm.GeographyCollection","odata.type":"Edm.GeographyCollection","value":{"type":"GeometryCollection","geometries":[{"type":"GeometryCollection","geometries":[]},{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1.0,2.0]}]}],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.xml
new file mode 100644
index 0000000..a13a98d
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogCollection.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeogCollection xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeographyCollection"><gml:MultiGeometry gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:geometryMembers><gml:MultiGeometry /><gml:MultiGeometry><gml:geometryMembers><gml:Point><gml:pos>2 1</gml:pos></gml:Point></gml:geometryMembers></gml:MultiGeometry></gml:geometryMembers></gml:MultiGeometry></d:GeogCollection>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.json
new file mode 100644
index 0000000..3f1a7fb
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeographyPolygon","value":{"type":"Polygon","coordinates":[[[5.0,15.0],[10.0,40.0],[20.0,10.0],[10.0,5.0],[5.0,15.0]]],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.xml
new file mode 100644
index 0000000..766d2c8
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-5_GeogPolygon.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeogPolygon xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeographyPolygon"><gml:Polygon gml:srsName="http://www.opengis.net/def/crs/EPSG/0/4326"><gml:exterior><gml:LinearRing><gml:pos>5 15</gml:pos><gml:pos>10 40</gml:pos><gml:pos>20 10</gml:pos><gml:pos>10 5</gml:pos><gml:pos>5 15</gml:pos></gml:LinearRing></gml:exterior></gml:Polygon></d:GeogPolygon>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.json
new file mode 100644
index 0000000..451bb53
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeometryMultiLineString","value":{"type":"MultiLineString","coordinates":[[[10.0,10.0],[20.0,20.0],[10.0,40.0]],[[40.0,40.0],[30.0,30.0],[40.0,20.0],[30.0,10.0]]],"crs":{"type":"name","properties":{"name":"EPSG:0"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.xml
new file mode 100644
index 0000000..dbaf3ad
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-6_GeomMultiLine.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeomMultiLine xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeometryMultiLineString"><gml:MultiCurve gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:curveMembers><gml:LineString><gml:pos>10 10</gml:pos><gml:pos>20 20</gml:pos><gml:pos>10 40</gml:pos></gml:LineString><gml:LineString><gml:pos>40 40</gml:pos><gml:pos>30 30</gml:pos><gml:pos>40 20</gml:pos><gml:pos>30 10</gml:pos></gml:LineString></gml:curveMembers></gml:MultiCurve></d:GeomMultiLine>
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.json
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.json b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.json
new file mode 100644
index 0000000..049d692
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.GeometryMultiPoint","value":{"type":"MultiPoint","coordinates":[[0.0,0.0]],"crs":{"type":"name","properties":{"name":"EPSG:0"}}}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.xml
new file mode 100644
index 0000000..f7b1dfb
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/v3/AllGeoTypesSet_-7_GeomMultiPoint.xml
@@ -0,0 +1,22 @@
+<?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.
+
+-->
+<d:GeomMultiPoint xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" m:type="Edm.GeometryMultiPoint"><gml:MultiPoint gml:srsName="http://www.opengis.net/def/crs/EPSG/0/0"><gml:pointMembers><gml:Point><gml:pos>0 0</gml:pos></gml:Point></gml:pointMembers></gml:MultiPoint></d:GeomMultiPoint>
[20/21] git commit: Cleanup
Posted by il...@apache.org.
Cleanup
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/eae72e80
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/eae72e80
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/eae72e80
Branch: refs/heads/olingo200
Commit: eae72e80c512ba42062e5a0c193116ed6905d317
Parents: 7b91300
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 20 09:42:21 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 20 09:42:21 2014 +0100
----------------------------------------------------------------------
.../java/org/apache/olingo/fit/utils/FSManager.java | 4 ----
.../olingo/client/core/data/AtomSerializer.java | 16 ++++++++++------
.../core/op/impl/AbstractODataDeserializer.java | 7 ++++++-
3 files changed, 16 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/eae72e80/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java b/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
index d368da9..519b73d 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/FSManager.java
@@ -70,7 +70,6 @@ public class FSManager {
}
public FileObject putInMemory(final InputStream is, final String path) throws IOException {
- System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA scrivo "+path);
final FileObject memObject = fsManager.resolveFile(MEM_PREFIX + path);
if (memObject.exists()) {
@@ -86,9 +85,6 @@ public class FSManager {
IOUtils.closeQuietly(is);
IOUtils.closeQuietly(os);
- System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA inserito valore "+
- IOUtils.toString(memObject.getContent().getInputStream()));
-
return memObject;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/eae72e80/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
index 8f2a41c..3b66c60 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
@@ -131,9 +131,11 @@ public class AtomSerializer extends AbstractAtomDealer {
writer.writeAttribute(XMLConstants.XML_NS_URI, Constants.ATTR_XML_BASE, entry.getBaseURI().toASCIIString());
}
- writer.writeStartElement(Constants.ATOM_ELEM_ID);
- writer.writeCharacters(entry.getId());
- writer.writeEndElement();
+ if (StringUtils.isNotBlank(entry.getId())) {
+ writer.writeStartElement(Constants.ATOM_ELEM_ID);
+ writer.writeCharacters(entry.getId());
+ writer.writeEndElement();
+ }
writer.writeStartElement(Constants.ATOM_ELEM_CATEGORY);
writer.writeAttribute(Constants.ATOM_ATTR_SCHEME, version.getNamespaceMap().get(ODataServiceVersion.NS_SCHEME));
@@ -193,9 +195,11 @@ public class AtomSerializer extends AbstractAtomDealer {
writer.writeEndElement();
}
- writer.writeStartElement(Constants.ATOM_ELEM_ID);
- writer.writeCharacters(feed.getId());
- writer.writeEndElement();
+ if (StringUtils.isNotBlank(feed.getId())) {
+ writer.writeStartElement(Constants.ATOM_ELEM_ID);
+ writer.writeCharacters(feed.getId());
+ writer.writeEndElement();
+ }
if (feed instanceof AbstractAtomObject) {
common(writer, (AbstractAtomObject) feed);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/eae72e80/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
index 14357cb..fdbd07d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
@@ -18,7 +18,9 @@
*/
package org.apache.olingo.client.core.op.impl;
+import java.io.ByteArrayInputStream;
import java.io.InputStream;
+import org.apache.commons.io.IOUtils;
import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Error;
@@ -108,7 +110,10 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl
protected <T> T json(final InputStream input, final Class<T> reference) {
try {
- return getObjectMapper().readValue(input, reference);
+ String maz = IOUtils.toString(input);
+ ByteArrayInputStream bais = new ByteArrayInputStream(maz.getBytes());
+ System.out.println("KKKKKKKKKKKKKKKKKK\n" + maz);
+ return getObjectMapper().readValue(bais, reference);
} catch (Exception e) {
throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
[05/21] git commit: [OLINGO-207] fix for URI Parser encoding/decoding
and service document detection
Posted by il...@apache.org.
[OLINGO-207] fix for URI Parser encoding/decoding and service document detection
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/21aa475f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/21aa475f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/21aa475f
Branch: refs/heads/olingo200
Commit: 21aa475f2c7f98da166b7d46f7fc7e2178ced4dd
Parents: ec39fd6
Author: Sven Kobler <sv...@sap.com>
Authored: Tue Mar 18 15:41:11 2014 +0100
Committer: Sven Kobler <sv...@sap.com>
Committed: Tue Mar 18 15:41:32 2014 +0100
----------------------------------------------------------------------
.../org/apache/olingo/commons/core/Decoder.java | 90 +++++++++++++
.../org/apache/olingo/commons/core/Encoder.java | 130 +++++++++++++++++++
.../apache/olingo/commons/core/DecoderTest.java | 89 +++++++++++++
.../apache/olingo/commons/core/EncoderTest.java | 106 +++++++++++++++
.../olingo/server/core/uri/parser/Parser.java | 21 +--
.../server/core/uri/parser/UriDecoder.java | 33 ++---
.../olingo/server/core/uri/RawUriTest.java | 2 +
.../core/uri/antlr/TestFullResourcePath.java | 27 ++--
8 files changed, 457 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Decoder.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Decoder.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Decoder.java
new file mode 100644
index 0000000..e7f6656
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Decoder.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * 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.
+ ******************************************************************************/
+package org.apache.olingo.commons.core;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * Decodes a Java String containing a percent-encoded UTF-8 String value
+ * into a Java String (in its internal UTF-16 encoding).
+ *
+ */
+public class Decoder {
+
+ /**
+ * Decodes a percent-encoded UTF-8 String value into a Java String
+ * (in its internal UTF-16 encoding).
+ * @param value the encoded String
+ * @return the Java String
+ * @throws IllegalArgumentException if value contains characters not representing UTF-8 bytes
+ * or ends with an unfinished percent-encoded character
+ * @throws NumberFormatException if the two characters after a percent character
+ * are not hexadecimal digits
+ */
+ public static String decode(final String value) throws IllegalArgumentException, NumberFormatException {
+ if (value == null) {
+ return value;
+ }
+
+ // Use a tiny finite-state machine to handle decoding on byte level.
+ // There are only three states:
+ // -2: normal bytes
+ // -1: a byte representing the percent character has been read
+ // >= 0: a byte representing the first half-byte of a percent-encoded byte has been read
+ // The variable holding the state is also used to store the value of the first half-byte.
+ byte[] result = new byte[value.length()];
+ int position = 0;
+ byte encodedPart = -2;
+ for (final char c : value.toCharArray()) {
+ if (c <= Byte.MAX_VALUE) {
+ if (c == '%') {
+ if (encodedPart == -2) {
+ encodedPart = -1;
+ } else {
+ throw new IllegalArgumentException();
+ }
+ } else if (encodedPart == -1) {
+ encodedPart = (byte) c;
+ } else if (encodedPart >= 0) {
+ final int i = Integer.parseInt(String.valueOf(new char[] { (char) encodedPart, c }), 16);
+ if (i >= 0) {
+ result[position++] = (byte) i;
+ } else {
+ throw new NumberFormatException();
+ }
+ encodedPart = -2;
+ } else {
+ result[position++] = (byte) c;
+ }
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+
+ if (encodedPart >= 0) {
+ throw new IllegalArgumentException();
+ }
+
+ try {
+ return new String(result, 0, position, "UTF-8");
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Encoder.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Encoder.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Encoder.java
new file mode 100644
index 0000000..99ea86a
--- /dev/null
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/Encoder.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * 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.
+ ******************************************************************************/
+package org.apache.olingo.commons.core;
+
+import java.io.UnsupportedEncodingException;
+
+/**
+ * Encodes a Java String (in its internal UTF-16 encoding) into its
+ * percent-encoded UTF-8 representation according to
+ * <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>
+ * (with consideration of its predecessor RFC 2396).
+ *
+ */
+public class Encoder {
+
+ /**
+ * Encodes a Java String (in its internal UTF-16 encoding) into its
+ * percent-encoded UTF-8 representation according to
+ * <a href="http://www.ietf.org/rfc/rfc3986.txt">RFC 3986</a>,
+ * suitable for parts of an OData path segment.
+ * @param value the Java String
+ * @return the encoded String
+ */
+ public static String encode(final String value) {
+ return encoder.encodeInternal(value);
+ }
+
+ // OData has special handling for "'", so we allow that to remain unencoded.
+ // Other sub-delims not used neither by JAX-RS nor by OData could be added
+ // if the encoding is considered to be too aggressive.
+ // RFC 3986 would also allow the gen-delims ":" and "@" to appear literally
+ // in path-segment parts.
+ private static final String ODATA_UNENCODED = "'";
+
+ // Character classes from RFC 3986
+ private final static String UNRESERVED = "-._~"; // + ALPHA + DIGIT
+ // RFC 3986 says: "For consistency, URI producers and normalizers should
+ // use uppercase hexadecimal digits for all percent-encodings."
+ private final static String[] hex = { "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", "%0A",
+ "%0B", "%0C", "%0D", "%0E", "%0F", "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17", "%18", "%19", "%1A",
+ "%1B", "%1C", "%1D", "%1E", "%1F", "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27", "%28", "%29", "%2A",
+ "%2B", "%2C", "%2D", "%2E", "%2F", "%30", "%31", "%32", "%33", "%34", "%35", "%36", "%37", "%38", "%39", "%3A",
+ "%3B", "%3C", "%3D", "%3E", "%3F", "%40", "%41", "%42", "%43", "%44", "%45", "%46", "%47", "%48", "%49", "%4A",
+ "%4B", "%4C", "%4D", "%4E", "%4F", "%50", "%51", "%52", "%53", "%54", "%55", "%56", "%57", "%58", "%59", "%5A",
+ "%5B", "%5C", "%5D", "%5E", "%5F", "%60", "%61", "%62", "%63", "%64", "%65", "%66", "%67", "%68", "%69", "%6A",
+ "%6B", "%6C", "%6D", "%6E", "%6F", "%70", "%71", "%72", "%73", "%74", "%75", "%76", "%77", "%78", "%79", "%7A",
+ "%7B", "%7C", "%7D", "%7E", "%7F", "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87", "%88",
+ "%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F", "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97", "%98",
+ "%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F", "%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7", "%A8",
+ "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF", "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7", "%B8",
+ "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF", "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7", "%C8",
+ "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF", "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7", "%D8",
+ "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF", "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7", "%E8",
+ "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF", "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7", "%F8",
+ "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF" };
+
+ private static final Encoder encoder = new Encoder(ODATA_UNENCODED);
+
+ /** characters to remain unencoded in addition to {@link #UNRESERVED} */
+ private final String unencoded;
+
+ private Encoder(final String unencoded) {
+ this.unencoded = unencoded == null ? "" : unencoded;
+ }
+
+ /**
+ * <p>Returns the percent-encoded UTF-8 representation of a String.</p>
+ * <p>In order to avoid producing percent-encoded CESU-8 (as described in
+ * the Unicode Consortium's <a href="http://www.unicode.org/reports/tr26/">
+ * Technical Report #26</a>), this is done in two steps:
+ * <ol>
+ * <li>Re-encode the characters from their Java-internal UTF-16 representations
+ * into their UTF-8 representations.</li>
+ * <li>Percent-encode each of the bytes in the UTF-8 representation.
+ * This is possible on byte level because all characters that do not have
+ * a <code>%xx</code> representation are represented in one byte in UTF-8.</li>
+ * </ol></p>
+ * @param input input String
+ * @return encoded representation
+ */
+ private String encodeInternal(final String input) {
+ StringBuilder resultStr = new StringBuilder();
+
+ try {
+ for (byte utf8Byte : input.getBytes("UTF-8")) {
+ final char character = (char) utf8Byte;
+ if (isUnreserved(character)) {
+ resultStr.append(character);
+ } else if (isUnencoded(character)) {
+ resultStr.append(character);
+ } else if (utf8Byte >= 0) {
+ resultStr.append(hex[utf8Byte]);
+ } else {
+ // case UTF-8 continuation byte
+ resultStr.append(hex[256 + utf8Byte]); // index adjusted for the usage of signed bytes
+ }
+ }
+ } catch (final UnsupportedEncodingException e) { // should never happen; UTF-8 is always there
+ return null;
+ }
+ return resultStr.toString();
+ }
+
+ private static boolean isUnreserved(final char character) {
+ return 'A' <= character && character <= 'Z' // case A..Z
+ || 'a' <= character && character <= 'z' // case a..z
+ || '0' <= character && character <= '9' // case 0..9
+ || UNRESERVED.indexOf(character) >= 0;
+ }
+
+ private boolean isUnencoded(final char character) {
+ return unencoded.indexOf(character) >= 0;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/commons-core/src/test/java/org/apache/olingo/commons/core/DecoderTest.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/DecoderTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/DecoderTest.java
new file mode 100644
index 0000000..78ac9cf
--- /dev/null
+++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/DecoderTest.java
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * 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.
+ ******************************************************************************/
+package org.apache.olingo.commons.core;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import org.junit.Test;
+
+/**
+ *
+ */
+public class DecoderTest {
+
+ @Test
+ public void asciiCharacters() {
+ assertNull(Decoder.decode(null));
+
+ String s = "azAZ019";
+ assertEquals(s, Decoder.decode(s));
+
+ s = "\"\\`{}|";
+ assertEquals(s, Decoder.decode(s));
+ }
+
+ @Test
+ public void asciiControl() {
+ assertEquals("\u0000\b\t\n\r", Decoder.decode("%00%08%09%0a%0d"));
+ }
+
+ @Test
+ public void asciiEncoded() {
+ assertEquals("<>%&", Decoder.decode("%3c%3e%25%26"));
+ assertEquals(":/?#[]@", Decoder.decode("%3a%2f%3f%23%5b%5d%40"));
+ assertEquals(" !\"$'()*+,-.", Decoder.decode("%20%21%22%24%27%28%29%2A%2B%2C%2D%2E"));
+ }
+
+ @Test
+ public void unicodeCharacters() {
+ assertEquals("€", Decoder.decode("%E2%82%AC"));
+ assertEquals("\uFDFC", Decoder.decode("%EF%B7%BC"));
+ }
+
+ @Test
+ public void charactersOutsideBmp() {
+ assertEquals(String.valueOf(Character.toChars(0x1F603)), Decoder.decode("%f0%9f%98%83"));
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void wrongCharacter() {
+ Decoder.decode("%20ä");
+ }
+
+ @Test(expected = NumberFormatException.class)
+ public void wrongPercentNumber() {
+ Decoder.decode("%-3");
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void wrongPercentPercent() {
+ Decoder.decode("%%a");
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void unfinishedPercent() {
+ Decoder.decode("%a");
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void nullByte() {
+ Decoder.decode("%\u0000ff");
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/commons-core/src/test/java/org/apache/olingo/commons/core/EncoderTest.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/EncoderTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/EncoderTest.java
new file mode 100644
index 0000000..8100b81
--- /dev/null
+++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/EncoderTest.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * 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.
+ ******************************************************************************/
+package org.apache.olingo.commons.core;
+
+import static org.junit.Assert.assertEquals;
+
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import org.junit.Test;
+
+/**
+ * Tests for percent-encoding.
+ *
+ */
+public class EncoderTest {
+
+ private final static String RFC3986_UNRESERVED = "-._~"; // + ALPHA + DIGIT
+ private final static String RFC3986_GEN_DELIMS = ":/?#[]@";
+ private final static String RFC3986_SUB_DELIMS = "!$&'()*+,;=";
+ private final static String RFC3986_RESERVED = RFC3986_GEN_DELIMS + RFC3986_SUB_DELIMS;
+
+ @Test
+ public void asciiCharacters() {
+ final String s = "azAZ019";
+ assertEquals(s, Encoder.encode(s));
+ assertEquals(s, Encoder.encode(s));
+ }
+
+ @Test
+ public void asciiControl() {
+ assertEquals("%08%09%0A%0D", Encoder.encode("\b\t\n\r"));
+ }
+
+ @Test
+ public void unsafe() {
+ assertEquals("%3C%3E%25%26", Encoder.encode("<>%&"));
+ assertEquals("%22%5C%60%7B%7D%7C", Encoder.encode("\"\\`{}|"));
+ }
+
+ @Test
+ public void rfc3986Unreserved() {
+ assertEquals(RFC3986_UNRESERVED, Encoder.encode(RFC3986_UNRESERVED));
+ }
+
+ @Test
+ public void rfc3986GenDelims() {
+ assertEquals("%3A%2F%3F%23%5B%5D%40", Encoder.encode(RFC3986_GEN_DELIMS));
+ }
+
+ @Test
+ public void rfc3986SubDelims() {
+ assertEquals("%21%24%26'%28%29%2A%2B%2C%3B%3D", Encoder.encode(RFC3986_SUB_DELIMS));
+ }
+
+ @Test
+ public void rfc3986Reserved() {
+ assertEquals("%3A%2F%3F%23%5B%5D%40%21%24%26'%28%29%2A%2B%2C%3B%3D", Encoder.encode(RFC3986_RESERVED));
+ }
+
+ @Test
+ public void unicodeCharacters() {
+ assertEquals("%E2%82%AC", Encoder.encode("€"));
+ assertEquals("%EF%B7%BC", Encoder.encode("\uFDFC")); // RIAL SIGN
+ }
+
+ @Test
+ public void charactersOutsideBmp() {
+ // Unicode characters outside the Basic Multilingual Plane are stored
+ // in a Java String in two surrogate characters.
+ final String s = String.valueOf(Character.toChars(0x1F603));
+ assertEquals("%F0%9F%98%83", Encoder.encode(s));
+ }
+
+ @Test
+ public void uriDecoding() throws URISyntaxException {
+ final String decodedValue = RFC3986_UNRESERVED + RFC3986_RESERVED + "0..1..a..z..A..Z..@"
+ + "\u2323\uFDFC" + String.valueOf(Character.toChars(0x1F603));
+
+ final String encodedPath = Encoder.encode(decodedValue) + "/" + Encoder.encode(decodedValue);
+ final String encodedQuery = Encoder.encode(decodedValue);
+ final URI uri = new URI("http://host:80/" + encodedPath + "?" + encodedQuery + "=" + encodedQuery);
+
+ assertEquals(uri.getPath(), "/" + decodedValue + "/" + decodedValue);
+ assertEquals(uri.getQuery(), decodedValue + "=" + decodedValue);
+
+ assertEquals(uri.getRawPath(), "/" + encodedPath);
+ assertEquals(uri.getRawQuery(), encodedQuery + "=" + encodedQuery);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/Parser.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/Parser.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/Parser.java
index ac2eada..e6a2256 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/Parser.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/Parser.java
@@ -1,18 +1,18 @@
-/*
+/*
* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
@@ -91,7 +91,10 @@ public class Parser {
firstSegment = uri.pathSegmentListDecoded.get(0);
}
- if (firstSegment.startsWith("$batch")) {
+ if (firstSegment.length() == 0) {
+ readQueryParameter = true;
+ context.contextUriInfo = new UriInfoImpl().setKind(UriInfoKind.service);
+ } else if (firstSegment.startsWith("$batch")) {
BatchEOFContext ctxBatchEOF =
(BatchEOFContext) parseRule(uri.pathSegmentListDecoded.get(0), ParserEntryRules.Batch);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriDecoder.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriDecoder.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriDecoder.java
index 9710b24..cf9606c 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriDecoder.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriDecoder.java
@@ -1,25 +1,23 @@
-/*
+/*
* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.olingo.server.core.uri.parser;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
@@ -27,13 +25,14 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.olingo.commons.core.Decoder;
import org.apache.olingo.server.core.uri.parser.RawUri.QueryOption;
public class UriDecoder {
static Pattern uriPattern = Pattern.compile("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?");
- public static RawUri decodeUri(final String uri, final int scipSegments) throws UriParserSyntaxException {
+ public static RawUri decodeUri(final String uri, final int scipSegments) {
RawUri rawUri = new RawUri();
Matcher m = uriPattern.matcher(uri);
@@ -52,7 +51,7 @@ public class UriDecoder {
return rawUri;
}
- private static void decode(final RawUri rawUri) throws UriParserSyntaxException {
+ private static void decode(final RawUri rawUri) {
rawUri.pathSegmentListDecoded = new ArrayList<String>();
for (String segment : rawUri.pathSegmentList) {
rawUri.pathSegmentListDecoded.add(decode(segment));
@@ -119,19 +118,13 @@ public class UriDecoder {
start = end + 1;
}
-
list.add(input.substring(start));
-
return list;
}
- public static String decode(final String encoded) throws UriParserSyntaxException {
- try {
- return URLDecoder.decode(encoded, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new UriParserSyntaxException("Error while decoding");
- }
+ public static String decode(final String encoded) {
+ return Decoder.decode(encoded);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/RawUriTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/RawUriTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/RawUriTest.java
index 89c2df7..f100eef 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/RawUriTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/RawUriTest.java
@@ -122,6 +122,8 @@ public class RawUriTest {
rawUri = runRawParser("nonServiceSegment/entitySet", 1);
checkPath(rawUri, "nonServiceSegment/entitySet", Arrays.asList("entitySet"));
+
+ rawUri = runRawParser("http://test.org/a?abc=xx+yz", 0);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/21aa475f/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
index 7cd16a0..351fd54 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
@@ -1,29 +1,29 @@
-/*
+/*
* Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
+ * 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
- *
+ * 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
+ * KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.olingo.server.core.uri.antlr;
import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
import java.util.Arrays;
import org.apache.olingo.commons.api.ODataApplicationException;
import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.core.Encoder;
import org.apache.olingo.server.api.uri.UriInfoKind;
import org.apache.olingo.server.api.uri.UriResourceKind;
import org.apache.olingo.server.api.uri.queryoption.expression.BinaryOperatorKind;
@@ -2573,7 +2573,10 @@ public class TestFullResourcePath {
@Test
public void misc() {
- testUri.run("");
+ testUri.run("")
+ .isKind(UriInfoKind.service);
+ testUri.run("/")
+ .isKind(UriInfoKind.service);
testUri.run("$all")
.isKind(UriInfoKind.all);
@@ -5079,7 +5082,7 @@ public class TestFullResourcePath {
+ "/com.sap.odata.test1.CTBase/com.sap.odata.test1.CTBase").isExSemantic(0);
testUri.runEx("ESTwoKeyNav/com.sap.odata.test1.BFCESTwoKeyNavRTESTwoKeyNav").isExSemantic(0);
-
+
// $ref
testUri.runEx("ESTwoKeyNav(PropertyInt16=1,PropertyString='2')/PropertyComplexTwoPrim/$ref").isExSemantic(0);
testUri.runEx("ESTwoKeyNav(PropertyInt16=1,PropertyString='2')/PropertyComplexTwoPrim/$count").isExSemantic(0);
@@ -5097,7 +5100,7 @@ public class TestFullResourcePath {
}
public static String encode(final String decoded) throws UnsupportedEncodingException {
- return URLEncoder.encode(decoded, "UTF-8");
+ return Encoder.encode(decoded);
}
[04/21] git commit: WIP commits before merge
Posted by il...@apache.org.
WIP commits before merge
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/aa80231b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/aa80231b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/aa80231b
Branch: refs/heads/olingo200
Commit: aa80231bcaf9275c747c35df0a301d7bfc888fc8
Parents: cb07ded
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Sat Mar 15 15:22:48 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Sat Mar 15 15:22:48 2014 +0100
----------------------------------------------------------------------
.../org/apache/olingo/client/api/Constants.java | 67 +++---
.../api/domain/geospatial/Geospatial.java | 224 ++++++++++---------
.../olingo/client/core/edm/EdmTypeInfo.java | 16 +-
.../core/op/impl/AbstractODataBinder.java | 4 +-
4 files changed, 177 insertions(+), 134 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/aa80231b/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
index 091f000..f7d75e5 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
@@ -19,6 +19,7 @@
package org.apache.olingo.client.api;
import javax.xml.XMLConstants;
+import javax.xml.namespace.QName;
/**
* Constant values related to the OData protocol.
@@ -41,19 +42,21 @@ public class Constants {
public static final String XMLNS_DATASERVICES = XMLConstants.XMLNS_ATTRIBUTE + ":d";
- public static final String PREFIX_DATASERVICES = "d:";
+ public static final String PREFIX_DATASERVICES = "d";
public static final String XMLNS_METADATA = XMLConstants.XMLNS_ATTRIBUTE + ":m";
- public static final String PREFIX_METADATA = "m:";
+ public static final String PREFIX_METADATA = "m";
public static final String XMLNS_GEORSS = XMLConstants.XMLNS_ATTRIBUTE + ":georss";
- public static final String PREFIX_GEORSS = "georss:";
+ public static final String PREFIX_GEORSS = "georss";
public static final String XMLNS_GML = XMLConstants.XMLNS_ATTRIBUTE + ":gml";
- public static final String PREFIX_GML = "gml:";
+ public static final String PREFIX_GML = "gml";
+
+ public final static String SRS_URLPREFIX = "http://www.opengis.net/def/crs/EPSG/0/";
/**
* Edit link rel value.
@@ -74,9 +77,11 @@ public class Constants {
public final static String ATTR_TYPE = "type";
- public static final String ATTR_M_TYPE = PREFIX_METADATA + ATTR_TYPE;
+ public static final String ATTR_M_TYPE = PREFIX_METADATA + ":" + ATTR_TYPE;
+
+ public final static String ATTR_NULL = "null";
- public static final String ATTR_NULL = PREFIX_METADATA + "null";
+ public static final String ATTR_M_NULL = PREFIX_METADATA + ":" + ATTR_NULL;
public static final String ATTR_XMLBASE = "xml:base";
@@ -92,39 +97,51 @@ public class Constants {
public static final String ELEM_COLLECTION = "collection";
- public static final String ATTR_SRSNAME = PREFIX_GML + "srsName";
+ public static final String ATTR_SRSNAME = "srsName";
+
+ public static final String ELEM_POINT = "Point";
+
+ public static final String ELEM_MULTIPOINT = "MultiPoint";
+
+ public static final String ELEM_POINTMEMBERS = "pointMembers";
- public static final String ELEM_POINT = PREFIX_GML + "Point";
+ public static final QName QNAME_POINTMEMBERS = new QName(Constants.NS_GML, ELEM_POINTMEMBERS);
- public static final String ELEM_MULTIPOINT = PREFIX_GML + "MultiPoint";
+ public static final String ELEM_LINESTRING = "LineString";
- public static final String ELEM_POINTMEMBERS = PREFIX_GML + "pointMembers";
+ public static final QName QNAME_LINESTRING = new QName(Constants.NS_GML, ELEM_LINESTRING);
- public static final String ELEM_LINESTRING = PREFIX_GML + "LineString";
+ public static final String ELEM_MULTILINESTRING = "MultiCurve";
- public static final String ELEM_MULTILINESTRING = PREFIX_GML + "MultiCurve";
+ public static final String ELEM_LINESTRINGMEMBERS = "curveMembers";
- public static final String ELEM_LINESTRINGMEMBERS = PREFIX_GML + "curveMembers";
+ public static final String ELEM_POLYGON = "Polygon";
- public static final String ELEM_POLYGON = PREFIX_GML + "Polygon";
+ public static final QName QNAME_POLYGON = new QName(Constants.NS_GML, ELEM_POLYGON);
- public static final String ELEM_POLYGON_EXTERIOR = PREFIX_GML + "exterior";
+ public static final String ELEM_POLYGON_EXTERIOR = "exterior";
- public static final String ELEM_POLYGON_INTERIOR = PREFIX_GML + "interior";
+ public static final QName QNAME_POLYGON_EXTERIOR = new QName(Constants.NS_GML, ELEM_POLYGON_EXTERIOR);
- public static final String ELEM_POLYGON_LINEARRING = PREFIX_GML + "LinearRing";
+ public static final String ELEM_POLYGON_INTERIOR = "interior";
- public static final String ELEM_MULTIPOLYGON = PREFIX_GML + "MultiSurface";
+ public static final QName QNAME_POLYGON_INTERIOR = new QName(Constants.NS_GML, ELEM_POLYGON_INTERIOR);
- public static final String ELEM_SURFACEMEMBERS = PREFIX_GML + "surfaceMembers";
+ public static final String ELEM_POLYGON_LINEARRING = "LinearRing";
- public static final String ELEM_GEOCOLLECTION = PREFIX_GML + "MultiGeometry";
+ public static final String ELEM_MULTIPOLYGON = "MultiSurface";
- public static final String ELEM_GEOMEMBERS = PREFIX_GML + "geometryMembers";
+ public static final String ELEM_SURFACEMEMBERS = "surfaceMembers";
- public static final String ELEM_POS = PREFIX_GML + "pos";
+ public static final String ELEM_GEOCOLLECTION = "MultiGeometry";
- public static final String ELEM_POSLIST = PREFIX_GML + "posList";
+ public static final String ELEM_GEOMEMBERS = "geometryMembers";
+
+ public static final QName QNAME_GEOMEMBERS = new QName(Constants.NS_GML, ELEM_GEOMEMBERS);
+
+ public static final String ELEM_POS = "pos";
+
+ public static final String ELEM_POSLIST = "posList";
public static final String ELEM_PROPERTY = "property";
@@ -161,6 +178,8 @@ public class Constants {
public final static String JSON_MEDIAEDIT_LINK_SUFFIX = "@odata.mediaEditLink";
+ public final static String JSON_NULL = "odata.null";
+
public final static String JSON_VALUE = "value";
public final static String JSON_URL = "url";
@@ -171,8 +190,6 @@ public class Constants {
public final static String JSON_CRS = "crs";
- public final static String JSON_GIS_URLPREFIX = "http://www.opengis.net/def/crs/EPSG/0/";
-
// Atom stuff
public final static String ATOM_ELEM_ENTRY = "entry";
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/aa80231b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Geospatial.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Geospatial.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Geospatial.java
index f9d0535..44e9558 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Geospatial.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/domain/geospatial/Geospatial.java
@@ -31,127 +31,139 @@ import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
*/
public abstract class Geospatial implements Serializable {
- public enum Dimension {
-
- GEOMETRY,
- GEOGRAPHY;
-
- }
-
- public enum Type {
-
- /**
- * The OGIS geometry type number for points.
- */
- POINT,
- /**
- * The OGIS geometry type number for lines.
- */
- LINESTRING,
- /**
- * The OGIS geometry type number for polygons.
- */
- POLYGON,
- /**
- * The OGIS geometry type number for aggregate points.
- */
- MULTIPOINT,
- /**
- * The OGIS geometry type number for aggregate lines.
- */
- MULTILINESTRING,
- /**
- * The OGIS geometry type number for aggregate polygons.
- */
- MULTIPOLYGON,
- /**
- * The OGIS geometry type number for feature collections.
- */
- GEOSPATIALCOLLECTION;
-
- }
-
- protected final Dimension dimension;
-
- protected final Type type;
+ public enum Dimension {
- /**
- * Null value means it is expected to vary per instance.
- */
- protected Integer srid;
+ GEOMETRY,
+ GEOGRAPHY;
- /**
- * Constructor.
- *
- * @param dimension dimension.
- * @param type type.
- */
- protected Geospatial(final Dimension dimension, final Type type) {
- this.dimension = dimension;
- this.type = type;
- }
+ }
+
+ public enum Type {
/**
- * Gets dimension.
- *
- * @return dimension.
- * @see Dimension
+ * The OGIS geometry type number for points.
*/
- public Dimension getDimension() {
- return dimension;
- }
-
+ POINT,
/**
- * Gets type.
- *
- * @return type.
- * @see Type
+ * The OGIS geometry type number for lines.
*/
- public Type getType() {
- return type;
- }
-
+ LINESTRING,
/**
- * Gets s-rid.
- *
- * @return s-rid.
+ * The OGIS geometry type number for polygons.
*/
- public Integer getSrid() {
- return srid;
- }
-
+ POLYGON,
/**
- * Sets s-rid.
- *
- * @param srid s-rid.
+ * The OGIS geometry type number for aggregate points.
*/
- public void setSrid(final Integer srid) {
- this.srid = srid;
- }
-
- public abstract ODataJClientEdmPrimitiveType getEdmSimpleType();
-
+ MULTIPOINT,
/**
- * {@inheritDoc }
+ * The OGIS geometry type number for aggregate lines.
*/
- @Override
- public boolean equals(final Object obj) {
- return EqualsBuilder.reflectionEquals(this, obj);
- }
-
+ MULTILINESTRING,
/**
- * {@inheritDoc }
+ * The OGIS geometry type number for aggregate polygons.
*/
- @Override
- public int hashCode() {
- return HashCodeBuilder.reflectionHashCode(this);
- }
-
+ MULTIPOLYGON,
/**
- * {@inheritDoc }
+ * The OGIS geometry type number for feature collections.
*/
- @Override
- public String toString() {
- return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
- }
+ GEOSPATIALCOLLECTION;
+
+ }
+
+ protected final Dimension dimension;
+
+ protected final Type type;
+
+ protected String crs;
+
+ /**
+ * Null value means it is expected to vary per instance.
+ */
+ protected Integer srid;
+
+ /**
+ * Constructor.
+ *
+ * @param dimension dimension.
+ * @param type type.
+ */
+ protected Geospatial(final Dimension dimension, final Type type, final String crs) {
+ this.dimension = dimension;
+ this.type = type;
+ this.crs = crs;
+ }
+
+ /**
+ * Gets dimension.
+ *
+ * @return dimension.
+ * @see Dimension
+ */
+ public Dimension getDimension() {
+ return dimension;
+ }
+
+ /**
+ * Gets type.
+ *
+ * @return type.
+ * @see Type
+ */
+ public Type getType() {
+ return type;
+ }
+
+ /**
+ * Gets CRS.
+ *
+ * @return CRS
+ */
+ public String getCrs() {
+ return crs;
+ }
+
+ /**
+ * Gets s-rid.
+ *
+ * @return s-rid.
+ */
+ public Integer getSrid() {
+ return srid;
+ }
+
+ /**
+ * Sets s-rid.
+ *
+ * @param srid s-rid.
+ */
+ public void setSrid(final Integer srid) {
+ this.srid = srid;
+ }
+
+ public abstract ODataJClientEdmPrimitiveType getEdmSimpleType();
+
+ /**
+ * {@inheritDoc }
+ */
+ @Override
+ public boolean equals(final Object obj) {
+ return EqualsBuilder.reflectionEquals(this, obj);
+ }
+
+ /**
+ * {@inheritDoc }
+ */
+ @Override
+ public int hashCode() {
+ return HashCodeBuilder.reflectionHashCode(this);
+ }
+
+ /**
+ * {@inheritDoc }
+ */
+ @Override
+ public String toString() {
+ return ReflectionToStringBuilder.toString(this, ToStringStyle.MULTI_LINE_STYLE);
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/aa80231b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
index b8e930f..2cfb2cb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
@@ -18,6 +18,7 @@
*/
package org.apache.olingo.client.core.edm;
+import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmComplexType;
@@ -73,6 +74,8 @@ public class EdmTypeInfo {
private EdmPrimitiveType primitiveType;
+ private final boolean geospatialType;
+
private EdmEnumType enumType;
private EdmComplexType complexType;
@@ -116,6 +119,9 @@ public class EdmTypeInfo {
} catch (IllegalArgumentException e) {
LOG.debug("{} does not appear to refer to an Edm primitive type", this.fullQualifiedName);
}
+ // TODO: implement Geospatial types!
+ this.geospatialType = this.fullQualifiedName.getNamespace().equals(EdmPrimitiveType.EDM_NAMESPACE)
+ && this.fullQualifiedName.getName().startsWith("Geo");
if (this.primitiveType == null && this.edm != null) {
this.enumType = this.edm.getEnumType(this.fullQualifiedName);
if (this.enumType == null) {
@@ -140,13 +146,21 @@ public class EdmTypeInfo {
}
public boolean isPrimitiveType() {
- return this.primitiveType != null;
+ return this.primitiveType != null || isGeospatialType();
}
public EdmPrimitiveType getPrimitiveType() {
return primitiveType;
}
+ public boolean isGeospatialType() {
+ return geospatialType;
+ }
+
+ public Object getGeospatialType() {
+ throw new NotImplementedException("Geospatial types missing");
+ }
+
public boolean isEnumType() {
return this.enumType != null;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/aa80231b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
index edead41..bdb968c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
@@ -367,7 +367,7 @@ public abstract class AbstractODataBinder implements ODataBinder {
public ODataProperty getODataProperty(final Element property) {
final ODataProperty res;
- final Node nullNode = property.getAttributes().getNamedItem(Constants.ATTR_NULL);
+ final Node nullNode = property.getAttributes().getNamedItem(Constants.ATTR_M_NULL);
if (nullNode == null) {
final ODataJClientEdmType edmType = StringUtils.isBlank(property.getAttribute(Constants.ATTR_M_TYPE))
@@ -463,7 +463,7 @@ public abstract class AbstractODataBinder implements ODataBinder {
protected Element toNullPropertyElement(final ODataProperty prop, final Document doc) {
final Element element = doc.createElement(Constants.PREFIX_DATASERVICES + prop.getName());
- element.setAttribute(Constants.ATTR_NULL, Boolean.toString(true));
+ element.setAttribute(Constants.ATTR_M_NULL, Boolean.toString(true));
return element;
}
[15/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
new file mode 100644
index 0000000..9a24e38
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyDeserializer.java
@@ -0,0 +1,218 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.Attribute;
+import javax.xml.stream.events.StartElement;
+import javax.xml.stream.events.XMLEvent;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.CollectionValue;
+import org.apache.olingo.client.api.data.ComplexValue;
+import org.apache.olingo.client.api.data.Value;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.ODataJClientEdmType;
+import org.apache.olingo.client.api.domain.ODataPropertyType;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+class AtomPropertyDeserializer extends AbstractAtomDealer {
+
+ private final AtomGeoValueDeserializer geoDeserializer;
+
+ public AtomPropertyDeserializer(final ODataServiceVersion version) {
+ super(version);
+ this.geoDeserializer = new AtomGeoValueDeserializer();
+ }
+
+ private Value fromPrimitive(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmType typeInfo) throws XMLStreamException {
+
+ Value value = null;
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ if (typeInfo != null && typeInfo.isGeospatialType()) {
+ final ODataJClientEdmPrimitiveType geoType = ODataJClientEdmPrimitiveType.fromValue(typeInfo.getBaseType());
+ value = new GeospatialValueImpl(this.geoDeserializer.deserialize(reader, event.asStartElement(), geoType));
+ }
+ }
+
+ if (event.isCharacters() && !event.asCharacters().isWhiteSpace()
+ && (typeInfo == null || !typeInfo.isGeospatialType())) {
+
+ value = new PrimitiveValueImpl(event.asCharacters().getData());
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return value;
+ }
+
+ private ComplexValue fromComplex(final XMLEventReader reader, final StartElement start)
+ throws XMLStreamException {
+
+ final ComplexValue value = new ComplexValueImpl();
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ value.get().add(deserialize(reader, event.asStartElement()));
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return value;
+ }
+
+ private CollectionValue fromCollection(final XMLEventReader reader, final StartElement start,
+ final ODataJClientEdmType typeInfo) throws XMLStreamException {
+
+ final CollectionValueImpl value = new CollectionValueImpl();
+
+ final ODataJClientEdmType type = typeInfo == null
+ ? null
+ : new ODataJClientEdmType(typeInfo.getBaseType());
+
+ boolean foundEndProperty = false;
+ while (reader.hasNext() && !foundEndProperty) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ switch (guessPropertyType(reader)) {
+ case COMPLEX:
+ value.get().add(fromComplex(reader, event.asStartElement()));
+ break;
+
+ case PRIMITIVE:
+ value.get().add(fromPrimitive(reader, event.asStartElement(), type));
+ break;
+
+ default:
+ // do not add null or empty values
+ }
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperty = true;
+ }
+ }
+
+ return value;
+ }
+
+ private ODataPropertyType guessPropertyType(final XMLEventReader reader) throws XMLStreamException {
+ XMLEvent child = null;
+ while (reader.hasNext() && child == null) {
+ final XMLEvent event = reader.peek();
+ if (event.isCharacters() && event.asCharacters().isWhiteSpace()) {
+ reader.nextEvent();
+ } else {
+ child = event;
+ }
+ }
+
+ ODataPropertyType type = null;
+ if (child == null) {
+ type = ODataPropertyType.PRIMITIVE;
+ } else {
+ if (child.isStartElement()) {
+ if (Constants.NS_GML.equals(child.asStartElement().getName().getNamespaceURI())) {
+ type = ODataPropertyType.PRIMITIVE;
+ } else if (elementQName.equals(child.asStartElement().getName())) {
+ type = ODataPropertyType.COLLECTION;
+ } else {
+ type = ODataPropertyType.COMPLEX;
+ }
+ } else if (child.isCharacters()) {
+ type = ODataPropertyType.PRIMITIVE;
+ } else {
+ type = ODataPropertyType.EMPTY;
+ }
+ }
+
+ return type;
+ }
+
+ public AtomPropertyImpl deserialize(final XMLEventReader reader, final StartElement start)
+ throws XMLStreamException {
+
+ final AtomPropertyImpl property = new AtomPropertyImpl();
+ property.setName(start.getName().getLocalPart());
+
+ final Attribute typeAttr = start.getAttributeByName(this.typeQName);
+ if (typeAttr != null) {
+ property.setType(typeAttr.getValue());
+ }
+
+ Value value;
+ final Attribute nullAttr = start.getAttributeByName(this.nullQName);
+ if (nullAttr == null) {
+ final ODataJClientEdmType typeInfo = StringUtils.isBlank(property.getType())
+ ? null
+ : new ODataJClientEdmType(property.getType());
+// final EdmTypeInfo typeInfo = StringUtils.isBlank(property.getType())
+// ? null
+// : new EdmTypeInfo.Builder().setTypeExpression(property.getType()).build();
+
+ final ODataPropertyType propType = typeInfo == null
+ ? guessPropertyType(reader)
+ : typeInfo.isCollection()
+ ? ODataPropertyType.COLLECTION
+ : typeInfo.isPrimitiveType()
+ ? ODataPropertyType.PRIMITIVE
+ : ODataPropertyType.COMPLEX;
+
+ switch (propType) {
+ case COLLECTION:
+ value = fromCollection(reader, start, typeInfo);
+ break;
+
+ case COMPLEX:
+ value = fromComplex(reader, start);
+ break;
+
+ case PRIMITIVE:
+ value = fromPrimitive(reader, start, typeInfo);
+ break;
+
+ case EMPTY:
+ default:
+ value = new PrimitiveValueImpl(StringUtils.EMPTY);
+ }
+ } else {
+ value = new NullValueImpl();
+ }
+ property.setValue(value);
+
+ return property;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyImpl.java
new file mode 100644
index 0000000..c2a94fb
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertyImpl.java
@@ -0,0 +1,25 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+public class AtomPropertyImpl extends AbstractPropertyImpl {
+
+ private static final long serialVersionUID = 48748492242474814L;
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertySerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertySerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertySerializer.java
new file mode 100644
index 0000000..b1ef2e6
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomPropertySerializer.java
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.CollectionValue;
+import org.apache.olingo.client.api.data.Property;
+import org.apache.olingo.client.api.data.Value;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+class AtomPropertySerializer extends AbstractAtomDealer {
+
+ private final AtomGeoValueSerializer geoSerializer;
+
+ public AtomPropertySerializer(final ODataServiceVersion version) {
+ super(version);
+ this.geoSerializer = new AtomGeoValueSerializer();
+ }
+
+ private void collection(final XMLStreamWriter writer, final CollectionValue value) throws XMLStreamException {
+ for (Value item : value.get()) {
+ writer.writeStartElement(Constants.PREFIX_DATASERVICES, Constants.ELEM_ELEMENT,
+ version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
+ value(writer, item);
+ writer.writeEndElement();
+ }
+ }
+
+ private void value(final XMLStreamWriter writer, final Value value) throws XMLStreamException {
+ if (value.isSimple()) {
+ writer.writeCharacters(value.asSimple().get());
+ } else if (value.isGeospatial()) {
+ this.geoSerializer.serialize(writer, value.asGeospatial().get());
+ } else if (value.isCollection()) {
+ collection(writer, value.asCollection());
+ } else if (value.isComplex()) {
+ for (Property property : value.asComplex().get()) {
+ property(writer, property, false);
+ }
+ }
+ }
+
+ public void property(final XMLStreamWriter writer, final Property property, final boolean standalone)
+ throws XMLStreamException {
+
+ writer.writeStartElement(Constants.PREFIX_DATASERVICES, property.getName(),
+ version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
+ if (standalone) {
+ namespaces(writer);
+ }
+ if (StringUtils.isNotBlank(property.getType())) {
+ writer.writeAttribute(Constants.PREFIX_METADATA, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
+ Constants.ATTR_TYPE, property.getType());
+ }
+
+ if (property.getValue().isNull()) {
+ writer.writeAttribute(Constants.PREFIX_METADATA, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
+ Constants.ATTR_NULL, Boolean.TRUE.toString());
+ } else {
+ value(writer, property.getValue());
+ }
+
+ writer.writeEndElement();
+ }
+
+ public void property(final XMLStreamWriter writer, final Property property) throws XMLStreamException {
+ property(writer, property, true);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
index 7a358dc..8f2a41c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
@@ -18,167 +18,240 @@
*/
package org.apache.olingo.client.core.data;
+import java.io.Writer;
+import java.util.Collections;
import java.util.List;
import javax.xml.XMLConstants;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.entity.ContentType;
-import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.Constants;
import org.apache.olingo.client.api.data.Entry;
+import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.Link;
-import org.apache.olingo.client.api.utils.XMLUtils;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-public class AtomSerializer {
+public class AtomSerializer extends AbstractAtomDealer {
- private final ODataClient client;
+ private static final XMLOutputFactory FACTORY = XMLOutputFactory.newInstance();
- public AtomSerializer(final ODataClient client) {
- this.client = client;
+ private final AtomPropertySerializer propSerializer;
+
+ public AtomSerializer(final ODataServiceVersion version) {
+ super(version);
+ this.propSerializer = new AtomPropertySerializer(version);
}
- public <T extends AbstractPayloadObject> Element serialize(final T obj) throws ParserConfigurationException {
- if (obj instanceof AtomEntryImpl) {
- return entry((AtomEntryImpl) obj);
- } else if (obj instanceof AtomFeedImpl) {
- return feed((AtomFeedImpl) obj);
- } else {
- throw new IllegalArgumentException("Unsupported Atom object for standalone serialization: " + obj);
- }
+ private void startDocument(final XMLStreamWriter writer, final String rootElement) throws XMLStreamException {
+ writer.writeStartDocument();
+ writer.setDefaultNamespace(Constants.NS_ATOM);
+
+ writer.writeStartElement(rootElement);
+
+ namespaces(writer);
}
- private void setLinks(final Element entry, final List<Link> links) throws ParserConfigurationException {
- for (Link link : links) {
- final Element linkElem = entry.getOwnerDocument().createElement(Constants.ATOM_ELEM_LINK);
+ private void property(final Writer outWriter, final Property property) throws XMLStreamException {
+ final XMLStreamWriter writer = FACTORY.createXMLStreamWriter(outWriter);
+
+ writer.writeStartDocument();
- linkElem.setAttribute(Constants.ATTR_REL, link.getRel());
- linkElem.setAttribute(Constants.ATTR_TITLE, link.getTitle());
- linkElem.setAttribute(Constants.ATTR_HREF, link.getHref());
+ propSerializer.property(writer, property);
+ writer.writeEndDocument();
+ writer.flush();
+ }
+
+ private void links(final XMLStreamWriter writer, final List<Link> links) throws XMLStreamException {
+ for (Link link : links) {
+ writer.writeStartElement(Constants.ATOM_ELEM_LINK);
+
+ if (StringUtils.isNotBlank(link.getRel())) {
+ writer.writeAttribute(Constants.ATTR_REL, link.getRel());
+ }
+ if (StringUtils.isNotBlank(link.getTitle())) {
+ writer.writeAttribute(Constants.ATTR_TITLE, link.getTitle());
+ }
+ if (StringUtils.isNotBlank(link.getHref())) {
+ writer.writeAttribute(Constants.ATTR_HREF, link.getHref());
+ }
if (StringUtils.isNotBlank(link.getType())) {
- linkElem.setAttribute(Constants.ATTR_TYPE, link.getType());
+ writer.writeAttribute(Constants.ATTR_TYPE, link.getType());
}
if (link.getInlineEntry() != null || link.getInlineFeed() != null) {
- final Element inline = entry.getOwnerDocument().createElement(Constants.ATOM_ELEM_INLINE);
- linkElem.appendChild(inline);
+ writer.writeStartElement(Constants.PREFIX_METADATA, Constants.ATOM_ELEM_INLINE,
+ version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
if (link.getInlineEntry() != null) {
- inline.appendChild(entry.getOwnerDocument().importNode(
- entry((AtomEntryImpl) link.getInlineEntry()), true));
+ writer.writeStartElement(Constants.ATOM_ELEM_ENTRY);
+ entry(writer, link.getInlineEntry());
+ writer.writeEndElement();
}
if (link.getInlineFeed() != null) {
- inline.appendChild(entry.getOwnerDocument().importNode(
- feed((AtomFeedImpl) link.getInlineFeed()), true));
+ writer.writeStartElement(Constants.ATOM_ELEM_FEED);
+ feed(writer, link.getInlineFeed());
+ writer.writeEndElement();
}
+
+ writer.writeEndElement();
}
- entry.appendChild(linkElem);
+ writer.writeEndElement();
}
}
- private Element entry(final AtomEntryImpl entry) throws ParserConfigurationException {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document doc = builder.newDocument();
-
- final Element entryElem = doc.createElement(Constants.ATOM_ELEM_ENTRY);
- entryElem.setAttribute(XMLConstants.XMLNS_ATTRIBUTE, Constants.NS_ATOM);
- entryElem.setAttribute(Constants.XMLNS_METADATA,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
- entryElem.setAttribute(Constants.XMLNS_DATASERVICES,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
- entryElem.setAttribute(Constants.XMLNS_GML, Constants.NS_GML);
- entryElem.setAttribute(Constants.XMLNS_GEORSS, Constants.NS_GEORSS);
- if (entry.getBaseURI() != null) {
- entryElem.setAttribute(Constants.ATTR_XMLBASE, entry.getBaseURI().toASCIIString());
+ private void common(final XMLStreamWriter writer, final AbstractAtomObject object) throws XMLStreamException {
+ if (StringUtils.isNotBlank(object.getTitle())) {
+ writer.writeStartElement(Constants.ATOM_ELEM_TITLE);
+ writer.writeAttribute(Constants.ATTR_TYPE, TYPE_TEXT);
+ writer.writeCharacters(object.getTitle());
+ writer.writeEndElement();
}
- doc.appendChild(entryElem);
-
- final Element category = doc.createElement(Constants.ATOM_ELEM_CATEGORY);
- category.setAttribute(Constants.ATOM_ATTR_TERM, entry.getType());
- category.setAttribute(Constants.ATOM_ATTR_SCHEME,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_SCHEME));
- entryElem.appendChild(category);
-
- if (StringUtils.isNotBlank(entry.getTitle())) {
- final Element title = doc.createElement(Constants.ATOM_ELEM_TITLE);
- title.appendChild(doc.createTextNode(entry.getTitle()));
- entryElem.appendChild(title);
+
+ if (StringUtils.isNotBlank(object.getSummary())) {
+ writer.writeStartElement(Constants.ATOM_ELEM_SUMMARY);
+ writer.writeAttribute(Constants.ATTR_TYPE, "text");
+ writer.writeCharacters(object.getSummary());
+ writer.writeEndElement();
+ }
+ }
+
+ private void properties(final XMLStreamWriter writer, final List<Property> properties) throws XMLStreamException {
+ for (Property property : properties) {
+ propSerializer.property(writer, property, false);
}
+ }
- if (StringUtils.isNotBlank(entry.getSummary())) {
- final Element summary = doc.createElement(Constants.ATOM_ELEM_SUMMARY);
- summary.appendChild(doc.createTextNode(entry.getSummary()));
- entryElem.appendChild(summary);
+ private void entry(final XMLStreamWriter writer, final Entry entry) throws XMLStreamException {
+ if (entry.getBaseURI() != null) {
+ writer.writeAttribute(XMLConstants.XML_NS_URI, Constants.ATTR_XML_BASE, entry.getBaseURI().toASCIIString());
}
- setLinks(entryElem, entry.getAssociationLinks());
- setLinks(entryElem, entry.getNavigationLinks());
- setLinks(entryElem, entry.getMediaEditLinks());
+ writer.writeStartElement(Constants.ATOM_ELEM_ID);
+ writer.writeCharacters(entry.getId());
+ writer.writeEndElement();
+
+ writer.writeStartElement(Constants.ATOM_ELEM_CATEGORY);
+ writer.writeAttribute(Constants.ATOM_ATTR_SCHEME, version.getNamespaceMap().get(ODataServiceVersion.NS_SCHEME));
+ writer.writeAttribute(Constants.ATOM_ATTR_TERM, entry.getType());
+ writer.writeEndElement();
+
+ if (entry instanceof AbstractAtomObject) {
+ common(writer, (AbstractAtomObject) entry);
+ }
- final Element content = doc.createElement(Constants.ATOM_ELEM_CONTENT);
+ links(writer, entry.getAssociationLinks());
+ links(writer, entry.getNavigationLinks());
+ links(writer, entry.getMediaEditLinks());
+
+ writer.writeStartElement(Constants.ATOM_ELEM_CONTENT);
if (entry.isMediaEntry()) {
if (StringUtils.isNotBlank(entry.getMediaContentType())) {
- content.setAttribute(Constants.ATTR_TYPE, entry.getMediaContentType());
+ writer.writeAttribute(Constants.ATTR_TYPE, entry.getMediaContentType());
}
if (StringUtils.isNotBlank(entry.getMediaContentSource())) {
- content.setAttribute(Constants.ATOM_ATTR_SRC, entry.getMediaContentSource());
- }
- if (content.getAttributes().getLength() > 0) {
- entryElem.appendChild(content);
+ writer.writeAttribute(Constants.ATOM_ATTR_SRC, entry.getMediaContentSource());
}
+ writer.writeEndElement();
- if (entry.getMediaEntryProperties() != null) {
- entryElem.appendChild(doc.importNode(entry.getMediaEntryProperties(), true));
- }
+ writer.writeStartElement(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES);
+ properties(writer, entry.getProperties());
} else {
- content.setAttribute(Constants.ATTR_TYPE, ContentType.APPLICATION_XML.getMimeType());
- if (entry.getContent() != null) {
- content.appendChild(doc.importNode(entry.getContent(), true));
- }
- entryElem.appendChild(content);
+ writer.writeAttribute(Constants.ATTR_TYPE, ContentType.APPLICATION_XML.getMimeType());
+ writer.writeStartElement(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES);
+ properties(writer, entry.getProperties());
+ writer.writeEndElement();
}
+ writer.writeEndElement();
+ }
+
+ private void entry(final Writer outWriter, final Entry entry) throws XMLStreamException {
+ final XMLStreamWriter writer = FACTORY.createXMLStreamWriter(outWriter);
- return entryElem;
+ startDocument(writer, Constants.ATOM_ELEM_ENTRY);
+
+ entry(writer, entry);
+
+ writer.writeEndElement();
+ writer.writeEndDocument();
+ writer.flush();
}
- private Element feed(final AtomFeedImpl feed) throws ParserConfigurationException {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document doc = builder.newDocument();
-
- final Element feedElem = doc.createElement(Constants.ATOM_ELEM_FEED);
- feedElem.setAttribute(XMLConstants.XMLNS_ATTRIBUTE, Constants.NS_ATOM);
- feedElem.setAttribute(Constants.XMLNS_METADATA,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
- feedElem.setAttribute(Constants.XMLNS_DATASERVICES,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
- feedElem.setAttribute(Constants.XMLNS_GML, Constants.NS_GML);
- feedElem.setAttribute(Constants.XMLNS_GEORSS, Constants.NS_GEORSS);
+ private void feed(final XMLStreamWriter writer, final Feed feed) throws XMLStreamException {
if (feed.getBaseURI() != null) {
- feedElem.setAttribute(Constants.ATTR_XMLBASE, feed.getBaseURI().toASCIIString());
+ writer.writeAttribute(XMLConstants.XML_NS_URI, Constants.ATTR_XML_BASE, feed.getBaseURI().toASCIIString());
}
- doc.appendChild(feedElem);
- if (StringUtils.isNotBlank(feed.getTitle())) {
- final Element title = doc.createElement(Constants.ATOM_ELEM_TITLE);
- title.appendChild(doc.createTextNode(feed.getTitle()));
- feedElem.appendChild(title);
+ if (feed.getCount() != null) {
+ writer.writeStartElement(
+ version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_COUNT);
+ writer.writeCharacters(Integer.toString(feed.getCount()));
+ writer.writeEndElement();
}
- if (StringUtils.isNotBlank(feed.getSummary())) {
- final Element summary = doc.createElement(Constants.ATOM_ELEM_SUMMARY);
- summary.appendChild(doc.createTextNode(feed.getSummary()));
- feedElem.appendChild(summary);
+ writer.writeStartElement(Constants.ATOM_ELEM_ID);
+ writer.writeCharacters(feed.getId());
+ writer.writeEndElement();
+
+ if (feed instanceof AbstractAtomObject) {
+ common(writer, (AbstractAtomObject) feed);
}
for (Entry entry : feed.getEntries()) {
- feedElem.appendChild(doc.importNode(entry((AtomEntryImpl) entry), true));
+ writer.writeStartElement(Constants.ATOM_ELEM_ENTRY);
+ entry(writer, entry);
+ writer.writeEndElement();
+ }
+
+ if (feed.getNext() != null) {
+ final LinkImpl next = new LinkImpl();
+ next.setRel(Constants.NEXT_LINK_REL);
+ next.setHref(feed.getNext().toASCIIString());
+
+ links(writer, Collections.<Link>singletonList(next));
}
+ }
+
+ private void feed(final Writer outWriter, final Feed feed) throws XMLStreamException {
+ final XMLStreamWriter writer = FACTORY.createXMLStreamWriter(outWriter);
+
+ startDocument(writer, Constants.ATOM_ELEM_FEED);
+
+ feed(writer, feed);
+
+ writer.writeEndElement();
+ writer.writeEndDocument();
+ writer.flush();
+ }
- return feedElem;
+ private void link(final Writer outWriter, final Link link) throws XMLStreamException {
+ final XMLStreamWriter writer = FACTORY.createXMLStreamWriter(outWriter);
+
+ writer.writeStartDocument();
+ writer.writeNamespace(
+ Constants.PREFIX_DATASERVICES, version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
+
+ writer.writeStartElement(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_URI);
+ writer.writeCharacters(link.getHref());
+ writer.writeEndElement();
+
+ writer.writeEndDocument();
+ writer.flush();
+ }
+
+ public <T> void write(final Writer writer, final T obj) throws XMLStreamException {
+ if (obj instanceof Feed) {
+ feed(writer, (Feed) obj);
+ } else if (obj instanceof Entry) {
+ entry(writer, (Entry) obj);
+ } else if (obj instanceof Property) {
+ property(writer, (Property) obj);
+ } else if (obj instanceof Link) {
+ link(writer, (Link) obj);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/CollectionValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/CollectionValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/CollectionValueImpl.java
new file mode 100644
index 0000000..fa2e23c
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/CollectionValueImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.client.api.data.CollectionValue;
+import org.apache.olingo.client.api.data.Value;
+
+public class CollectionValueImpl extends AbstractValue implements CollectionValue {
+
+ private final List<Value> value = new ArrayList<Value>();
+
+ @Override
+ public boolean isCollection() {
+ return true;
+ }
+
+ @Override
+ public List<Value> get() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ComplexValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ComplexValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ComplexValueImpl.java
new file mode 100644
index 0000000..9f4f5ab
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/ComplexValueImpl.java
@@ -0,0 +1,40 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.client.api.data.ComplexValue;
+import org.apache.olingo.client.api.data.Property;
+
+public class ComplexValueImpl extends AbstractValue implements ComplexValue {
+
+ private final List<Property> value = new ArrayList<Property>();
+
+ @Override
+ public boolean isComplex() {
+ return true;
+ }
+
+ @Override
+ public List<Property> get() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeoUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeoUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeoUtils.java
new file mode 100644
index 0000000..e0574be
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeoUtils.java
@@ -0,0 +1,90 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+
+public final class GeoUtils {
+
+ private GeoUtils() {
+ // Empty private constructor for static utility classes
+ }
+
+ public static Geospatial.Dimension getDimension(final ODataJClientEdmPrimitiveType type) {
+ Geospatial.Dimension dimension;
+
+ switch (type) {
+ case Geography:
+ case GeographyCollection:
+ case GeographyLineString:
+ case GeographyMultiLineString:
+ case GeographyPoint:
+ case GeographyMultiPoint:
+ case GeographyPolygon:
+ case GeographyMultiPolygon:
+ dimension = Geospatial.Dimension.GEOGRAPHY;
+ break;
+
+ default:
+ dimension = Geospatial.Dimension.GEOMETRY;
+ }
+
+ return dimension;
+ }
+
+ public static ODataJClientEdmPrimitiveType getType(final Geospatial.Dimension dimension, final String elementName) {
+ ODataJClientEdmPrimitiveType type = null;
+
+ if (Constants.ELEM_POINT.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyPoint
+ : ODataJClientEdmPrimitiveType.GeometryPoint;
+ } else if (Constants.ELEM_MULTIPOINT.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyMultiPoint
+ : ODataJClientEdmPrimitiveType.GeometryMultiPoint;
+ } else if (Constants.ELEM_LINESTRING.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyLineString
+ : ODataJClientEdmPrimitiveType.GeometryLineString;
+ } else if (Constants.ELEM_MULTILINESTRING.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyMultiLineString
+ : ODataJClientEdmPrimitiveType.GeometryMultiLineString;
+ } else if (Constants.ELEM_POLYGON.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyPolygon
+ : ODataJClientEdmPrimitiveType.GeometryPolygon;
+ } else if (Constants.ELEM_MULTIPOLYGON.equals(elementName)) {
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyMultiPolygon
+ : ODataJClientEdmPrimitiveType.GeometryMultiPolygon;
+ } else if (Constants.ELEM_GEOCOLLECTION.equals(elementName)
+ || Constants.ELEM_GEOMEMBERS.equals(elementName)) {
+
+ type = dimension == Geospatial.Dimension.GEOGRAPHY
+ ? ODataJClientEdmPrimitiveType.GeographyCollection
+ : ODataJClientEdmPrimitiveType.GeometryCollection;
+ }
+
+ return type;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialJSONHandler.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialJSONHandler.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialJSONHandler.java
deleted file mode 100644
index b5ec987..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialJSONHandler.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.data;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonNode;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import javax.xml.parsers.DocumentBuilder;
-import org.apache.olingo.client.api.ODataClient;
-import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
-import org.apache.olingo.client.api.domain.geospatial.Geospatial;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-final class GeospatialJSONHandler {
-
- /**
- * Logger.
- */
- private static final Logger LOG = LoggerFactory.getLogger(GeospatialJSONHandler.class);
-
- private GeospatialJSONHandler() {
- // Empty private constructor for static utility classes
- }
-
- private static Element deserializePoint(final Document document, final Iterator<JsonNode> itor) {
- final Element point = document.createElementNS(Constants.NS_GML, Constants.ELEM_POINT);
-
- final Element ppos = document.createElementNS(Constants.NS_GML, Constants.ELEM_POS);
- point.appendChild(ppos);
- if (itor.hasNext()) {
- ppos.appendChild(document.createTextNode(itor.next().asText() + " " + itor.next().asText()));
- }
-
- return point;
- }
-
- private static void appendPoses(final Element parent, final Document document, final Iterator<JsonNode> itor) {
- while (itor.hasNext()) {
- final Iterator<JsonNode> lineItor = itor.next().elements();
- final Element pos = document.createElementNS(Constants.NS_GML, Constants.ELEM_POS);
- parent.appendChild(pos);
- pos.appendChild(document.createTextNode(lineItor.next().asText() + " " + lineItor.next().asText()));
- }
- }
-
- private static Element deserializeLineString(final Document document, final Iterator<JsonNode> itor) {
- final Element lineString = document.createElementNS(Constants.NS_GML, Constants.ELEM_LINESTRING);
- if (!itor.hasNext()) {
- lineString.appendChild(document.createElementNS(Constants.NS_GML, Constants.ELEM_POSLIST));
- }
-
- appendPoses(lineString, document, itor);
-
- return lineString;
- }
-
- private static Element deserializePolygon(final Document document, final Iterator<JsonNode> itor) {
- final Element polygon = document.createElementNS(Constants.NS_GML, Constants.ELEM_POLYGON);
-
- if (itor.hasNext()) {
- final Iterator<JsonNode> extItor = itor.next().elements();
- final Element exterior = document.createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_EXTERIOR);
- polygon.appendChild(exterior);
- final Element extLR = document.createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_LINEARRING);
- exterior.appendChild(extLR);
-
- appendPoses(extLR, document, extItor);
- }
-
- if (itor.hasNext()) {
- final Iterator<JsonNode> intItor = itor.next().elements();
- final Element interior = document.createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_INTERIOR);
- polygon.appendChild(interior);
- final Element intLR = document.createElementNS(
- Constants.NS_GML, Constants.ELEM_POLYGON_LINEARRING);
- interior.appendChild(intLR);
-
- appendPoses(intLR, document, intItor);
- }
-
- return polygon;
- }
-
- public static void deserialize(final JsonNode node, final Element parent, final String type) {
- final Iterator<JsonNode> cooItor = node.has(Constants.JSON_COORDINATES)
- ? node.get(Constants.JSON_COORDINATES).elements()
- : Collections.<JsonNode>emptyList().iterator();
-
- Element root = null;
- final ODataJClientEdmPrimitiveType edmSimpleType = ODataJClientEdmPrimitiveType.fromValue(type);
- switch (edmSimpleType) {
- case GeographyPoint:
- case GeometryPoint:
- root = deserializePoint(parent.getOwnerDocument(), cooItor);
- break;
-
- case GeographyMultiPoint:
- case GeometryMultiPoint:
- root = parent.getOwnerDocument().createElementNS(Constants.NS_GML, Constants.ELEM_MULTIPOINT);
- if (cooItor.hasNext()) {
- final Element pointMembers = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_POINTMEMBERS);
- root.appendChild(pointMembers);
- while (cooItor.hasNext()) {
- final Iterator<JsonNode> mpItor = cooItor.next().elements();
- pointMembers.appendChild(deserializePoint(parent.getOwnerDocument(), mpItor));
- }
- }
- break;
-
- case GeographyLineString:
- case GeometryLineString:
- root = deserializeLineString(parent.getOwnerDocument(), cooItor);
- break;
-
- case GeographyMultiLineString:
- case GeometryMultiLineString:
- root = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_MULTILINESTRING);
- if (cooItor.hasNext()) {
- final Element lineStringMembers = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_LINESTRINGMEMBERS);
- root.appendChild(lineStringMembers);
- while (cooItor.hasNext()) {
- final Iterator<JsonNode> mlsItor = cooItor.next().elements();
- lineStringMembers.appendChild(deserializeLineString(parent.getOwnerDocument(), mlsItor));
- }
- }
- break;
-
- case GeographyPolygon:
- case GeometryPolygon:
- root = deserializePolygon(parent.getOwnerDocument(), cooItor);
- break;
-
- case GeographyMultiPolygon:
- case GeometryMultiPolygon:
- root = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_MULTIPOLYGON);
- if (cooItor.hasNext()) {
- final Element surfaceMembers = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_SURFACEMEMBERS);
- root.appendChild(surfaceMembers);
- while (cooItor.hasNext()) {
- final Iterator<JsonNode> mpItor = cooItor.next().elements();
- surfaceMembers.appendChild(deserializePolygon(parent.getOwnerDocument(), mpItor));
- }
- }
- break;
-
- case GeographyCollection:
- case GeometryCollection:
- root = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_GEOCOLLECTION);
- if (node.has(Constants.JSON_GEOMETRIES)) {
- final Iterator<JsonNode> geoItor = node.get(Constants.JSON_GEOMETRIES).elements();
- if (geoItor.hasNext()) {
- final Element geometryMembers = parent.getOwnerDocument().createElementNS(
- Constants.NS_GML, Constants.ELEM_GEOMEMBERS);
- root.appendChild(geometryMembers);
-
- while (geoItor.hasNext()) {
- final JsonNode geo = geoItor.next();
- final String collItemType = geo.get(Constants.ATTR_TYPE).asText();
- final String callAsType;
- if (ODataJClientEdmPrimitiveType.GeographyCollection.name().equals(collItemType)
- || ODataJClientEdmPrimitiveType.GeometryCollection.name().equals(collItemType)) {
-
- callAsType = collItemType;
- } else {
- callAsType =
- (edmSimpleType == ODataJClientEdmPrimitiveType.GeographyCollection ? "Geography" : "Geometry")
- + collItemType;
- }
-
- deserialize(geo, geometryMembers, ODataJClientEdmPrimitiveType.namespace() + "." + callAsType);
- }
- }
- }
- break;
-
- default:
- }
-
- if (root != null) {
- parent.appendChild(root);
- if (node.has(Constants.JSON_CRS)) {
- root.setAttribute(Constants.ATTR_SRSNAME,
- Constants.JSON_GIS_URLPREFIX
- + node.get(Constants.JSON_CRS).get(Constants.PROPERTIES).get(Constants.NAME).
- asText().split(":")[1]);
- }
- }
- }
-
- private static void serializeCrs(final JsonGenerator jgen, final Node node) throws IOException {
- if (node.getAttributes().getNamedItem(Constants.ATTR_SRSNAME) != null) {
- final String srsName = node.getAttributes().getNamedItem(Constants.ATTR_SRSNAME).getTextContent();
- final int prefIdx = srsName.indexOf(Constants.JSON_GIS_URLPREFIX);
- final String crsValue = srsName.substring(prefIdx + Constants.JSON_GIS_URLPREFIX.length());
-
- jgen.writeObjectFieldStart(Constants.JSON_CRS);
- jgen.writeStringField(Constants.ATTR_TYPE, Constants.NAME);
- jgen.writeObjectFieldStart(Constants.PROPERTIES);
- jgen.writeStringField(Constants.NAME, "EPSG:" + crsValue);
- jgen.writeEndObject();
- jgen.writeEndObject();
- }
- }
-
- private static void serializePoint(final JsonGenerator jgen, final Node node) throws IOException {
- for (String coord : node.getTextContent().split(" ")) {
- jgen.writeNumber(coord);
- }
- }
-
- private static void serializeLineString(final JsonGenerator jgen, final Element node) throws IOException {
- for (Element element : XMLUtils.getChildElements(node, Constants.ELEM_POS)) {
- jgen.writeStartArray();
- serializePoint(jgen, element);
- jgen.writeEndArray();
- }
- }
-
- private static void serializePolygon(final JsonGenerator jgen, final Element node) throws IOException {
- for (Element exterior : XMLUtils.getChildElements(node, Constants.ELEM_POLYGON_EXTERIOR)) {
- jgen.writeStartArray();
- serializeLineString(jgen,
- XMLUtils.getChildElements(exterior, Constants.ELEM_POLYGON_LINEARRING).get(0));
- jgen.writeEndArray();
-
- }
- for (Element interior : XMLUtils.getChildElements(node, Constants.ELEM_POLYGON_INTERIOR)) {
- jgen.writeStartArray();
- serializeLineString(jgen,
- XMLUtils.getChildElements(interior, Constants.ELEM_POLYGON_LINEARRING).get(0));
- jgen.writeEndArray();
-
- }
- }
-
- public static void serialize(final ODataClient client,
- final JsonGenerator jgen, final Element node, final String type) throws IOException {
-
- final ODataJClientEdmPrimitiveType edmSimpleType = ODataJClientEdmPrimitiveType.fromValue(type);
-
- if (edmSimpleType.equals(ODataJClientEdmPrimitiveType.GeographyCollection)
- || edmSimpleType.equals(ODataJClientEdmPrimitiveType.GeometryCollection)) {
-
- jgen.writeStringField(Constants.ATTR_TYPE, ODataJClientEdmPrimitiveType.GeometryCollection.name());
- } else {
- final int yIdx = edmSimpleType.name().indexOf('y');
- final String itemType = edmSimpleType.name().substring(yIdx + 1);
- jgen.writeStringField(Constants.ATTR_TYPE, itemType);
- }
-
- Element root = null;
- switch (edmSimpleType) {
- case GeographyPoint:
- case GeometryPoint:
- root = XMLUtils.getChildElements(node, Constants.ELEM_POINT).get(0);
-
- jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
- serializePoint(jgen, XMLUtils.getChildElements(root, Constants.ELEM_POS).get(0));
- jgen.writeEndArray();
- break;
-
- case GeographyMultiPoint:
- case GeometryMultiPoint:
- root = XMLUtils.getChildElements(node, Constants.ELEM_MULTIPOINT).get(0);
-
- jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
-
- final List<Element> pMembs = XMLUtils.getChildElements(root, Constants.ELEM_POINTMEMBERS);
- if (pMembs != null && !pMembs.isEmpty()) {
- for (Element point : XMLUtils.getChildElements(pMembs.get(0), Constants.ELEM_POINT)) {
- jgen.writeStartArray();
- serializePoint(jgen, XMLUtils.getChildElements(point, Constants.ELEM_POS).get(0));
- jgen.writeEndArray();
- }
- }
-
- jgen.writeEndArray();
- break;
-
- case GeographyLineString:
- case GeometryLineString:
- root = XMLUtils.getChildElements(node, Constants.ELEM_LINESTRING).get(0);
-
- jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
- serializeLineString(jgen, root);
- jgen.writeEndArray();
- break;
-
- case GeographyMultiLineString:
- case GeometryMultiLineString:
- root = XMLUtils.getChildElements(node, Constants.ELEM_MULTILINESTRING).get(0);
-
- jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
-
- final List<Element> lMembs = XMLUtils.getChildElements(root, Constants.ELEM_LINESTRINGMEMBERS);
- if (lMembs != null && !lMembs.isEmpty()) {
- for (Element lineStr : XMLUtils.getChildElements(lMembs.get(0), Constants.ELEM_LINESTRING)) {
- jgen.writeStartArray();
- serializeLineString(jgen, lineStr);
- jgen.writeEndArray();
- }
- }
-
- jgen.writeEndArray();
- break;
-
- case GeographyPolygon:
- case GeometryPolygon:
- root = XMLUtils.getChildElements(node, Constants.ELEM_POLYGON).get(0);
-
- jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
- serializePolygon(jgen, root);
- jgen.writeEndArray();
- break;
-
- case GeographyMultiPolygon:
- case GeometryMultiPolygon:
- root = XMLUtils.getChildElements(node, Constants.ELEM_MULTIPOLYGON).get(0);
-
- jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
-
- final List<Element> mpMembs = XMLUtils.getChildElements(root, Constants.ELEM_SURFACEMEMBERS);
- if (mpMembs != null & !mpMembs.isEmpty()) {
- for (Element pol : XMLUtils.getChildElements(mpMembs.get(0), Constants.ELEM_POLYGON)) {
- jgen.writeStartArray();
- serializePolygon(jgen, pol);
- jgen.writeEndArray();
- }
- }
-
- jgen.writeEndArray();
- break;
-
- case GeographyCollection:
- case GeometryCollection:
- root = XMLUtils.getChildElements(node, Constants.ELEM_GEOCOLLECTION).get(0);
-
- final List<Element> cMembs = XMLUtils.getChildElements(root, Constants.ELEM_GEOMEMBERS);
- if (cMembs != null && !cMembs.isEmpty()) {
- jgen.writeArrayFieldStart(Constants.JSON_GEOMETRIES);
-
- for (Node geom : XMLUtils.getChildNodes(cMembs.get(0), Node.ELEMENT_NODE)) {
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document doc = builder.newDocument();
-
- final Element fakeParent = doc.createElementNS(
- client.getServiceVersion().getNamespaceMap().
- get(ODataServiceVersion.NS_DATASERVICES),
- Constants.PREFIX_DATASERVICES + "fake");
- fakeParent.appendChild(doc.importNode(geom, true));
-
- final ODataJClientEdmPrimitiveType callAsType = XMLUtils.simpleTypeForNode(
- edmSimpleType == ODataJClientEdmPrimitiveType.GeographyCollection
- ? Geospatial.Dimension.GEOGRAPHY : Geospatial.Dimension.GEOMETRY,
- geom);
-
- jgen.writeStartObject();
- serialize(client, jgen, fakeParent, callAsType.toString());
- jgen.writeEndObject();
- } catch (Exception e) {
- LOG.warn("While serializing {}", XMLUtils.getSimpleName(geom), e);
- }
- }
-
- jgen.writeEndArray();
- }
- break;
-
- default:
- }
-
- if (root != null) {
- serializeCrs(jgen, root);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialValueImpl.java
new file mode 100644
index 0000000..040b4f8
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/GeospatialValueImpl.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import org.apache.olingo.client.api.data.GeospatialValue;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+
+public class GeospatialValueImpl extends AbstractValue implements GeospatialValue {
+
+ private final Geospatial value;
+
+ public GeospatialValueImpl(final Geospatial value) {
+ this.value = value;
+ }
+
+ @Override
+ public boolean isGeospatial() {
+ return true;
+ }
+
+ @Override
+ public Geospatial get() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONDOMTreeUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONDOMTreeUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONDOMTreeUtils.java
deleted file mode 100644
index f70cae9..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONDOMTreeUtils.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * 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.
- */
-package org.apache.olingo.client.core.data;
-
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.databind.JsonNode;
-import java.io.IOException;
-import java.util.Iterator;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.client.api.ODataClient;
-import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
-import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * DOM tree utilities class for JSON.
- */
-final class JSONDOMTreeUtils {
-
- private JSONDOMTreeUtils() {
- // Empty private constructor for static utility classes
- }
-
- /**
- * Recursively builds DOM content out of JSON subtree rooted at given node.
- *
- * @param client OData client.
- * @param document root of the DOM document being built
- * @param parent parent of the nodes being generated during this step
- * @param node JSON node to be used as source for DOM elements
- */
- public static void buildSubtree(final ODataClient client, final Element parent, final JsonNode node) {
- final Iterator<String> fieldNameItor = node.fieldNames();
- final Iterator<JsonNode> nodeItor = node.elements();
- while (nodeItor.hasNext()) {
- final JsonNode child = nodeItor.next();
- final String name = fieldNameItor.hasNext() ? fieldNameItor.next() : "";
-
- // no name? array item
- if (name.isEmpty()) {
- final Element element = parent.getOwnerDocument().createElementNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES),
- Constants.PREFIX_DATASERVICES + Constants.ELEM_ELEMENT);
- parent.appendChild(element);
-
- if (child.isValueNode()) {
- if (child.isNull()) {
- element.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_NULL, Boolean.toString(true));
- } else {
- element.appendChild(parent.getOwnerDocument().createTextNode(child.asText()));
- }
- }
-
- if (child.isContainerNode()) {
- buildSubtree(client, element, child);
- }
- } else if (!name.contains("@") && !Constants.JSON_TYPE.equals(name)) {
- final Element property = parent.getOwnerDocument().createElementNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES),
- Constants.PREFIX_DATASERVICES + name);
- parent.appendChild(property);
-
- boolean typeSet = false;
- if (node.hasNonNull(name + "@" + Constants.JSON_TYPE)) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE,
- node.get(name + "@" + Constants.JSON_TYPE).textValue());
- typeSet = true;
- }
-
- if (child.isNull()) {
- property.setAttributeNS(client.getServiceVersion().getNamespaceMap().
- get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_NULL, Boolean.toString(true));
- } else if (child.isValueNode()) {
- if (!typeSet) {
- if (child.isInt()) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE, ODataJClientEdmPrimitiveType.Int32.toString());
- }
- if (child.isLong()) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE, ODataJClientEdmPrimitiveType.Int64.toString());
- }
- if (child.isBigDecimal()) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE, ODataJClientEdmPrimitiveType.Decimal.toString());
- }
- if (child.isDouble()) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE, ODataJClientEdmPrimitiveType.Double.toString());
- }
- if (child.isBoolean()) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE, ODataJClientEdmPrimitiveType.Boolean.toString());
- }
- if (child.isTextual()) {
- property.setAttributeNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE, ODataJClientEdmPrimitiveType.String.toString());
- }
- }
-
- property.appendChild(parent.getOwnerDocument().createTextNode(child.asText()));
- } else if (child.isContainerNode()) {
- if (!typeSet && child.hasNonNull(Constants.JSON_TYPE)) {
- property.
- setAttributeNS(client.getServiceVersion().getNamespaceMap().
- get(ODataServiceVersion.NS_METADATA),
- Constants.ATTR_M_TYPE,
- child.get(Constants.JSON_TYPE).textValue());
- }
-
- final String type = property.getAttribute(Constants.ATTR_M_TYPE);
- if (StringUtils.isNotBlank(type) && ODataJClientEdmPrimitiveType.isGeospatial(type)) {
- if (ODataJClientEdmPrimitiveType.Geography.toString().equals(type)
- || ODataJClientEdmPrimitiveType.Geometry.toString().equals(type)) {
-
- final String geoType = child.get(Constants.ATTR_TYPE).textValue();
- property.setAttributeNS(client.getServiceVersion().getNamespaceMap().get(
- ODataServiceVersion.NS_METADATA), Constants.ATTR_M_TYPE,
- geoType.startsWith("Geo")
- ? ODataJClientEdmPrimitiveType.namespace() + "." + geoType
- : type + geoType);
- }
-
- if (child.has(Constants.JSON_COORDINATES) || child.has(Constants.JSON_GEOMETRIES)) {
- GeospatialJSONHandler.deserialize(
- child, property, property.getAttribute(Constants.ATTR_M_TYPE));
- }
- } else {
- buildSubtree(client, property, child);
- }
- }
- }
- }
- }
-
- /**
- * Serializes DOM content as JSON.
- *
- * @param client OData client.
- * @param jgen JSON generator.
- * @param content content.
- * @throws IOException in case of write error.
- */
- public static void writeSubtree(final ODataClient client, final JsonGenerator jgen, final Node content)
- throws IOException {
-
- writeSubtree(client, jgen, content, false);
- }
-
- /**
- * Serializes DOM content as JSON.
- *
- * @param client OData client.
- * @param jgen JSON generator.
- * @param content content.
- * @param propType whether to output type information in the way needed for property values or not.
- * @throws IOException in case of write error.
- */
- public static void writeSubtree(
- final ODataClient client, final JsonGenerator jgen, final Node content, final boolean propType)
- throws IOException {
-
- for (Node child : XMLUtils.getChildNodes(content, Node.ELEMENT_NODE)) {
- final String childName = XMLUtils.getSimpleName(child);
-
- final Node typeAttr = child.getAttributes().getNamedItem(Constants.ATTR_M_TYPE);
- if (typeAttr != null && ODataJClientEdmPrimitiveType.isGeospatial(typeAttr.getTextContent())) {
- jgen.writeStringField(propType ? Constants.JSON_TYPE : childName + "@" + Constants.JSON_TYPE,
- typeAttr.getTextContent());
-
- jgen.writeObjectFieldStart(childName);
- GeospatialJSONHandler.serialize(client, jgen, (Element) child, typeAttr.getTextContent());
- jgen.writeEndObject();
- } else if (XMLUtils.hasOnlyTextChildNodes(child)) {
- if (child.hasChildNodes()) {
- final String out;
- if (typeAttr == null) {
- out = child.getChildNodes().item(0).getNodeValue();
- } else {
- final ODataJClientEdmPrimitiveType type = ODataJClientEdmPrimitiveType.fromValue(typeAttr.getTextContent());
- final ODataPrimitiveValue value = client.getPrimitiveValueBuilder().setType(type).
- setText(child.getChildNodes().item(0).getNodeValue()).build();
- out = value.toString();
-
- jgen.writeStringField(childName + "@" + Constants.JSON_TYPE, type.toString());
- }
- jgen.writeStringField(childName, out);
- } else {
- if (child.getAttributes().getNamedItem(Constants.ATTR_NULL) == null) {
- if (typeAttr != null && ODataJClientEdmPrimitiveType.String.toString().equals(typeAttr.getTextContent())) {
- jgen.writeStringField(childName + "@" + Constants.JSON_TYPE, typeAttr.getTextContent());
- jgen.writeStringField(childName, StringUtils.EMPTY);
- } else {
- jgen.writeArrayFieldStart(childName);
- jgen.writeEndArray();
- }
- } else {
- jgen.writeNullField(childName);
- }
- }
- } else {
- if (XMLUtils.hasElementsChildNode(child)) {
- jgen.writeArrayFieldStart(childName);
-
- for (Node nephew : XMLUtils.getChildNodes(child, Node.ELEMENT_NODE)) {
- if (XMLUtils.hasOnlyTextChildNodes(nephew)) {
- jgen.writeString(nephew.getChildNodes().item(0).getNodeValue());
- } else {
- jgen.writeStartObject();
- writeSubtree(client, jgen, nephew);
- jgen.writeEndObject();
- }
- }
-
- jgen.writeEndArray();
- } else {
- jgen.writeObjectFieldStart(childName);
- if (typeAttr != null) {
- jgen.writeStringField(Constants.JSON_TYPE, typeAttr.getTextContent());
- }
-
- writeSubtree(client, jgen, child);
-
- jgen.writeEndObject();
- }
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryDeserializer.java
index 035a059..378d676 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryDeserializer.java
@@ -23,31 +23,29 @@ import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.ObjectCodec;
import com.fasterxml.jackson.databind.DeserializationContext;
+import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import java.net.URI;
+import java.text.ParseException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.Link;
import org.apache.olingo.client.api.domain.ODataLinkType;
import org.apache.olingo.client.api.domain.ODataOperation;
-import org.apache.olingo.client.api.utils.XMLUtils;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
/**
* Reads JSON string into an entry.
* <br/>
* If metadata information is available, the corresponding entry fields and content will be populated.
*/
-public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImpl> {
+public class JSONEntryDeserializer extends AbstractJsonDeserializer<JSONEntryImpl> {
private String getTitle(final Map.Entry<String, JsonNode> entry) {
return entry.getKey().substring(0, entry.getKey().indexOf('@'));
@@ -61,18 +59,17 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
final JsonNode inline = tree.path(entryNamePrefix);
if (inline instanceof ObjectNode) {
- final JsonParser inlineParser = inline.traverse();
- inlineParser.setCodec(codec);
- link.setInlineEntry(inlineParser.readValuesAs(JSONEntryImpl.class).next());
+ link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
+ link.setInlineEntry(inline.traverse(codec).readValuesAs(JSONEntryImpl.class).next());
}
if (inline instanceof ArrayNode) {
+ link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString());
+
final JSONFeedImpl feed = new JSONFeedImpl();
final Iterator<JsonNode> entries = ((ArrayNode) inline).elements();
while (entries.hasNext()) {
- final JsonParser inlineParser = entries.next().traverse();
- inlineParser.setCodec(codec);
- feed.getEntries().add(inlineParser.readValuesAs(JSONEntryImpl.class).next());
+ feed.getEntries().add(entries.next().traverse(codec).readValuesAs(JSONEntryImpl.class).next());
}
link.setInlineFeed(feed);
@@ -91,10 +88,6 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
throw new JsonParseException("Expected OData Entity, found EntitySet", parser.getCurrentLocation());
}
- final boolean isMediaEntry =
- tree.hasNonNull(Constants.JSON_MEDIAREAD_LINK)
- && tree.hasNonNull(Constants.JSON_MEDIA_CONTENT_TYPE);
-
final JSONEntryImpl entry = new JSONEntryImpl();
if (tree.hasNonNull(Constants.JSON_METADATA)) {
@@ -118,7 +111,11 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
}
if (tree.hasNonNull(Constants.JSON_ID)) {
- entry.setId(tree.get(Constants.JSON_ID).textValue());
+ try {
+ entry.setId(tree.get(Constants.JSON_ID).textValue());
+ } catch (ParseException e) {
+ throw new JsonMappingException("While parsing Atom entry or feed common elements", e);
+ }
tree.remove(Constants.JSON_ID);
}
@@ -145,10 +142,6 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
tree.remove(Constants.JSON_MEDIAREAD_LINK);
}
if (tree.hasNonNull(Constants.JSON_MEDIAEDIT_LINK)) {
- /*final LinkImpl link = new LinkImpl();
- link.setHref(tree.get(Constants.JSON_MEDIAEDIT_LINK).textValue());
- entry.getMediaEditLinks().add(link);*/
-
tree.remove(Constants.JSON_MEDIAEDIT_LINK);
}
if (tree.hasNonNull(Constants.JSON_MEDIA_CONTENT_TYPE)) {
@@ -157,15 +150,15 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
}
final Set<String> toRemove = new HashSet<String>();
- final Iterator<Map.Entry<String, JsonNode>> itor = tree.fields();
- while (itor.hasNext()) {
+ for (final Iterator<Map.Entry<String, JsonNode>> itor = tree.fields(); itor.hasNext();) {
final Map.Entry<String, JsonNode> field = itor.next();
if (field.getKey().endsWith(Constants.JSON_NAVIGATION_LINK_SUFFIX)) {
final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field));
- link.setRel(client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL)
- + getTitle(field));
+ link.setRel(client.getServiceVersion().getNamespaceMap().
+ get(ODataServiceVersion.NAVIGATION_LINK_REL) + getTitle(field));
+
if (field.getValue().isValueNode()) {
link.setHref(field.getValue().textValue());
link.setType(ODataLinkType.ENTITY_NAVIGATION.toString());
@@ -173,18 +166,18 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
// NOTE: this should be expected to happen, but it isn't - at least up to OData 4.0
/* if (field.getValue().isArray()) {
* link.setHref(field.getValue().asText());
- * link.setType(LinkType.ENTITY_SET_NAVIGATION.toString());
+ * link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString());
* } */
+
entry.getNavigationLinks().add(link);
toRemove.add(field.getKey());
- toRemove.add(setInline(field.getKey(),
- Constants.JSON_NAVIGATION_LINK_SUFFIX, tree, parser.getCodec(), link));
+ toRemove.add(setInline(field.getKey(), Constants.JSON_NAVIGATION_LINK_SUFFIX, tree, parser.getCodec(), link));
} else if (field.getKey().endsWith(Constants.JSON_ASSOCIATION_LINK_SUFFIX)) {
final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field));
- link.setRel(client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL)
- + getTitle(field));
+ link.setRel(client.getServiceVersion().getNamespaceMap().
+ get(ODataServiceVersion.ASSOCIATION_LINK_REL) + getTitle(field));
link.setHref(field.getValue().textValue());
link.setType(ODataLinkType.ASSOCIATION.toString());
entry.getAssociationLinks().add(link);
@@ -193,15 +186,27 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
} else if (field.getKey().endsWith(Constants.JSON_MEDIAEDIT_LINK_SUFFIX)) {
final LinkImpl link = new LinkImpl();
link.setTitle(getTitle(field));
- link.setRel(client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL)
- + getTitle(field));
+ link.setRel(client.getServiceVersion().getNamespaceMap().
+ get(ODataServiceVersion.MEDIA_EDIT_LINK_REL) + getTitle(field));
link.setHref(field.getValue().textValue());
link.setType(ODataLinkType.MEDIA_EDIT.toString());
entry.getMediaEditLinks().add(link);
+ if (tree.has(link.getTitle() + Constants.JSON_MEDIA_ETAG_SUFFIX)) {
+ link.setMediaETag(tree.get(link.getTitle() + Constants.JSON_MEDIA_ETAG_SUFFIX).asText());
+ toRemove.add(link.getTitle() + Constants.JSON_MEDIA_ETAG_SUFFIX);
+ }
+
+ toRemove.add(field.getKey());
+ toRemove.add(setInline(field.getKey(), Constants.JSON_MEDIAEDIT_LINK_SUFFIX, tree, parser.getCodec(), link));
+ } else if (field.getKey().endsWith(Constants.JSON_MEDIA_CONTENT_TYPE)) {
+ final String linkTitle = getTitle(field);
+ for (Link link : entry.getMediaEditLinks()) {
+ if (linkTitle.equals(link.getTitle())) {
+ ((LinkImpl) link).setType(field.getValue().asText());
+ }
+ }
toRemove.add(field.getKey());
- toRemove.add(setInline(field.getKey(),
- Constants.JSON_MEDIAEDIT_LINK_SUFFIX, tree, parser.getCodec(), link));
} else if (field.getKey().charAt(0) == '#') {
final ODataOperation operation = new ODataOperation();
operation.setMetadataAnchor(field.getKey());
@@ -217,23 +222,21 @@ public class JSONEntryDeserializer extends ODataJacksonDeserializer<JSONEntryImp
}
tree.remove(toRemove);
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document document = builder.newDocument();
-
- final Element properties = document.createElementNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA),
- Constants.ELEM_PROPERTIES);
-
- JSONDOMTreeUtils.buildSubtree(client, properties, tree);
+ String type = null;
+ for (final Iterator<Map.Entry<String, JsonNode>> itor = tree.fields(); itor.hasNext();) {
+ final Map.Entry<String, JsonNode> field = itor.next();
- if (isMediaEntry) {
- entry.setMediaEntryProperties(properties);
+ if (type == null && field.getKey().endsWith(Constants.JSON_TYPE_SUFFIX)) {
+ type = field.getValue().asText();
} else {
- entry.setContent(properties);
+ final JSONPropertyImpl property = new JSONPropertyImpl();
+ property.setName(field.getKey());
+ property.setType(type);
+ type = null;
+
+ value(property, field.getValue());
+ entry.getProperties().add(property);
}
- } catch (ParserConfigurationException e) {
- throw new JsonParseException("Cannot build entry content", parser.getCurrentLocation(), e);
}
return entry;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryImpl.java
index 3b7aeda..f82ac12 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntryImpl.java
@@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.net.URI;
+import java.text.ParseException;
import org.apache.olingo.client.api.uri.SegmentType;
/**
@@ -37,6 +38,10 @@ public class JSONEntryImpl extends AbstractEntry {
private String mediaETag;
+ public void setId(String id) throws ParseException {
+ this.setCommonProperty("id", id);
+ }
+
@JsonIgnore
@Override
public URI getBaseURI() {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
index 36d0d84..c6a7b27 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
@@ -26,15 +26,16 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Link;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.domain.ODataLinkType;
/**
* Writes out JSON string from an entry.
*/
-public class JSONEntrySerializer extends ODataJacksonSerializer<JSONEntryImpl> {
+public class JSONEntrySerializer extends AbstractJsonSerializer<JSONEntryImpl> {
@Override
protected void doSerialize(final JSONEntryImpl entry, final JsonGenerator jgen, final SerializerProvider provider)
@@ -45,55 +46,41 @@ public class JSONEntrySerializer extends ODataJacksonSerializer<JSONEntryImpl> {
if (entry.getMetadata() != null) {
jgen.writeStringField(Constants.JSON_METADATA, entry.getMetadata().toASCIIString());
}
- if (StringUtils.isNotBlank(entry.getType())) {
- jgen.writeStringField(Constants.JSON_TYPE, entry.getType());
- }
if (entry.getId() != null) {
jgen.writeStringField(Constants.JSON_ID, entry.getId());
}
- if (entry.getSelfLink() != null) {
- jgen.writeStringField(Constants.JSON_READ_LINK, entry.getSelfLink().getHref());
- }
-
- if (entry.getEditLink() != null) {
- jgen.writeStringField(Constants.JSON_EDIT_LINK, entry.getEditLink().getHref());
- }
-
- if (entry.getMediaContentSource() != null) {
- jgen.writeStringField(Constants.JSON_MEDIAREAD_LINK, entry.getMediaContentSource());
- }
- if (entry.getMediaContentType() != null) {
- jgen.writeStringField(Constants.JSON_MEDIA_CONTENT_TYPE, entry.getMediaContentType());
- }
-
final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();
for (Link link : entry.getNavigationLinks()) {
+ ODataLinkType type = null;
+ try {
+ type = ODataLinkType.fromString(client.getServiceVersion(), link.getRel(), link.getType());
+ } catch (IllegalArgumentException e) {
+ // ignore
+ }
+
+ if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
+ final List<String> uris;
+ if (entitySetLinks.containsKey(link.getTitle())) {
+ uris = entitySetLinks.get(link.getTitle());
+ } else {
+ uris = new ArrayList<String>();
+ entitySetLinks.put(link.getTitle(), uris);
+ }
+ uris.add(link.getHref());
+ } else {
+ jgen.writeStringField(link.getTitle() + Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
+ }
+
if (link.getInlineEntry() != null) {
jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
} else if (link.getInlineFeed() != null) {
- jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
- } else {
- ODataLinkType type = null;
- try {
- type = ODataLinkType.fromString(client, link.getRel(), link.getType());
- } catch (IllegalArgumentException e) {
- // ignore
- }
-
- if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
- final List<String> uris;
- if (entitySetLinks.containsKey(link.getTitle())) {
- uris = entitySetLinks.get(link.getTitle());
- } else {
- uris = new ArrayList<String>();
- entitySetLinks.put(link.getTitle(), uris);
- }
- uris.add(link.getHref());
- } else {
- jgen.writeStringField(link.getTitle() + Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
+ jgen.writeArrayFieldStart(link.getTitle());
+ for (Entry subEntry : link.getInlineFeed().getEntries()) {
+ jgen.writeObject(subEntry);
}
+ jgen.writeEndArray();
}
}
for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
@@ -113,14 +100,16 @@ public class JSONEntrySerializer extends ODataJacksonSerializer<JSONEntryImpl> {
jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
}
if (link.getInlineFeed() != null) {
- jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
+ jgen.writeArrayFieldStart(link.getTitle());
+ for (Entry subEntry : link.getInlineFeed().getEntries()) {
+ jgen.writeObject(subEntry);
+ }
+ jgen.writeEndArray();
}
}
- if (entry.getMediaEntryProperties() == null) {
- JSONDOMTreeUtils.writeSubtree(client, jgen, entry.getContent());
- } else {
- JSONDOMTreeUtils.writeSubtree(client, jgen, entry.getMediaEntryProperties());
+ for (Property property : entry.getProperties()) {
+ property(jgen, property, property.getName());
}
jgen.writeEndObject();
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedDeserializer.java
index d58e7a7..3667fea 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedDeserializer.java
@@ -33,7 +33,7 @@ import org.apache.olingo.client.api.Constants;
* <br/>
* If metadata information is available, the corresponding entry fields and content will be populated.
*/
-public class JSONFeedDeserializer extends ODataJacksonDeserializer<JSONFeedImpl> {
+public class JSONFeedDeserializer extends AbstractJsonDeserializer<JSONFeedImpl> {
@Override
protected JSONFeedImpl doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
@@ -50,11 +50,11 @@ public class JSONFeedDeserializer extends ODataJacksonDeserializer<JSONFeedImpl>
if (tree.hasNonNull(Constants.JSON_METADATA)) {
feed.setMetadata(URI.create(tree.get(Constants.JSON_METADATA).textValue()));
}
- if (tree.hasNonNull("odata.count")) {
- feed.setCount(tree.get("odata.count").asInt());
+ if (tree.hasNonNull(Constants.JSON_COUNT)) {
+ feed.setCount(tree.get(Constants.JSON_COUNT).asInt());
}
- if (tree.hasNonNull("odata.nextLink")) {
- feed.setNext(URI.create(tree.get("odata.nextLink").textValue()));
+ if (tree.hasNonNull(Constants.JSON_NEXT_LINK)) {
+ feed.setNext(URI.create(tree.get(Constants.JSON_NEXT_LINK).textValue()));
}
if (tree.hasNonNull(Constants.JSON_VALUE)) {
[06/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
index 4bd0ea9..f50d400 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/constants/ODataServiceVersion.java
@@ -71,6 +71,7 @@ public enum ODataServiceVersion {
{
put(NS_METADATA, "http://docs.oasis-open.org/odata/ns/metadata");
put(NS_DATA, "http://docs.oasis-open.org/odata/ns/data");
+ put(NS_SCHEME, "http://docs.oasis-open.org/odata/ns/scheme");
}
});
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2855137..0efff22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,7 +65,7 @@
<properties>
<commons.codec.version>1.9</commons.codec.version>
<commons.io.version>2.4</commons.io.version>
- <commons.lang3.version>3.3</commons.lang3.version>
+ <commons.lang3.version>3.3.1</commons.lang3.version>
<commons.logging.version>1.1.3</commons.logging.version>
<commons.vfs.version>2.0</commons.vfs.version>
@@ -202,6 +202,12 @@
<version>1.9.5</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>xmlunit</groupId>
+ <artifactId>xmlunit</artifactId>
+ <version>1.5</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</dependencyManagement>
[18/21] git commit: Merge branch 'olingo200' of
https://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4 into
olingo200
Posted by il...@apache.org.
Merge branch 'olingo200' of https://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4 into olingo200
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/df77c31a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/df77c31a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/df77c31a
Branch: refs/heads/olingo200
Commit: df77c31a6ecb1aad6d0428e841c24954c38737bc
Parents: 381b417 87b5e7d
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Wed Mar 19 17:58:20 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Wed Mar 19 17:58:20 2014 +0100
----------------------------------------------------------------------
.../odatajclient/testservice/utils/Commons.java | 4 +-
.../org/apache/olingo/fit/AbstractServices.java | 506 +++++++++++--
.../olingo/fit/utils/AbstractUtilities.java | 358 +++++----
.../org/apache/olingo/fit/utils/Commons.java | 9 +-
.../org/apache/olingo/fit/utils/Constants.java | 4 +
.../org/apache/olingo/fit/utils/FSManager.java | 8 +
.../apache/olingo/fit/utils/JSONUtilities.java | 93 ++-
.../olingo/fit/utils/XMLEventReaderWrapper.java | 24 +-
.../apache/olingo/fit/utils/XMLUtilities.java | 709 +++++++++++-------
fit/src/main/resources/v3/Car/12/$value.bin | 0
.../main/resources/v3/Car/12/entity.full.json | 13 +
fit/src/main/resources/v3/Car/12/entity.xml | 39 +
fit/src/main/resources/v3/Car/14/$value.bin | 0
fit/src/main/resources/v3/Car/15/$value.bin | 0
.../main/resources/v3/Car/15/entity.full.json | 13 +
fit/src/main/resources/v3/Car/15/entity.xml | 39 +
.../resources/v3/Customer/-7/entity.full.json | 487 ++++++++++++
.../resources/v3/Customer/-9/entity.full.json | 750 +++++++++++++++++++
.../main/resources/v3/Customer/-9/entity.xml | 565 ++++++++++++++
.../main/resources/v3/Order/-8/entity.full.json | 17 +
fit/src/main/resources/v3/Order/-8/entity.xml | 43 ++
.../streamed/ODataStreamUpdateRequestImpl.java | 3 +-
.../core/it/v3/MediaEntityTestITCase.java | 34 -
.../client/core/it/v3/PropertyTestITCase.java | 17 -
lib/client-core/src/test/resources/sample.png | Bin 0 -> 25566 bytes
pom.xml | 1 +
26 files changed, 3185 insertions(+), 551 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/df77c31a/pom.xml
----------------------------------------------------------------------
[21/21] git commit: [OLINGO-200] V3 Atom and JSON (de)serializers
replaced are now DOM free - all tests succeed
Posted by il...@apache.org.
[OLINGO-200] V3 Atom and JSON (de)serializers replaced are now DOM free - all tests succeed
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/4431a80d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/4431a80d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/4431a80d
Branch: refs/heads/olingo200
Commit: 4431a80db50c60eb48f47eb59a69f88e4c24f413
Parents: eae72e8 5243d5f
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Mar 20 11:26:41 2014 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Mar 20 11:26:41 2014 +0100
----------------------------------------------------------------------
.../olingo/fit/utils/AbstractUtilities.java | 1 +
.../org/apache/olingo/fit/utils/FSManager.java | 2 +-
.../apache/olingo/fit/utils/XMLUtilities.java | 6 ++--
.../org/apache/olingo/client/api/Constants.java | 2 ++
.../client/core/data/AbstractAtomDealer.java | 7 +++++
.../client/core/data/AtomDeserializer.java | 30 ++++++++++++++++++++
.../olingo/client/core/data/AtomSerializer.java | 9 ++++--
.../client/core/data/JSONEntrySerializer.java | 5 +++-
.../core/data/JSONPropertyDeserializer.java | 17 ++---------
.../core/op/impl/AbstractODataBinder.java | 6 ++--
.../core/op/impl/AbstractODataDeserializer.java | 9 ++----
.../client/core/it/AbstractTestITCase.java | 6 ++--
pom.xml | 1 -
13 files changed, 65 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --cc fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index 2d93c67,2d93c67..74653a1
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@@ -423,6 -423,6 +423,7 @@@ public abstract class AbstractUtilitie
public Response createFaultResponse(final String accept, final Exception e) {
LOG.debug("Create fault response about .... ", e);
++ e.printStackTrace();
final Response.ResponseBuilder builder = Response.serverError();
if (version == ODataVersion.v3) {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
----------------------------------------------------------------------
diff --cc lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
index 97f833f,091f000..7d9b4a2
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/Constants.java
@@@ -147,6 -128,6 +147,8 @@@ public class Constants
public static final String ELEM_PROPERTY = "property";
++ public static final String ELEM_LINKS = "links";
++
public static final String ELEM_URI = "uri";
// JSON stuff
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
index 64fa3d8,0000000..eb62b44
mode 100644,000000..100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AbstractAtomDealer.java
@@@ -1,80 -1,0 +1,87 @@@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+
+abstract class AbstractAtomDealer {
+
+ protected static final String TYPE_TEXT = "text";
+
+ protected final ODataServiceVersion version;
+
+ protected final QName etagQName;
+
+ protected final QName inlineQName;
+
+ protected final QName actionQName;
+
+ protected final QName propertiesQName;
+
+ protected final QName typeQName;
+
+ protected final QName nullQName;
+
+ protected final QName elementQName;
+
+ protected final QName countQName;
+
++ protected final QName uriQName;
++ protected final QName nextQName;
++
+ public AbstractAtomDealer(final ODataServiceVersion version) {
+ this.version = version;
+
+ this.etagQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ATTR_ETAG);
+ this.inlineQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_INLINE);
+ this.actionQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_ACTION);
+ this.propertiesQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.PROPERTIES);
+ this.typeQName = new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATTR_TYPE);
+ this.nullQName = new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATTR_NULL);
+ this.elementQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_ELEMENT);
+ this.countQName =
+ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA), Constants.ATOM_ELEM_COUNT);
++ this.uriQName =
++ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_URI);
++ this.nextQName =
++ new QName(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.NEXT_LINK_REL);
+ }
+
+ protected void namespaces(final XMLStreamWriter writer) throws XMLStreamException {
+ writer.writeNamespace(StringUtils.EMPTY, Constants.NS_ATOM);
+ writer.writeNamespace(XMLConstants.XML_NS_PREFIX, XMLConstants.XML_NS_URI);
+ writer.writeNamespace(Constants.PREFIX_METADATA, version.getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
+ writer.writeNamespace(
+ Constants.PREFIX_DATASERVICES, version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
+ writer.writeNamespace(Constants.PREFIX_GML, Constants.NS_GML);
+ writer.writeNamespace(Constants.PREFIX_GEORSS, Constants.NS_GEORSS);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
index d80bcf3,0b5e974..86289f3
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomDeserializer.java
@@@ -89,162 -74,109 +89,190 @@@ public class AtomDeserializer extends A
}
}
- public AtomEntryImpl entry(final Element input) {
- if (!Constants.ATOM_ELEM_ENTRY.equals(input.getNodeName())) {
- return null;
+ private void inline(final XMLEventReader reader, final StartElement start, final LinkImpl link)
+ throws XMLStreamException {
+
+ boolean foundEndElement = false;
+ while (reader.hasNext() && !foundEndElement) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement() && inlineQName.equals(event.asStartElement().getName())) {
+ StartElement inline = null;
+ while (reader.hasNext() && inline == null) {
+ final XMLEvent innerEvent = reader.peek();
+ if (innerEvent.isCharacters() && innerEvent.asCharacters().isWhiteSpace()) {
+ reader.nextEvent();
+ } else if (innerEvent.isStartElement()) {
+ inline = innerEvent.asStartElement();
+ }
+ }
+ if (inline != null) {
+ if (Constants.QNAME_ATOM_ELEM_ENTRY.equals(inline.getName())) {
+ link.setInlineEntry(entry(reader, inline));
+ }
+ if (Constants.QNAME_ATOM_ELEM_FEED.equals(inline.getName())) {
+ link.setInlineFeed(feed(reader, inline));
+ }
+ }
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndElement = true;
+ }
}
+ }
- final AtomEntryImpl entry = new AtomEntryImpl();
++ private XMLLinkCollectionImpl linkCollection(final InputStream input) throws XMLStreamException {
++ final XMLEventReader reader = FACTORY.createXMLEventReader(input);
+
- common(input, entry);
++ final XMLLinkCollectionImpl linkCollection = new XMLLinkCollectionImpl();
+
- final String etag = input.getAttribute(Constants.ATOM_ATTR_ETAG);
- if (StringUtils.isNotBlank(etag)) {
- entry.setETag(etag);
- }
++ boolean isURI = false;
++ boolean isNext = false;
++ while (reader.hasNext()) {
++ final XMLEvent event = reader.nextEvent();
++ if (event.isStartElement()) {
++ isURI = uriQName.equals(event.asStartElement().getName());
++ isNext = nextQName.equals(event.asStartElement().getName());
++ }
+
- final List<Element> categories = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_CATEGORY);
- if (!categories.isEmpty()) {
- entry.setType(categories.get(0).getAttribute(Constants.ATOM_ATTR_TERM));
++ if (event.isCharacters() && !event.asCharacters().isWhiteSpace()) {
++ if (isURI) {
++ linkCollection.getLinks().add(URI.create(event.asCharacters().getData()));
++ isURI = false;
++ } else if (isNext) {
++ linkCollection.setNext(URI.create(event.asCharacters().getData()));
++ isNext = false;
++ }
++ }
+ }
+
- final List<Element> links = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_LINK);
- for (Element linkElem : links) {
- final LinkImpl link = new LinkImpl();
- link.setRel(linkElem.getAttribute(Constants.ATTR_REL));
- link.setTitle(linkElem.getAttribute(Constants.ATTR_TITLE));
- link.setHref(linkElem.getAttribute(Constants.ATTR_HREF));
-
- if (Constants.SELF_LINK_REL.equals(link.getRel())) {
- entry.setSelfLink(link);
- } else if (Constants.EDIT_LINK_REL.equals(link.getRel())) {
- entry.setEditLink(link);
- } else if (link.getRel().startsWith(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL))) {
-
- link.setType(linkElem.getAttribute(Constants.ATTR_TYPE));
- entry.getNavigationLinks().add(link);
-
- final List<Element> inlines = XMLUtils.getChildElements(linkElem, Constants.ATOM_ELEM_INLINE);
- if (!inlines.isEmpty()) {
- final List<Element> entries =
- XMLUtils.getChildElements(inlines.get(0), Constants.ATOM_ELEM_ENTRY);
- if (!entries.isEmpty()) {
- link.setInlineEntry(entry(entries.get(0)));
- }
++ return linkCollection;
++ }
+
- final List<Element> feeds =
- XMLUtils.getChildElements(inlines.get(0), Constants.ATOM_ELEM_FEED);
- if (!feeds.isEmpty()) {
- link.setInlineFeed(feed(feeds.get(0)));
- }
- }
- } else if (link.getRel().startsWith(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL))) {
+ private void properties(final XMLEventReader reader, final StartElement start, final AtomEntryImpl entry)
+ throws XMLStreamException {
- entry.getAssociationLinks().add(link);
- } else if (link.getRel().startsWith(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) {
+ boolean foundEndProperties = false;
+ while (reader.hasNext() && !foundEndProperties) {
+ final XMLEvent event = reader.nextEvent();
- entry.getMediaEditLinks().add(link);
+ if (event.isStartElement()) {
+ entry.getProperties().add(propDeserializer.deserialize(reader, event.asStartElement()));
}
- }
- final List<Element> authors = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_AUTHOR);
- if (!authors.isEmpty()) {
- final AtomEntryImpl.Author author = new AtomEntryImpl.Author();
- for (Node child : XMLUtils.getChildNodes(input, Node.ELEMENT_NODE)) {
- if (Constants.ATOM_ELEM_AUTHOR_NAME.equals(XMLUtils.getSimpleName(child))) {
- author.setName(child.getTextContent());
- } else if (Constants.ATOM_ELEM_AUTHOR_URI.equals(XMLUtils.getSimpleName(child))) {
- author.setUri(child.getTextContent());
- } else if (Constants.ATOM_ELEM_AUTHOR_EMAIL.equals(XMLUtils.getSimpleName(child))) {
- author.setEmail(child.getTextContent());
- }
- }
- if (!author.isEmpty()) {
- entry.setAuthor(author);
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndProperties = true;
}
}
+ }
- final List<Element> actions = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_ACTION);
- for (Element action : actions) {
- final ODataOperation operation = new ODataOperation();
- operation.setMetadataAnchor(action.getAttribute(Constants.ATTR_METADATA));
- operation.setTitle(action.getAttribute(Constants.ATTR_TITLE));
- operation.setTarget(URI.create(action.getAttribute(Constants.ATTR_TARGET)));
+ private AtomEntryImpl entry(final XMLEventReader reader, final StartElement start) throws XMLStreamException {
+ if (!Constants.QNAME_ATOM_ELEM_ENTRY.equals(start.getName())) {
+ return null;
+ }
- entry.getOperations().add(operation);
+ final AtomEntryImpl entry = new AtomEntryImpl();
+ final Attribute xmlBase = start.getAttributeByName(Constants.QNAME_ATTR_XML_BASE);
+ if (xmlBase != null) {
+ entry.setBaseURI(xmlBase.getValue());
+ }
+ final Attribute etag = start.getAttributeByName(etagQName);
+ if (etag != null) {
+ entry.setETag(etag.getValue());
}
- final List<Element> contents = XMLUtils.getChildElements(input, Constants.ATOM_ELEM_CONTENT);
- if (!contents.isEmpty()) {
- final Element content = contents.get(0);
+ boolean foundEndEntry = false;
+ while (reader.hasNext() && !foundEndEntry) {
+ final XMLEvent event = reader.nextEvent();
+
+ if (event.isStartElement()) {
+ if (Constants.QNAME_ATOM_ELEM_ID.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "id");
+ } else if (Constants.QNAME_ATOM_ELEM_TITLE.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "title");
+ } else if (Constants.QNAME_ATOM_ELEM_SUMMARY.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "summary");
+ } else if (Constants.QNAME_ATOM_ELEM_UPDATED.equals(event.asStartElement().getName())) {
+ common(reader, event.asStartElement(), entry, "updated");
+ } else if (Constants.QNAME_ATOM_ELEM_CATEGORY.equals(event.asStartElement().getName())) {
+ final Attribute term = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_TERM));
+ if (term != null) {
+ entry.setType(term.getValue());
+ }
+ } else if (Constants.QNAME_ATOM_ELEM_LINK.equals(event.asStartElement().getName())) {
+ final LinkImpl link = new LinkImpl();
+ final Attribute rel = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_REL));
+ if (rel != null) {
+ link.setRel(rel.getValue());
+ }
+ final Attribute title = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TITLE));
+ if (title != null) {
+ link.setTitle(title.getValue());
+ }
+ final Attribute href = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_HREF));
+ if (href != null) {
+ link.setHref(href.getValue());
+ }
+ final Attribute type = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TYPE));
+ if (type != null) {
+ link.setType(type.getValue());
+ }
- List<Element> props = XMLUtils.getChildElements(content, Constants.ELEM_PROPERTIES);
- if (props.isEmpty()) {
- entry.setMediaContentSource(content.getAttribute(Constants.ATOM_ATTR_SRC));
- entry.setMediaContentType(content.getAttribute(Constants.ATTR_TYPE));
+ if (Constants.SELF_LINK_REL.equals(link.getRel())) {
+ entry.setSelfLink(link);
+ } else if (Constants.EDIT_LINK_REL.equals(link.getRel())) {
+ entry.setEditLink(link);
+ } else if (link.getRel().startsWith(version.getNamespaceMap().get(ODataServiceVersion.NAVIGATION_LINK_REL))) {
+ entry.getNavigationLinks().add(link);
+ inline(reader, event.asStartElement(), link);
+ } else if (link.getRel().startsWith(
+ version.getNamespaceMap().get(ODataServiceVersion.ASSOCIATION_LINK_REL))) {
+
+ entry.getAssociationLinks().add(link);
+ } else if (link.getRel().startsWith(
+ version.getNamespaceMap().get(ODataServiceVersion.MEDIA_EDIT_LINK_REL))) {
+
+ final Attribute metag = event.asStartElement().getAttributeByName(etagQName);
+ if (metag != null) {
+ link.setMediaETag(metag.getValue());
+ }
+ entry.getMediaEditLinks().add(link);
+ }
+ } else if (actionQName.equals(event.asStartElement().getName())) {
+ final ODataOperation operation = new ODataOperation();
+ final Attribute metadata = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_METADATA));
+ if (metadata != null) {
+ operation.setMetadataAnchor(metadata.getValue());
+ }
+ final Attribute title = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TITLE));
+ if (title != null) {
+ operation.setTitle(title.getValue());
+ }
+ final Attribute target = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TARGET));
+ if (target != null) {
+ operation.setTarget(URI.create(target.getValue()));
+ }
- props = XMLUtils.getChildElements(input, Constants.ELEM_PROPERTIES);
- if (!props.isEmpty()) {
- entry.setMediaEntryProperties(props.get(0));
+ entry.getOperations().add(operation);
+ } else if (Constants.QNAME_ATOM_ELEM_CONTENT.equals(event.asStartElement().getName())) {
+ final Attribute type = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATTR_TYPE));
+ if (type == null || ContentType.APPLICATION_XML.getMimeType().equals(type.getValue())) {
+ properties(reader, skipBeforeFirstStartElement(reader), entry);
+ } else {
+ entry.setMediaContentType(type.getValue());
+ final Attribute src = event.asStartElement().getAttributeByName(QName.valueOf(Constants.ATOM_ATTR_SRC));
+ if (src != null) {
+ entry.setMediaContentSource(src.getValue());
+ }
+ }
+ } else if (propertiesQName.equals(event.asStartElement().getName())) {
+ properties(reader, event.asStartElement(), entry);
}
- } else {
- entry.setContent(props.get(0));
+ }
+
+ if (event.isEndElement() && start.getName().equals(event.asEndElement().getName())) {
+ foundEndEntry = true;
}
}
@@@ -319,21 -215,4 +347,23 @@@
return feed;
}
+
+ private AtomFeedImpl feed(final InputStream input) throws XMLStreamException {
+ final XMLEventReader reader = FACTORY.createXMLEventReader(input);
+ return feed(reader, skipBeforeFirstStartElement(reader));
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T> T read(final InputStream input, final Class<T> reference) throws XMLStreamException {
+ if (AtomFeedImpl.class.equals(reference)) {
+ return (T) feed(input);
+ } else if (AtomEntryImpl.class.equals(reference)) {
+ return (T) entry(input);
+ } else if (AtomPropertyImpl.class.equals(reference)) {
+ return (T) property(input);
++ } else if (XMLLinkCollectionImpl.class.equals(reference)) {
++ return (T) linkCollection(input);
+ }
+ return null;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
index 3b66c60,7a358dc..8337a72
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/AtomSerializer.java
@@@ -206,56 -176,9 +206,59 @@@ public class AtomSerializer extends Abs
}
for (Entry entry : feed.getEntries()) {
- feedElem.appendChild(doc.importNode(entry((AtomEntryImpl) entry), true));
+ writer.writeStartElement(Constants.ATOM_ELEM_ENTRY);
+ entry(writer, entry);
+ writer.writeEndElement();
+ }
+
+ if (feed.getNext() != null) {
+ final LinkImpl next = new LinkImpl();
+ next.setRel(Constants.NEXT_LINK_REL);
+ next.setHref(feed.getNext().toASCIIString());
+
+ links(writer, Collections.<Link>singletonList(next));
}
+ }
+
+ private void feed(final Writer outWriter, final Feed feed) throws XMLStreamException {
+ final XMLStreamWriter writer = FACTORY.createXMLStreamWriter(outWriter);
- return feedElem;
+ startDocument(writer, Constants.ATOM_ELEM_FEED);
+
+ feed(writer, feed);
+
+ writer.writeEndElement();
+ writer.writeEndDocument();
+ writer.flush();
+ }
+
+ private void link(final Writer outWriter, final Link link) throws XMLStreamException {
+ final XMLStreamWriter writer = FACTORY.createXMLStreamWriter(outWriter);
+
+ writer.writeStartDocument();
- writer.writeNamespace(
- Constants.PREFIX_DATASERVICES, version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
+
- writer.writeStartElement(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES), Constants.ELEM_URI);
++ writer.writeStartElement(Constants.ELEM_LINKS);
++ writer.writeDefaultNamespace(version.getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
++
++ writer.writeStartElement(Constants.ELEM_URI);
+ writer.writeCharacters(link.getHref());
+ writer.writeEndElement();
+
++ writer.writeEndElement();
++
+ writer.writeEndDocument();
+ writer.flush();
+ }
+
+ public <T> void write(final Writer writer, final T obj) throws XMLStreamException {
+ if (obj instanceof Feed) {
+ feed(writer, (Feed) obj);
+ } else if (obj instanceof Entry) {
+ entry(writer, (Entry) obj);
+ } else if (obj instanceof Property) {
+ property(writer, (Property) obj);
+ } else if (obj instanceof Link) {
+ link(writer, (Link) obj);
+ }
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
index c6a7b27,36d0d84..2e48f73
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONEntrySerializer.java
@@@ -26,10 -26,9 +26,11 @@@ import java.util.ArrayList
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+ import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Link;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.domain.ODataLinkType;
/**
@@@ -53,35 -55,46 +54,37 @@@ public class JSONEntrySerializer extend
final Map<String, List<String>> entitySetLinks = new HashMap<String, List<String>>();
for (Link link : entry.getNavigationLinks()) {
- if (link.getInlineEntry() != null) {
- jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
- } else if (link.getInlineFeed() != null) {
- jgen.writeObjectField(link.getTitle(), link.getInlineFeed());
- } else {
- ODataLinkType type = null;
- try {
- type = ODataLinkType.fromString(client, link.getRel(), link.getType());
- } catch (IllegalArgumentException e) {
- // ignore
- }
+ ODataLinkType type = null;
+ try {
+ type = ODataLinkType.fromString(client.getServiceVersion(), link.getRel(), link.getType());
+ } catch (IllegalArgumentException e) {
+ // ignore
+ }
- if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
- final List<String> uris;
- if (entitySetLinks.containsKey(link.getTitle())) {
- uris = entitySetLinks.get(link.getTitle());
- } else {
- uris = new ArrayList<String>();
- entitySetLinks.put(link.getTitle(), uris);
- }
- uris.add(link.getHref());
+ if (type == ODataLinkType.ENTITY_SET_NAVIGATION) {
+ final List<String> uris;
+ if (entitySetLinks.containsKey(link.getTitle())) {
+ uris = entitySetLinks.get(link.getTitle());
} else {
+ uris = new ArrayList<String>();
+ entitySetLinks.put(link.getTitle(), uris);
+ }
+ uris.add(link.getHref());
+ } else {
- jgen.writeStringField(link.getTitle() + Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
++ if (StringUtils.isNotBlank(link.getHref())) {
+ jgen.writeStringField(link.getTitle() + Constants.JSON_BIND_LINK_SUFFIX, link.getHref());
+ }
}
+
+ if (link.getInlineEntry() != null) {
+ jgen.writeObjectField(link.getTitle(), link.getInlineEntry());
+ } else if (link.getInlineFeed() != null) {
+ jgen.writeArrayFieldStart(link.getTitle());
+ for (Entry subEntry : link.getInlineFeed().getEntries()) {
+ jgen.writeObject(subEntry);
+ }
+ jgen.writeEndArray();
+ }
}
for (Map.Entry<String, List<String>> entitySetLink : entitySetLinks.entrySet()) {
jgen.writeArrayFieldStart(entitySetLink.getKey() + Constants.JSON_BIND_LINK_SUFFIX);
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
index 998296b,5800c83..172498a
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
@@@ -21,7 -21,8 +21,6 @@@ package org.apache.olingo.client.core.d
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
--import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import java.net.URI;
@@@ -47,36 -57,64 +46,24 @@@ public class JSONPropertyDeserializer e
tree.remove(Constants.JSON_METADATA);
}
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document document = builder.newDocument();
-
- Element content = document.createElement(Constants.ELEM_PROPERTY);
-
- if (property.getMetadata() != null) {
- final String metadataURI = property.getMetadata().toASCIIString();
- final int dashIdx = metadataURI.lastIndexOf('#');
- if (dashIdx != -1) {
- content.setAttribute(Constants.ATTR_M_TYPE, metadataURI.substring(dashIdx + 1));
- }
- }
-
- JsonNode subtree = null;
- if (tree.has(Constants.JSON_VALUE)) {
- if (tree.has(Constants.JSON_TYPE)
- && StringUtils.isBlank(content.getAttribute(Constants.ATTR_M_TYPE))) {
-
- content.setAttribute(Constants.ATTR_M_TYPE, tree.get(Constants.JSON_TYPE).asText());
- }
-
- final JsonNode value = tree.get(Constants.JSON_VALUE);
- if (value.isValueNode()) {
- content.appendChild(document.createTextNode(value.asText()));
- } else if (ODataJClientEdmPrimitiveType.isGeospatial(content.getAttribute(Constants.ATTR_M_TYPE))) {
- subtree = tree.objectNode();
- ((ObjectNode) subtree).put(Constants.JSON_VALUE, tree.get(Constants.JSON_VALUE));
- if (StringUtils.isNotBlank(content.getAttribute(Constants.ATTR_M_TYPE))) {
- ((ObjectNode) subtree).put(
- Constants.JSON_VALUE + "@" + Constants.JSON_TYPE,
- content.getAttribute(Constants.ATTR_M_TYPE));
- }
- } else {
- subtree = tree.get(Constants.JSON_VALUE);
- }
- } else {
- subtree = tree;
+ if (property.getMetadata() != null) {
+ final String metadataURI = property.getMetadata().toASCIIString();
+ final int dashIdx = metadataURI.lastIndexOf('#');
+ if (dashIdx != -1) {
+ property.setType(metadataURI.substring(dashIdx + 1));
}
+ }
- if (subtree != null) {
- JSONDOMTreeUtils.buildSubtree(client, content, subtree);
- }
+ if (tree.has(Constants.JSON_TYPE) && property.getType() == null) {
+ property.setType(tree.get(Constants.JSON_TYPE).asText());
+ }
- final List<Node> children = XMLUtils.getChildNodes(content, Node.ELEMENT_NODE);
- if (children.size() == 1) {
- final Element value = (Element) children.iterator().next();
- if (Constants.JSON_VALUE.equals(XMLUtils.getSimpleName(value))) {
- if (StringUtils.isNotBlank(content.getAttribute(Constants.ATTR_M_TYPE))) {
- value.setAttribute(Constants.ATTR_M_TYPE, content.getAttribute(Constants.ATTR_M_TYPE));
- }
- content = value;
- }
- }
+ if (tree.has(Constants.JSON_NULL) && tree.get(Constants.JSON_NULL).asBoolean()) {
+ property.setValue(new NullValueImpl());
+ }
- JsonNode subtree = null;
- if (tree.has(Constants.JSON_VALUE)) {
- final JsonNode value = tree.get(Constants.JSON_VALUE);
- if (value.isValueNode()) {
- property.setValue(new PrimitiveValueImpl(value.asText()));
- } else {
- subtree = tree.get(Constants.JSON_VALUE);
- }
- } else {
- subtree = tree;
- }
-
- if (property.getValue() == null && subtree != null) {
- value(property, subtree);
- property.setContent(content);
- } catch (ParserConfigurationException e) {
- throw new JsonParseException("Cannot build property", parser.getCurrentLocation(), e);
++ if (property.getValue() == null) {
++ value(property, tree.has(Constants.JSON_VALUE) ? tree.get(Constants.JSON_VALUE) : tree);
}
return property;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
index 990a942,edead41..9be7636
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
@@@ -136,7 -154,7 +136,7 @@@ public abstract class AbstractODataBind
entrySelfLink.setRel(Constants.SELF_LINK_REL);
entry.setSelfLink(entrySelfLink);
}
-- // -------------------------------------------------------------
++ // -------------------------------------------------------------
// -------------------------------------------------------------
// Append navigation links (handling inline entry / feed as well)
@@@ -148,7 -166,7 +148,7 @@@
entry.getNavigationLinks().add(getLink(link,
ResourceFactory.formatForEntryClass(reference) == ODataPubFormat.ATOM));
}
-- // -------------------------------------------------------------
++ // -------------------------------------------------------------
// -------------------------------------------------------------
// Append edit-media links
@@@ -158,7 -176,7 +158,7 @@@
entry.getMediaEditLinks().add(getLink(link,
ResourceFactory.formatForEntryClass(reference) == ODataPubFormat.ATOM));
}
-- // -------------------------------------------------------------
++ // -------------------------------------------------------------
// -------------------------------------------------------------
// Append association links
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
index fdbd07d,c3c5fb0..d6c5b10
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
@@@ -18,10 -18,18 +18,8 @@@
*/
package org.apache.olingo.client.core.op.impl;
- import java.io.ByteArrayInputStream;
-import com.fasterxml.aalto.stax.InputFactoryImpl;
-import com.fasterxml.aalto.stax.OutputFactoryImpl;
-import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
-import com.fasterxml.jackson.dataformat.xml.XmlFactory;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-
-import java.io.IOException;
import java.io.InputStream;
- import org.apache.commons.io.IOUtils;
-import java.net.URI;
-
import org.apache.olingo.client.api.ODataClient;
-import org.apache.olingo.client.api.Constants;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Error;
import org.apache.olingo.client.api.data.Feed;
@@@ -78,8 -84,8 +76,8 @@@ public abstract class AbstractODataDese
@Override
public LinkCollection toLinkCollection(final InputStream input, final ODataFormat format) {
return format == ODataFormat.XML
- ? xml(input, XMLLinkCollectionImpl.class)
- ? toLinkCollectionFromXML(input)
- : toLinkCollectionFromJSON(input);
++ ? atom(input, XMLLinkCollectionImpl.class)
+ : json(input, JSONLinkCollectionImpl.class);
}
@Override
@@@ -108,14 -119,65 +106,11 @@@
}
}
- protected Feed toJSONFeed(final InputStream input) {
+ protected <T> T json(final InputStream input, final Class<T> reference) {
try {
- String maz = IOUtils.toString(input);
- ByteArrayInputStream bais = new ByteArrayInputStream(maz.getBytes());
- System.out.println("KKKKKKKKKKKKKKKKKK\n" + maz);
- return getObjectMapper().readValue(bais, reference);
- return getObjectMapper().readValue(input, JSONFeedImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON feed", e);
- }
- }
-
- protected Entry toJSONEntry(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONEntryImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON entry", e);
- }
- }
-
- protected Element toPropertyDOMFromXML(final InputStream input) {
- return toDOM(input);
- }
-
- protected Element toPropertyDOMFromJSON(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONPropertyImpl.class).getContent();
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON property", e);
- }
- }
-
- protected XMLLinkCollectionImpl toLinkCollectionFromXML(final InputStream input) {
- final Element root = toDOM(input);
-
- final NodeList uris = root.getOwnerDocument().getElementsByTagName(Constants.ELEM_URI);
-
- final NodeList next = root.getElementsByTagName(Constants.NEXT_LINK_REL);
- final XMLLinkCollectionImpl linkCollection = next.getLength() > 0
- ? new XMLLinkCollectionImpl(URI.create(next.item(0).getTextContent()))
- : new XMLLinkCollectionImpl();
- for (int i = 0; i < uris.getLength(); i++) {
- linkCollection.getLinks().add(URI.create(uris.item(i).getTextContent()));
- }
-
- return linkCollection;
- }
-
- protected JSONLinkCollectionImpl toLinkCollectionFromJSON(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONLinkCollectionImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON $links", e);
- }
- }
-
- protected Error toErrorFromXML(final InputStream input) {
- try {
- final XmlMapper xmlMapper = new XmlMapper(
- new XmlFactory(new InputFactoryImpl(), new OutputFactoryImpl()), new JacksonXmlModule());
- return xmlMapper.readValue(input, XMLErrorImpl.class);
++ return getObjectMapper().readValue(input, reference);
} catch (Exception e) {
- throw new IllegalArgumentException("While deserializing XML error", e);
+ throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
----------------------------------------------------------------------
diff --cc lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
index 4e3409c,4e3409c..091698c
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/AbstractTestITCase.java
@@@ -214,7 -214,7 +214,7 @@@ public abstract class AbstractTestITCas
entity.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("Information",
getClient().getPrimitiveValueBuilder().setText(sampleinfo).setType(
-- ODataJClientEdmPrimitiveType.String).build()));
++ ODataJClientEdmPrimitiveType.String).build()));
return entity;
}
@@@ -228,12 -228,12 +228,12 @@@
// add name attribute
entity.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("Name",
getClient().getPrimitiveValueBuilder().setText(sampleName).setType(
-- ODataJClientEdmPrimitiveType.String).build()));
++ ODataJClientEdmPrimitiveType.String).build()));
// add key attribute
entity.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("CustomerId",
getClient().getPrimitiveValueBuilder().setText(String.valueOf(id)).setType(
-- ODataJClientEdmPrimitiveType.Int32).build()));
++ ODataJClientEdmPrimitiveType.Int32).build()));
// add BackupContactInfo attribute (collection)
final ODataCollectionValue backupContactInfoValue = new ODataCollectionValue(
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/4431a80d/pom.xml
----------------------------------------------------------------------
diff --cc pom.xml
index e9c4259,e74a19b..5915d5e
--- a/pom.xml
+++ b/pom.xml
@@@ -299,7 -293,7 +299,6 @@@
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.16</version>
<configuration>
-- <redirectTestOutputToFile>true</redirectTestOutputToFile>
<encoding>utf-8</encoding>
<runOrder>alphabetical</runOrder>
</configuration>
[14/21] [OLINGO-200] New StAX (replacing DOM) (de)serializers in
place - still IT to check
Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedImpl.java
index ced3d09..271ef3d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedImpl.java
@@ -19,6 +19,7 @@
package org.apache.olingo.client.core.data;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
@@ -32,10 +33,13 @@ import org.apache.olingo.client.api.uri.SegmentType;
* @see JSONEntry
*/
@JsonDeserialize(using = JSONFeedDeserializer.class)
+@JsonSerialize(using = JSONFeedSerializer.class)
public class JSONFeedImpl extends AbstractPayloadObject implements Feed {
private static final long serialVersionUID = -3576372289800799417L;
+ private String id;
+
private URI metadata;
private Integer count;
@@ -74,10 +78,20 @@ public class JSONFeedImpl extends AbstractPayloadObject implements Feed {
}
@Override
+ public String getId() {
+ return id;
+ }
+
+ public void setId(final String id) {
+ this.id = id;
+ }
+
+ @Override
public Integer getCount() {
return count;
}
+ @Override
public void setCount(final Integer count) {
this.count = count;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedSerializer.java
new file mode 100644
index 0000000..f89303e
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONFeedSerializer.java
@@ -0,0 +1,57 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.SerializerProvider;
+import java.io.IOException;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.data.Entry;
+
+public class JSONFeedSerializer extends AbstractJsonSerializer<JSONFeedImpl> {
+
+ @Override
+ protected void doSerialize(final JSONFeedImpl feed, final JsonGenerator jgen, final SerializerProvider provider)
+ throws IOException, JsonProcessingException {
+
+ jgen.writeStartObject();
+
+ if (feed.getMetadata() != null) {
+ jgen.writeStringField(Constants.JSON_METADATA, feed.getMetadata().toASCIIString());
+ }
+ if (feed.getId() != null) {
+ jgen.writeStringField(Constants.JSON_ID, feed.getId());
+ }
+ if (feed.getCount() != null) {
+ jgen.writeNumberField(Constants.JSON_COUNT, feed.getCount());
+ }
+ if (feed.getNext() != null) {
+ jgen.writeStringField(Constants.JSON_NEXT_LINK, feed.getNext().toASCIIString());
+ }
+
+ jgen.writeArrayFieldStart(Constants.JSON_VALUE);
+ for (Entry entry : feed.getEntries()) {
+ jgen.writeObject(entry);
+ }
+
+ jgen.writeEndArray();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
new file mode 100644
index 0000000..1e92bab
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueDeserializer.java
@@ -0,0 +1,256 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+import org.apache.olingo.client.api.domain.geospatial.GeospatialCollection;
+import org.apache.olingo.client.api.domain.geospatial.LineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiLineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiPoint;
+import org.apache.olingo.client.api.domain.geospatial.MultiPolygon;
+import org.apache.olingo.client.api.domain.geospatial.Point;
+import org.apache.olingo.client.api.domain.geospatial.Polygon;
+
+class JSONGeoValueDeserializer {
+
+ private Point point(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type, final String crs) {
+ Point point = null;
+
+ if (itor.hasNext()) {
+ point = new Point(GeoUtils.getDimension(type), crs);
+ point.setX(Double.valueOf(itor.next().asText()));
+ point.setY(Double.valueOf(itor.next().asText()));
+ }
+
+ return point;
+ }
+
+ private MultiPoint multipoint(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type,
+ final String crs) {
+
+ MultiPoint multiPoint = null;
+
+ if (itor.hasNext()) {
+ final List<Point> points = new ArrayList<Point>();
+ while (itor.hasNext()) {
+ final Iterator<JsonNode> mpItor = itor.next().elements();
+ points.add(point(mpItor, type, crs));
+ }
+ multiPoint = new MultiPoint(GeoUtils.getDimension(type), crs, points);
+ } else {
+ multiPoint = new MultiPoint(GeoUtils.getDimension(type), crs, Collections.<Point>emptyList());
+ }
+
+ return multiPoint;
+ }
+
+ private LineString lineString(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type,
+ final String crs) {
+
+ LineString lineString = null;
+
+ if (itor.hasNext()) {
+ final List<Point> points = new ArrayList<Point>();
+ while (itor.hasNext()) {
+ final Iterator<JsonNode> mpItor = itor.next().elements();
+ points.add(point(mpItor, type, crs));
+ }
+ lineString = new LineString(GeoUtils.getDimension(type), crs, points);
+ } else {
+ lineString = new LineString(GeoUtils.getDimension(type), crs, Collections.<Point>emptyList());
+ }
+
+ return lineString;
+ }
+
+ private MultiLineString multiLineString(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type,
+ final String crs) {
+
+ MultiLineString multiLineString = null;
+
+ if (itor.hasNext()) {
+ final List<LineString> lineStrings = new ArrayList<LineString>();
+ while (itor.hasNext()) {
+ final Iterator<JsonNode> mlsItor = itor.next().elements();
+ lineStrings.add(lineString(mlsItor, type, crs));
+ }
+ multiLineString = new MultiLineString(GeoUtils.getDimension(type), crs, lineStrings);
+ } else {
+ multiLineString = new MultiLineString(GeoUtils.getDimension(type), crs, Collections.<LineString>emptyList());
+ }
+
+ return multiLineString;
+ }
+
+ private Polygon polygon(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type,
+ final String crs) {
+
+ List<Point> extPoints = null;
+ if (itor.hasNext()) {
+ final Iterator<JsonNode> extItor = itor.next().elements();
+ if (extItor.hasNext()) {
+ extPoints = new ArrayList<Point>();
+ while (extItor.hasNext()) {
+ final Iterator<JsonNode> mpItor = extItor.next().elements();
+ extPoints.add(point(mpItor, type, crs));
+ }
+ }
+ }
+
+ List<Point> intPoints = null;
+ if (itor.hasNext()) {
+ final Iterator<JsonNode> intItor = itor.next().elements();
+ if (intItor.hasNext()) {
+ intPoints = new ArrayList<Point>();
+ while (intItor.hasNext()) {
+ final Iterator<JsonNode> mpItor = intItor.next().elements();
+ intPoints.add(point(mpItor, type, crs));
+ }
+ }
+ }
+
+ return new Polygon(GeoUtils.getDimension(type), crs, intPoints, extPoints);
+ }
+
+ private MultiPolygon multiPolygon(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type,
+ final String crs) {
+
+ MultiPolygon multiPolygon = null;
+
+ if (itor.hasNext()) {
+ final List<Polygon> polygons = new ArrayList<Polygon>();
+ while (itor.hasNext()) {
+ final Iterator<JsonNode> mpItor = itor.next().elements();
+ polygons.add(polygon(mpItor, type, crs));
+ }
+ multiPolygon = new MultiPolygon(GeoUtils.getDimension(type), crs, polygons);
+ } else {
+ multiPolygon = new MultiPolygon(GeoUtils.getDimension(type), crs, Collections.<Polygon>emptyList());
+ }
+
+ return multiPolygon;
+ }
+
+ private GeospatialCollection collection(final Iterator<JsonNode> itor, final ODataJClientEdmPrimitiveType type,
+ final String crs) {
+
+ GeospatialCollection collection = null;
+
+ if (itor.hasNext()) {
+ final List<Geospatial> geospatials = new ArrayList<Geospatial>();
+
+ while (itor.hasNext()) {
+ final JsonNode geo = itor.next();
+ final String collItemType = geo.get(Constants.ATTR_TYPE).asText();
+ final String callAsType;
+ if (ODataJClientEdmPrimitiveType.GeographyCollection.name().equals(collItemType)
+ || ODataJClientEdmPrimitiveType.GeometryCollection.name().equals(collItemType)) {
+
+ callAsType = collItemType;
+ } else {
+ callAsType = (type == ODataJClientEdmPrimitiveType.GeographyCollection ? "Geography" : "Geometry")
+ + collItemType;
+ }
+
+ geospatials.add(deserialize(geo, ODataJClientEdmPrimitiveType.valueOf(callAsType)));
+ }
+
+ collection = new GeospatialCollection(GeoUtils.getDimension(type), crs, geospatials);
+ } else {
+ collection = new GeospatialCollection(GeoUtils.getDimension(type), crs, Collections.<Geospatial>emptyList());
+ }
+
+ return collection;
+ }
+
+ public Geospatial deserialize(final JsonNode node, final ODataJClientEdmPrimitiveType type) {
+ final ODataJClientEdmPrimitiveType actualType;
+ if ((type == ODataJClientEdmPrimitiveType.Geography || type == ODataJClientEdmPrimitiveType.Geometry)
+ && node.has(Constants.ATTR_TYPE)) {
+
+ String nodeType = node.get(Constants.ATTR_TYPE).asText();
+ if (nodeType.startsWith("Geo")) {
+ final int yIdx = nodeType.indexOf('y');
+ nodeType = nodeType.substring(yIdx + 1);
+ }
+ actualType = ODataJClientEdmPrimitiveType.fromValue(type.toString() + nodeType);
+ } else {
+ actualType = type;
+ }
+
+ final Iterator<JsonNode> cooItor = node.has(Constants.JSON_COORDINATES)
+ ? node.get(Constants.JSON_COORDINATES).elements()
+ : Collections.<JsonNode>emptyList().iterator();
+
+ String crs = null;
+ if (node.has(Constants.JSON_CRS)) {
+ crs = node.get(Constants.JSON_CRS).get(Constants.PROPERTIES).get(Constants.NAME).asText().split(":")[1];
+ }
+
+ Geospatial value = null;
+ switch (actualType) {
+ case GeographyPoint:
+ case GeometryPoint:
+ value = point(cooItor, type, crs);
+ break;
+
+ case GeographyMultiPoint:
+ case GeometryMultiPoint:
+ value = multipoint(cooItor, type, crs);
+ break;
+
+ case GeographyLineString:
+ case GeometryLineString:
+ value = lineString(cooItor, type, crs);
+ break;
+
+ case GeographyMultiLineString:
+ case GeometryMultiLineString:
+ value = multiLineString(cooItor, type, crs);
+ break;
+
+ case GeographyPolygon:
+ case GeometryPolygon:
+ value = polygon(cooItor, type, crs);
+ break;
+
+ case GeographyMultiPolygon:
+ case GeometryMultiPolygon:
+ value = multiPolygon(cooItor, type, crs);
+ break;
+
+ case GeographyCollection:
+ case GeometryCollection:
+ value = collection(node.get(Constants.JSON_GEOMETRIES).elements(), type, crs);
+ break;
+
+ default:
+ }
+
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueSerializer.java
new file mode 100644
index 0000000..207ded6
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONGeoValueSerializer.java
@@ -0,0 +1,175 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import com.fasterxml.jackson.core.JsonGenerator;
+import java.io.IOException;
+import java.util.Iterator;
+import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
+import org.apache.olingo.client.api.domain.geospatial.ComposedGeospatial;
+import org.apache.olingo.client.api.domain.geospatial.Geospatial;
+import org.apache.olingo.client.api.domain.geospatial.GeospatialCollection;
+import org.apache.olingo.client.api.domain.geospatial.LineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiLineString;
+import org.apache.olingo.client.api.domain.geospatial.MultiPoint;
+import org.apache.olingo.client.api.domain.geospatial.MultiPolygon;
+import org.apache.olingo.client.api.domain.geospatial.Point;
+import org.apache.olingo.client.api.domain.geospatial.Polygon;
+
+class JSONGeoValueSerializer {
+
+ private void crs(final JsonGenerator jgen, final String crs) throws IOException {
+ jgen.writeObjectFieldStart(Constants.JSON_CRS);
+ jgen.writeStringField(Constants.ATTR_TYPE, Constants.NAME);
+ jgen.writeObjectFieldStart(Constants.PROPERTIES);
+ jgen.writeStringField(Constants.NAME, "EPSG:" + crs);
+ jgen.writeEndObject();
+ jgen.writeEndObject();
+ }
+
+ private void point(final JsonGenerator jgen, final Point point) throws IOException {
+ jgen.writeNumber(point.getX());
+ jgen.writeNumber(point.getY());
+ }
+
+ private void multipoint(final JsonGenerator jgen, final MultiPoint multiPoint) throws IOException {
+ for (final Iterator<Point> itor = multiPoint.iterator(); itor.hasNext();) {
+ jgen.writeStartArray();
+ point(jgen, itor.next());
+ jgen.writeEndArray();
+ }
+ }
+
+ private void lineString(final JsonGenerator jgen, final ComposedGeospatial<Point> lineString) throws IOException {
+ for (final Iterator<Point> itor = lineString.iterator(); itor.hasNext();) {
+ jgen.writeStartArray();
+ point(jgen, itor.next());
+ jgen.writeEndArray();
+ }
+ }
+
+ private void multiLineString(final JsonGenerator jgen, final MultiLineString multiLineString) throws IOException {
+ for (final Iterator<LineString> itor = multiLineString.iterator(); itor.hasNext();) {
+ jgen.writeStartArray();
+ lineString(jgen, itor.next());
+ jgen.writeEndArray();
+ }
+ }
+
+ private void polygon(final JsonGenerator jgen, final Polygon polygon) throws IOException {
+ if (!polygon.getExterior().isEmpty()) {
+ jgen.writeStartArray();
+ lineString(jgen, polygon.getExterior());
+ jgen.writeEndArray();
+ }
+ if (!polygon.getInterior().isEmpty()) {
+ jgen.writeStartArray();
+ lineString(jgen, polygon.getInterior());
+ jgen.writeEndArray();
+ }
+ }
+
+ private void multiPolygon(final JsonGenerator jgen, final MultiPolygon multiPolygon) throws IOException {
+ for (final Iterator<Polygon> itor = multiPolygon.iterator(); itor.hasNext();) {
+ final Polygon polygon = itor.next();
+ jgen.writeStartArray();
+ polygon(jgen, polygon);
+ jgen.writeEndArray();
+ }
+ }
+
+ private void collection(final JsonGenerator jgen, final GeospatialCollection collection) throws IOException {
+ jgen.writeArrayFieldStart(Constants.JSON_GEOMETRIES);
+ for (final Iterator<Geospatial> itor = collection.iterator(); itor.hasNext();) {
+ jgen.writeStartObject();
+ serialize(jgen, itor.next());
+ jgen.writeEndObject();
+ }
+ jgen.writeEndArray();
+ }
+
+ public void serialize(final JsonGenerator jgen, final Geospatial value) throws IOException {
+ if (value.getEdmSimpleType().equals(ODataJClientEdmPrimitiveType.GeographyCollection)
+ || value.getEdmSimpleType().equals(ODataJClientEdmPrimitiveType.GeometryCollection)) {
+
+ jgen.writeStringField(Constants.ATTR_TYPE, ODataJClientEdmPrimitiveType.GeometryCollection.name());
+ } else {
+ final int yIdx = value.getEdmSimpleType().name().indexOf('y');
+ final String itemType = value.getEdmSimpleType().name().substring(yIdx + 1);
+ jgen.writeStringField(Constants.ATTR_TYPE, itemType);
+ }
+
+ switch (value.getEdmSimpleType()) {
+ case GeographyPoint:
+ case GeometryPoint:
+ jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
+ point(jgen, (Point) value);
+ jgen.writeEndArray();
+ break;
+
+ case GeographyMultiPoint:
+ case GeometryMultiPoint:
+ jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
+ multipoint(jgen, (MultiPoint) value);
+ jgen.writeEndArray();
+ break;
+
+ case GeographyLineString:
+ case GeometryLineString:
+ jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
+ lineString(jgen, (LineString) value);
+ jgen.writeEndArray();
+ break;
+
+ case GeographyMultiLineString:
+ case GeometryMultiLineString:
+ jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
+ multiLineString(jgen, (MultiLineString) value);
+ jgen.writeEndArray();
+ break;
+
+ case GeographyPolygon:
+ case GeometryPolygon:
+ jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
+ polygon(jgen, (Polygon) value);
+ jgen.writeEndArray();
+ break;
+
+ case GeographyMultiPolygon:
+ case GeometryMultiPolygon:
+ jgen.writeArrayFieldStart(Constants.JSON_COORDINATES);
+ multiPolygon(jgen, (MultiPolygon) value);
+ jgen.writeEndArray();
+ break;
+
+ case GeographyCollection:
+ case GeometryCollection:
+ collection(jgen, (GeospatialCollection) value);
+ break;
+
+ default:
+ }
+
+ if (value.getCrs() != null) {
+ crs(jgen, value.getCrs());
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
index 5800c83..998296b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyDeserializer.java
@@ -18,7 +18,6 @@
*/
package org.apache.olingo.client.core.data;
-import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
@@ -26,23 +25,14 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;
import java.net.URI;
-import java.util.List;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
/**
- * Parse JSON string into <tt>JSONProperty</tt>.
+ * Parse JSON string into <tt>JSONPropertyImpl</tt>.
*
- * @see JSONProperty
+ * @see JSONPropertyImpl
*/
-public class JSONPropertyDeserializer extends ODataJacksonDeserializer<JSONPropertyImpl> {
+public class JSONPropertyDeserializer extends AbstractJsonDeserializer<JSONPropertyImpl> {
@Override
protected JSONPropertyImpl doDeserialize(final JsonParser parser, final DeserializationContext ctxt)
@@ -57,64 +47,36 @@ public class JSONPropertyDeserializer extends ODataJacksonDeserializer<JSONPrope
tree.remove(Constants.JSON_METADATA);
}
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document document = builder.newDocument();
-
- Element content = document.createElement(Constants.ELEM_PROPERTY);
-
- if (property.getMetadata() != null) {
- final String metadataURI = property.getMetadata().toASCIIString();
- final int dashIdx = metadataURI.lastIndexOf('#');
- if (dashIdx != -1) {
- content.setAttribute(Constants.ATTR_M_TYPE, metadataURI.substring(dashIdx + 1));
- }
+ if (property.getMetadata() != null) {
+ final String metadataURI = property.getMetadata().toASCIIString();
+ final int dashIdx = metadataURI.lastIndexOf('#');
+ if (dashIdx != -1) {
+ property.setType(metadataURI.substring(dashIdx + 1));
}
+ }
- JsonNode subtree = null;
- if (tree.has(Constants.JSON_VALUE)) {
- if (tree.has(Constants.JSON_TYPE)
- && StringUtils.isBlank(content.getAttribute(Constants.ATTR_M_TYPE))) {
+ if (tree.has(Constants.JSON_TYPE) && property.getType() == null) {
+ property.setType(tree.get(Constants.JSON_TYPE).asText());
+ }
- content.setAttribute(Constants.ATTR_M_TYPE, tree.get(Constants.JSON_TYPE).asText());
- }
+ if (tree.has(Constants.JSON_NULL) && tree.get(Constants.JSON_NULL).asBoolean()) {
+ property.setValue(new NullValueImpl());
+ }
- final JsonNode value = tree.get(Constants.JSON_VALUE);
- if (value.isValueNode()) {
- content.appendChild(document.createTextNode(value.asText()));
- } else if (ODataJClientEdmPrimitiveType.isGeospatial(content.getAttribute(Constants.ATTR_M_TYPE))) {
- subtree = tree.objectNode();
- ((ObjectNode) subtree).put(Constants.JSON_VALUE, tree.get(Constants.JSON_VALUE));
- if (StringUtils.isNotBlank(content.getAttribute(Constants.ATTR_M_TYPE))) {
- ((ObjectNode) subtree).put(
- Constants.JSON_VALUE + "@" + Constants.JSON_TYPE,
- content.getAttribute(Constants.ATTR_M_TYPE));
- }
- } else {
- subtree = tree.get(Constants.JSON_VALUE);
- }
+ JsonNode subtree = null;
+ if (tree.has(Constants.JSON_VALUE)) {
+ final JsonNode value = tree.get(Constants.JSON_VALUE);
+ if (value.isValueNode()) {
+ property.setValue(new PrimitiveValueImpl(value.asText()));
} else {
- subtree = tree;
- }
-
- if (subtree != null) {
- JSONDOMTreeUtils.buildSubtree(client, content, subtree);
- }
-
- final List<Node> children = XMLUtils.getChildNodes(content, Node.ELEMENT_NODE);
- if (children.size() == 1) {
- final Element value = (Element) children.iterator().next();
- if (Constants.JSON_VALUE.equals(XMLUtils.getSimpleName(value))) {
- if (StringUtils.isNotBlank(content.getAttribute(Constants.ATTR_M_TYPE))) {
- value.setAttribute(Constants.ATTR_M_TYPE, content.getAttribute(Constants.ATTR_M_TYPE));
- }
- content = value;
- }
+ subtree = tree.get(Constants.JSON_VALUE);
}
+ } else {
+ subtree = tree;
+ }
- property.setContent(content);
- } catch (ParserConfigurationException e) {
- throw new JsonParseException("Cannot build property", parser.getCurrentLocation(), e);
+ if (property.getValue() == null && subtree != null) {
+ value(property, subtree);
}
return property;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyImpl.java
index 66b889a..1002d3b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertyImpl.java
@@ -21,21 +21,18 @@ package org.apache.olingo.client.core.data;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.net.URI;
-import org.w3c.dom.Element;
/**
* A single property (primitive, complex or collection) represented via JSON.
*/
@JsonSerialize(using = JSONPropertySerializer.class)
@JsonDeserialize(using = JSONPropertyDeserializer.class)
-public class JSONPropertyImpl extends AbstractPayloadObject {
+public class JSONPropertyImpl extends AbstractPropertyImpl {
private static final long serialVersionUID = 553414431536637434L;
private URI metadata;
- private Element content;
-
/**
* Gets metadata URI.
*
@@ -53,22 +50,4 @@ public class JSONPropertyImpl extends AbstractPayloadObject {
public void setMetadata(final URI metadata) {
this.metadata = metadata;
}
-
- /**
- * Gets content.
- *
- * @return content as DOM element.
- */
- public Element getContent() {
- return content;
- }
-
- /**
- * Sets content.
- *
- * @param content content as DOM element.
- */
- public void setContent(final Element content) {
- this.content = content;
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertySerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertySerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertySerializer.java
index 1752e46..21e017b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertySerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/JSONPropertySerializer.java
@@ -19,28 +19,22 @@
package org.apache.olingo.client.core.data;
import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonLocation;
-import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
-import javax.xml.parsers.DocumentBuilder;
import org.apache.olingo.client.api.Constants;
-import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
+import org.apache.olingo.client.api.data.Property;
/**
- * Writes out JSON string from <tt>JSONProperty</tt>.
+ * Writes out JSON string from <tt>JSONPropertyImpl</tt>.
*
- * @see JSONProperty
+ * @see JSONPropertyImpl
*/
-public class JSONPropertySerializer extends ODataJacksonSerializer<JSONPropertyImpl> {
+public class JSONPropertySerializer extends AbstractJsonSerializer<JSONPropertyImpl> {
@Override
- public void doSerialize(final JSONPropertyImpl property, final JsonGenerator jgen, final SerializerProvider provider)
- throws IOException, JsonProcessingException {
+ protected void doSerialize(final JSONPropertyImpl property, final JsonGenerator jgen,
+ final SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeStartObject();
@@ -48,30 +42,15 @@ public class JSONPropertySerializer extends ODataJacksonSerializer<JSONPropertyI
jgen.writeStringField(Constants.JSON_METADATA, property.getMetadata().toASCIIString());
}
- final Element content = property.getContent();
- if (XMLUtils.hasOnlyTextChildNodes(content)) {
- jgen.writeStringField(Constants.JSON_VALUE, content.getTextContent());
- } else {
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document document = builder.newDocument();
- final Element wrapper = document.createElement(Constants.ELEM_PROPERTY);
-
- if (XMLUtils.hasElementsChildNode(content)) {
- wrapper.appendChild(document.renameNode(
- document.importNode(content, true), null, Constants.JSON_VALUE));
-
- JSONDOMTreeUtils.writeSubtree(client, jgen, wrapper);
- } else if (ODataJClientEdmPrimitiveType.isGeospatial(content.getAttribute(Constants.ATTR_M_TYPE))) {
- wrapper.appendChild(document.renameNode(
- document.importNode(content, true), null, Constants.JSON_VALUE));
-
- JSONDOMTreeUtils.writeSubtree(client, jgen, wrapper, true);
- } else {
- JSONDOMTreeUtils.writeSubtree(client, jgen, content);
- }
- } catch (Exception e) {
- throw new JsonParseException("Cannot serialize property", JsonLocation.NA, e);
+ if (property.getValue().isNull()) {
+ jgen.writeBooleanField(Constants.JSON_NULL, true);
+ } else if (property.getValue().isSimple()) {
+ jgen.writeStringField(Constants.JSON_VALUE, property.getValue().asSimple().get());
+ } else if (property.getValue().isGeospatial() || property.getValue().isCollection()) {
+ property(jgen, property, Constants.JSON_VALUE);
+ } else if (property.getValue().isComplex()) {
+ for (Property cproperty : property.getValue().asComplex().get()) {
+ property(jgen, cproperty, cproperty.getName());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/LinkImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/LinkImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/LinkImpl.java
index 9ba76dc..2bba504 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/LinkImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/LinkImpl.java
@@ -34,6 +34,8 @@ public class LinkImpl extends AbstractPayloadObject implements Link {
private String type;
+ private String mediaETag;
+
private Entry entry;
private Feed feed;
@@ -79,6 +81,16 @@ public class LinkImpl extends AbstractPayloadObject implements Link {
}
@Override
+ public String getMediaETag() {
+ return mediaETag;
+ }
+
+ @Override
+ public void setMediaETag(final String mediaETag) {
+ this.mediaETag = mediaETag;
+ }
+
+ @Override
public Entry getInlineEntry() {
return entry;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/NullValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/NullValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/NullValueImpl.java
new file mode 100644
index 0000000..83e6785
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/NullValueImpl.java
@@ -0,0 +1,35 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import org.apache.olingo.client.api.data.NullValue;
+
+public class NullValueImpl extends AbstractValue implements NullValue {
+
+ @Override
+ public boolean isNull() {
+ return true;
+ }
+
+ @Override
+ public Void get() {
+ return null;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/data/PrimitiveValueImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/data/PrimitiveValueImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/PrimitiveValueImpl.java
new file mode 100644
index 0000000..6d61cf4
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/data/PrimitiveValueImpl.java
@@ -0,0 +1,41 @@
+/*
+ * 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.
+ */
+package org.apache.olingo.client.core.data;
+
+import org.apache.olingo.client.api.data.PrimitiveValue;
+
+public class PrimitiveValueImpl extends AbstractValue implements PrimitiveValue {
+
+ private final String value;
+
+ public PrimitiveValueImpl(final String value) {
+ this.value = value;
+ }
+
+ @Override
+ public boolean isSimple() {
+ return true;
+ }
+
+ @Override
+ public String get() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
index 2cfb2cb..3ed86dc 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeInfo.java
@@ -119,7 +119,7 @@ public class EdmTypeInfo {
} catch (IllegalArgumentException e) {
LOG.debug("{} does not appear to refer to an Edm primitive type", this.fullQualifiedName);
}
- // TODO: implement Geospatial types!
+ // TODO - OLINGO-65 implement Geospatial types!
this.geospatialType = this.fullQualifiedName.getNamespace().equals(EdmPrimitiveType.EDM_NAMESPACE)
&& this.fullQualifiedName.getName().startsWith("Geo");
if (this.primitiveType == null && this.edm != null) {
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
index 0f4b451..796624b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EdmxDeserializer.java
@@ -29,7 +29,6 @@ import com.fasterxml.jackson.databind.DeserializationContext;
import java.io.IOException;
-@SuppressWarnings("rawtypes")
public class EdmxDeserializer extends AbstractEdmDeserializer<AbstractEdmx> {
@Override
@@ -59,7 +58,7 @@ public class EdmxDeserializer extends AbstractEdmDeserializer<AbstractEdmx> {
} else if ("Reference".equals(jp.getCurrentName())) {
jp.nextToken();
((org.apache.olingo.client.core.edm.xml.v4.EdmxImpl) edmx).getReferences().
- add(jp.readValueAs( ReferenceImpl.class));
+ add(jp.readValueAs(ReferenceImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
index c5c3bb6..7de7a3e 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
@@ -48,7 +48,7 @@ public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationIm
annotation.setConstExpr(parseAnnotationConstExprConstruct(jp));
} else {
// Dynamic Expressions
- annotation.setDynExpr(jp.readValueAs( DynExprConstructImpl.class));
+ annotation.setDynExpr(jp.readValueAs(DynExprConstructImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
index bdb968c..990a942 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataBinder.java
@@ -20,19 +20,18 @@ package org.apache.olingo.client.core.op.impl;
import java.io.StringWriter;
import java.net.URI;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.ParserConfigurationException;
-
+import java.util.Iterator;
import org.apache.commons.lang3.StringUtils;
-import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.Link;
import org.apache.olingo.client.api.data.LinkCollection;
-import org.apache.olingo.client.api.domain.ODataOperation;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.data.ServiceDocument;
import org.apache.olingo.client.api.data.ServiceDocumentItem;
+import org.apache.olingo.client.api.data.Value;
import org.apache.olingo.client.api.domain.ODataCollectionValue;
import org.apache.olingo.client.api.domain.ODataComplexValue;
import org.apache.olingo.client.api.domain.ODataEntity;
@@ -40,26 +39,26 @@ import org.apache.olingo.client.api.domain.ODataEntitySet;
import org.apache.olingo.client.api.domain.ODataGeospatialValue;
import org.apache.olingo.client.api.domain.ODataInlineEntity;
import org.apache.olingo.client.api.domain.ODataInlineEntitySet;
-import org.apache.olingo.client.api.domain.ODataJClientEdmType;
+import org.apache.olingo.client.api.domain.ODataJClientEdmPrimitiveType;
import org.apache.olingo.client.api.domain.ODataLink;
import org.apache.olingo.client.api.domain.ODataLinkCollection;
+import org.apache.olingo.client.api.domain.ODataOperation;
import org.apache.olingo.client.api.domain.ODataPrimitiveValue;
import org.apache.olingo.client.api.domain.ODataProperty;
-import org.apache.olingo.client.api.domain.ODataProperty.PropertyType;
import org.apache.olingo.client.api.domain.ODataServiceDocument;
import org.apache.olingo.client.api.domain.ODataValue;
import org.apache.olingo.client.api.format.ODataPubFormat;
import org.apache.olingo.client.api.op.ODataBinder;
-import org.apache.olingo.client.api.utils.XMLUtils;
import org.apache.olingo.client.api.utils.URIUtils;
+import org.apache.olingo.client.core.data.CollectionValueImpl;
+import org.apache.olingo.client.core.data.ComplexValueImpl;
+import org.apache.olingo.client.core.data.GeospatialValueImpl;
+import org.apache.olingo.client.core.data.JSONPropertyImpl;
import org.apache.olingo.client.core.data.LinkImpl;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.client.core.data.NullValueImpl;
+import org.apache.olingo.client.core.data.PrimitiveValueImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
public abstract class AbstractODataBinder implements ODataBinder {
@@ -76,25 +75,6 @@ public abstract class AbstractODataBinder implements ODataBinder {
this.client = client;
}
- protected Element newEntryContent() {
- Element properties = null;
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document doc = builder.newDocument();
- properties = doc.createElement(Constants.ELEM_PROPERTIES);
- properties.setAttribute(Constants.XMLNS_METADATA,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
- properties.setAttribute(Constants.XMLNS_DATASERVICES,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
- properties.setAttribute(Constants.XMLNS_GML, Constants.NS_GML);
- properties.setAttribute(Constants.XMLNS_GEORSS, Constants.NS_GEORSS);
- } catch (ParserConfigurationException e) {
- LOG.error("Failure building entry content", e);
- }
-
- return properties;
- }
-
@Override
public ODataServiceDocument getODataServiceDocument(final ServiceDocument resource) {
final ODataServiceDocument serviceDocument = new ODataServiceDocument();
@@ -113,6 +93,8 @@ public abstract class AbstractODataBinder implements ODataBinder {
public Feed getFeed(final ODataEntitySet feed, final Class<? extends Feed> reference) {
final Feed feedResource = ResourceFactory.newFeed(reference);
+ feedResource.setCount(feed.getCount());
+
final URI next = feed.getNext();
if (next != null) {
feedResource.setNext(next);
@@ -188,30 +170,94 @@ public abstract class AbstractODataBinder implements ODataBinder {
}
// -------------------------------------------------------------
- final Element content = newEntryContent();
if (entity.isMediaEntity()) {
- entry.setMediaEntryProperties(content);
entry.setMediaContentSource(entity.getMediaContentSource());
entry.setMediaContentType(entity.getMediaContentType());
- } else {
- entry.setContent(content);
}
- for (ODataProperty prop : entity.getProperties()) {
- content.appendChild(toDOMElement(prop, content.getOwnerDocument(), setType));
+ for (ODataProperty property : entity.getProperties()) {
+ entry.getProperties().add(getProperty(property, reference, setType));
}
return entry;
}
@Override
- public Element toDOMElement(final ODataProperty prop) {
- try {
- return toDOMElement(prop, XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder().newDocument(), true);
- } catch (ParserConfigurationException e) {
- LOG.error("Error retrieving property DOM", e);
- throw new IllegalArgumentException(e);
+ public Link getLink(final ODataLink link, boolean isXML) {
+ final Link linkResource = new LinkImpl();
+ linkResource.setRel(link.getRel());
+ linkResource.setTitle(link.getName());
+ linkResource.setHref(link.getLink() == null ? null : link.getLink().toASCIIString());
+ linkResource.setType(link.getType().toString());
+ linkResource.setMediaETag(link.getMediaETag());
+
+ if (link instanceof ODataInlineEntity) {
+ // append inline entity
+ final ODataEntity inlineEntity = ((ODataInlineEntity) link).getEntity();
+ LOG.debug("Append in-line entity\n{}", inlineEntity);
+
+ linkResource.setInlineEntry(getEntry(inlineEntity, ResourceFactory.entryClassForFormat(isXML)));
+ } else if (link instanceof ODataInlineEntitySet) {
+ // append inline feed
+ final ODataEntitySet InlineFeed = ((ODataInlineEntitySet) link).getEntitySet();
+ LOG.debug("Append in-line feed\n{}", InlineFeed);
+
+ linkResource.setInlineFeed(getFeed(InlineFeed, ResourceFactory.feedClassForFormat(isXML)));
+ }
+
+ return linkResource;
+ }
+
+ @Override
+ public Property getProperty(final ODataProperty property, final Class<? extends Entry> reference,
+ final boolean setType) {
+
+ final Property propertyResource = ResourceFactory.newProperty(reference);
+ propertyResource.setName(property.getName());
+ propertyResource.setValue(getValue(property.getValue(), reference, setType));
+
+ if (setType) {
+ if (property.hasPrimitiveValue()) {
+ propertyResource.setType(property.getPrimitiveValue().getTypeName());
+ } else if (property.hasComplexValue()) {
+ propertyResource.setType(property.getComplexValue().getTypeName());
+ } else if (property.hasCollectionValue()) {
+ propertyResource.setType(property.getCollectionValue().getTypeName());
+ }
+ }
+
+ return propertyResource;
+ }
+
+ private Value getValue(final ODataValue value, final Class<? extends Entry> reference, final boolean setType) {
+ Value valueResource = null;
+
+ if (value == null) {
+ valueResource = new NullValueImpl();
+ } else if (value.isPrimitive()) {
+ final ODataPrimitiveValue _value = value.asPrimitive();
+ if (_value instanceof ODataGeospatialValue) {
+ valueResource = new GeospatialValueImpl(((ODataGeospatialValue) _value).getGeospatial());
+ } else {
+ valueResource = new PrimitiveValueImpl(_value.toString());
+ }
+ } else if (value.isComplex()) {
+ final ODataComplexValue _value = value.asComplex();
+ valueResource = new ComplexValueImpl();
+
+ for (final Iterator<ODataProperty> itor = _value.iterator(); itor.hasNext();) {
+ valueResource.asComplex().get().add(getProperty(itor.next(), reference, setType));
+ }
+ } else if (value.isCollection()) {
+ final ODataCollectionValue _value = value.asCollection();
+ valueResource = new CollectionValueImpl();
+
+ for (final Iterator<ODataValue> itor = _value.iterator(); itor.hasNext();) {
+ valueResource.asCollection().get().add(getValue(itor.next(), reference, setType));
+ }
}
+
+ return valueResource;
}
@Override
@@ -316,287 +362,55 @@ public abstract class AbstractODataBinder implements ODataBinder {
entity.getOperations().add(operation);
}
- final Element content;
if (resource.isMediaEntry()) {
entity.setMediaEntity(true);
entity.setMediaContentSource(resource.getMediaContentSource());
entity.setMediaContentType(resource.getMediaContentType());
- content = resource.getMediaEntryProperties();
- } else {
- content = resource.getContent();
- }
- if (content != null) {
- for (Node property : XMLUtils.getChildNodes(content, Node.ELEMENT_NODE)) {
- try {
- entity.getProperties().add(getODataProperty((Element) property));
- } catch (IllegalArgumentException e) {
- LOG.warn("Failure retrieving EdmType for {}", property.getTextContent(), e);
- }
- }
}
- return entity;
- }
-
- @Override
- public Link getLink(final ODataLink link, boolean isXML) {
- final Link linkResource = new LinkImpl();
- linkResource.setRel(link.getRel());
- linkResource.setTitle(link.getName());
- linkResource.setHref(link.getLink() == null ? null : link.getLink().toASCIIString());
- linkResource.setType(link.getType().toString());
-
- if (link instanceof ODataInlineEntity) {
- // append inline entity
- final ODataEntity inlineEntity = ((ODataInlineEntity) link).getEntity();
- LOG.debug("Append in-line entity\n{}", inlineEntity);
-
- linkResource.setInlineEntry(getEntry(inlineEntity, ResourceFactory.entryClassForFormat(isXML)));
- } else if (link instanceof ODataInlineEntitySet) {
- // append inline feed
- final ODataEntitySet InlineFeed = ((ODataInlineEntitySet) link).getEntitySet();
- LOG.debug("Append in-line feed\n{}", InlineFeed);
-
- linkResource.setInlineFeed(getFeed(InlineFeed, ResourceFactory.feedClassForFormat(isXML)));
+ for (Property property : resource.getProperties()) {
+ entity.getProperties().add(getODataProperty(property));
}
- return linkResource;
+ return entity;
}
@Override
- public ODataProperty getODataProperty(final Element property) {
- final ODataProperty res;
-
- final Node nullNode = property.getAttributes().getNamedItem(Constants.ATTR_M_NULL);
-
- if (nullNode == null) {
- final ODataJClientEdmType edmType = StringUtils.isBlank(property.getAttribute(Constants.ATTR_M_TYPE))
- ? null
- : new ODataJClientEdmType(property.getAttribute(Constants.ATTR_M_TYPE));
-
- final PropertyType propType = edmType == null
- ? guessPropertyType(property)
- : edmType.isCollection()
- ? PropertyType.COLLECTION
- : edmType.isSimpleType()
- ? PropertyType.PRIMITIVE
- : PropertyType.COMPLEX;
-
- switch (propType) {
- case COLLECTION:
- res = fromCollectionPropertyElement(property, edmType);
- break;
-
- case COMPLEX:
- res = fromComplexPropertyElement(property, edmType);
- break;
-
- case PRIMITIVE:
- res = fromPrimitivePropertyElement(property, edmType);
- break;
-
- case EMPTY:
- default:
- res = client.getObjectFactory().newPrimitiveProperty(XMLUtils.getSimpleName(property), null);
- }
- } else {
- res = client.getObjectFactory().newPrimitiveProperty(XMLUtils.getSimpleName(property), null);
- }
-
- return res;
+ public ODataProperty getODataProperty(final Property property) {
+ return new ODataProperty(property.getName(), getODataValue(property));
}
- protected PropertyType guessPropertyType(final Element property) {
- PropertyType res = null;
-
- if (property.hasChildNodes()) {
- final NodeList children = property.getChildNodes();
-
- for (int i = 0; res == null && i < children.getLength(); i++) {
- final Node child = children.item(i);
-
- if (child.getNodeType() == Node.ELEMENT_NODE
- && !child.getNodeName().startsWith(Constants.PREFIX_GML)) {
-
- res = Constants.ELEM_ELEMENT.equals(XMLUtils.getSimpleName(child))
- ? PropertyType.COLLECTION
- : PropertyType.COMPLEX;
- }
+ private ODataValue getODataValue(final Property resource) {
+ ODataValue value = null;
+
+ if (resource.getValue().isSimple()) {
+ value = new ODataPrimitiveValue.Builder(client).setText(resource.getValue().asSimple().get()).
+ setType(resource.getType() == null
+ ? null
+ : ODataJClientEdmPrimitiveType.fromValue(resource.getType())).build();
+ } else if (resource.getValue().isGeospatial()) {
+ value = new ODataGeospatialValue.Builder(client).setValue(resource.getValue().asGeospatial().get()).
+ setType(resource.getType() == null
+ || ODataJClientEdmPrimitiveType.Geography.toString().equals(resource.getType())
+ || ODataJClientEdmPrimitiveType.Geometry.toString().equals(resource.getType())
+ ? null
+ : ODataJClientEdmPrimitiveType.fromValue(resource.getType())).build();
+ } else if (resource.getValue().isComplex()) {
+ value = new ODataComplexValue(resource.getType());
+
+ for (Property property : resource.getValue().asComplex().get()) {
+ value.asComplex().add(getODataProperty(property));
}
- } else {
- res = PropertyType.EMPTY;
- }
-
- if (res == null) {
- res = PropertyType.PRIMITIVE;
- }
-
- return res;
- }
-
- protected Element toDOMElement(final ODataProperty prop, final Document doc, final boolean setType) {
- final Element element;
-
- if (prop.hasNullValue()) {
- // null property handling
- element = toNullPropertyElement(prop, doc);
- } else if (prop.hasPrimitiveValue()) {
- // primitive property handling
- element = toPrimitivePropertyElement(prop, doc, setType);
- } else if (prop.hasCollectionValue()) {
- // collection property handling
- element = toCollectionPropertyElement(prop, doc, setType);
- } else {
- // complex property handling
- element = toComplexPropertyElement(prop, doc, setType);
- }
-
- element.setAttribute(Constants.XMLNS_METADATA,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_METADATA));
- element.setAttribute(Constants.XMLNS_DATASERVICES,
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES));
- element.setAttribute(Constants.XMLNS_GML, Constants.NS_GML);
- element.setAttribute(Constants.XMLNS_GEORSS, Constants.NS_GEORSS);
-
- return element;
- }
-
- protected Element toNullPropertyElement(final ODataProperty prop, final Document doc) {
- final Element element = doc.createElement(Constants.PREFIX_DATASERVICES + prop.getName());
- element.setAttribute(Constants.ATTR_M_NULL, Boolean.toString(true));
- return element;
- }
-
- protected Element toPrimitivePropertyElement(
- final ODataProperty prop, final Document doc, final boolean setType) {
-
- return toPrimitivePropertyElement(prop.getName(), prop.getPrimitiveValue(), doc, setType);
- }
-
- protected Element toPrimitivePropertyElement(
- final String name, final ODataPrimitiveValue value, final Document doc, final boolean setType) {
-
- final Element element = doc.createElement(Constants.PREFIX_DATASERVICES + name);
- if (setType) {
- element.setAttribute(Constants.ATTR_M_TYPE, value.getTypeName());
- }
-
- if (value instanceof ODataGeospatialValue) {
- element.appendChild(doc.importNode(((ODataGeospatialValue) value).toTree(), true));
- } else {
- element.setTextContent(value.toString());
- }
-
- return element;
- }
+ } else if (resource.getValue().isCollection()) {
+ value = new ODataCollectionValue(resource.getType());
- protected Element toCollectionPropertyElement(
- final ODataProperty prop, final Document doc, final boolean setType) {
-
- if (!prop.hasCollectionValue()) {
- throw new IllegalArgumentException("Invalid property value type "
- + prop.getValue().getClass().getSimpleName());
- }
-
- final ODataCollectionValue value = prop.getCollectionValue();
-
- final Element element = doc.createElement(Constants.PREFIX_DATASERVICES + prop.getName());
- if (value.getTypeName() != null && setType) {
- element.setAttribute(Constants.ATTR_M_TYPE, value.getTypeName());
- }
-
- for (ODataValue el : value) {
- if (el.isPrimitive()) {
- element.appendChild(
- toPrimitivePropertyElement(Constants.ELEM_ELEMENT, el.asPrimitive(), doc, setType));
- } else {
- element.appendChild(
- toComplexPropertyElement(Constants.ELEM_ELEMENT, el.asComplex(), doc, setType));
+ for (Value _value : resource.getValue().asCollection().get()) {
+ final JSONPropertyImpl fake = new JSONPropertyImpl();
+ fake.setValue(_value);
+ value.asCollection().add(getODataValue(fake));
}
}
- return element;
- }
-
- protected Element toComplexPropertyElement(
- final ODataProperty prop, final Document doc, final boolean setType) {
-
- return toComplexPropertyElement(prop.getName(), prop.getComplexValue(), doc, setType);
- }
-
- protected Element toComplexPropertyElement(
- final String name, final ODataComplexValue value, final Document doc, final boolean setType) {
-
- final Element element = doc.createElement(Constants.PREFIX_DATASERVICES + name);
- if (value.getTypeName() != null && setType) {
- element.setAttribute(Constants.ATTR_M_TYPE, value.getTypeName());
- }
-
- for (ODataProperty field : value) {
- element.appendChild(toDOMElement(field, doc, true));
- }
- return element;
- }
-
- protected ODataPrimitiveValue fromPrimitiveValueElement(final Element prop, final ODataJClientEdmType edmType) {
- final ODataPrimitiveValue value;
- if (edmType != null && edmType.getSimpleType().isGeospatial()) {
- final Element geoProp = Constants.PREFIX_GML.equals(prop.getPrefix())
- ? prop : (Element) XMLUtils.getChildNodes(prop, Node.ELEMENT_NODE).get(0);
- value = client.getGeospatialValueBuilder().
- setType(edmType.getSimpleType()).setTree(geoProp).build();
- } else {
- value = client.getPrimitiveValueBuilder().
- setType(edmType == null ? null : edmType.getSimpleType()).setText(prop.getTextContent()).build();
- }
- return value;
- }
-
- protected ODataProperty fromPrimitivePropertyElement(final Element prop, final ODataJClientEdmType edmType) {
- return client.getObjectFactory().newPrimitiveProperty(
- XMLUtils.getSimpleName(prop), fromPrimitiveValueElement(prop, edmType));
- }
-
- protected ODataComplexValue fromComplexValueElement(final Element prop, final ODataJClientEdmType edmType) {
- final ODataComplexValue value = new ODataComplexValue(edmType == null ? null : edmType.getTypeExpression());
-
- for (Node child : XMLUtils.getChildNodes(prop, Node.ELEMENT_NODE)) {
- value.add(getODataProperty((Element) child));
- }
-
return value;
}
-
- protected ODataProperty fromComplexPropertyElement(final Element prop, final ODataJClientEdmType edmType) {
- return client.getObjectFactory().newComplexProperty(XMLUtils.getSimpleName(prop),
- fromComplexValueElement(prop, edmType));
- }
-
- protected ODataProperty fromCollectionPropertyElement(final Element prop, final ODataJClientEdmType edmType) {
- final ODataCollectionValue value =
- new ODataCollectionValue(edmType == null ? null : edmType.getTypeExpression());
-
- final ODataJClientEdmType type = edmType == null ? null : new ODataJClientEdmType(edmType.getBaseType());
- final NodeList elements = prop.getChildNodes();
-
- for (int i = 0; i < elements.getLength(); i++) {
- if (elements.item(i).getNodeType() != Node.TEXT_NODE) {
- final Element child = (Element) elements.item(i);
-
- switch (guessPropertyType(child)) {
- case COMPLEX:
- value.add(fromComplexValueElement(child, type));
- break;
- case PRIMITIVE:
- value.add(fromPrimitiveValueElement(child, type));
- break;
- default:
- // do not add null or empty values
- }
- }
- }
-
- return client.getObjectFactory().newCollectionProperty(XMLUtils.getSimpleName(prop), value);
- }
-
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
index c3c5fb0..14357cb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataDeserializer.java
@@ -18,26 +18,20 @@
*/
package org.apache.olingo.client.core.op.impl;
-import com.fasterxml.aalto.stax.InputFactoryImpl;
-import com.fasterxml.aalto.stax.OutputFactoryImpl;
-import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule;
-import com.fasterxml.jackson.dataformat.xml.XmlFactory;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
-
-import java.io.IOException;
import java.io.InputStream;
-import java.net.URI;
-
import org.apache.olingo.client.api.ODataClient;
-import org.apache.olingo.client.api.Constants;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Error;
import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.LinkCollection;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.format.ODataFormat;
import org.apache.olingo.client.api.format.ODataPubFormat;
import org.apache.olingo.client.api.op.ODataDeserializer;
import org.apache.olingo.client.core.data.AtomDeserializer;
+import org.apache.olingo.client.core.data.AtomEntryImpl;
+import org.apache.olingo.client.core.data.AtomFeedImpl;
+import org.apache.olingo.client.core.data.AtomPropertyImpl;
import org.apache.olingo.client.core.data.JSONEntryImpl;
import org.apache.olingo.client.core.data.JSONErrorBundle;
import org.apache.olingo.client.core.data.JSONFeedImpl;
@@ -45,9 +39,6 @@ import org.apache.olingo.client.core.data.JSONLinkCollectionImpl;
import org.apache.olingo.client.core.data.JSONPropertyImpl;
import org.apache.olingo.client.core.data.XMLErrorImpl;
import org.apache.olingo.client.core.data.XMLLinkCollectionImpl;
-import org.apache.olingo.client.core.xml.XMLParser;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
public abstract class AbstractODataDeserializer extends AbstractJacksonTool implements ODataDeserializer {
@@ -57,135 +48,70 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl
public AbstractODataDeserializer(final ODataClient client) {
super(client);
- this.atomDeserializer = new AtomDeserializer(client);
+
+ this.atomDeserializer = new AtomDeserializer(client.getServiceVersion());
}
@Override
public Feed toFeed(final InputStream input, final ODataPubFormat format) {
return format == ODataPubFormat.ATOM
- ? toAtomFeed(input)
- : toJSONFeed(input);
+ ? atom(input, AtomFeedImpl.class)
+ : json(input, JSONFeedImpl.class);
}
@Override
public Entry toEntry(final InputStream input, final ODataPubFormat format) {
return format == ODataPubFormat.ATOM
- ? toAtomEntry(input)
- : toJSONEntry(input);
+ ? atom(input, AtomEntryImpl.class)
+ : json(input, JSONEntryImpl.class);
}
@Override
- public Element toPropertyDOM(final InputStream input, final ODataFormat format) {
+ public Property toProperty(final InputStream input, final ODataFormat format) {
return format == ODataFormat.XML
- ? toPropertyDOMFromXML(input)
- : toPropertyDOMFromJSON(input);
+ ? atom(input, AtomPropertyImpl.class)
+ : json(input, JSONPropertyImpl.class);
}
@Override
public LinkCollection toLinkCollection(final InputStream input, final ODataFormat format) {
return format == ODataFormat.XML
- ? toLinkCollectionFromXML(input)
- : toLinkCollectionFromJSON(input);
+ ? xml(input, XMLLinkCollectionImpl.class)
+ : json(input, JSONLinkCollectionImpl.class);
}
@Override
public Error toError(final InputStream input, final boolean isXML) {
return isXML
- ? toErrorFromXML(input)
- : toErrorFromJSON(input);
- }
-
- @Override
- public Element toDOM(final InputStream input) {
- return XMLParser.PARSER.deserialize(input);
+ ? xml(input, XMLErrorImpl.class)
+ : json(input, JSONErrorBundle.class).getError();
}
/*
* ------------------ Protected methods ------------------
*/
- protected Feed toAtomFeed(final InputStream input) {
+ protected <T> T xml(final InputStream input, final Class<T> reference) {
try {
- return atomDeserializer.feed(toDOM(input));
+ return getXmlMapper().readValue(input, reference);
} catch (Exception e) {
- throw new IllegalArgumentException("While deserializing Atom feed", e);
+ throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
}
- protected Entry toAtomEntry(final InputStream input) {
+ protected <T> T atom(final InputStream input, final Class<T> reference) {
try {
- return atomDeserializer.entry(toDOM(input));
+ return atomDeserializer.read(input, reference);
} catch (Exception e) {
- throw new IllegalArgumentException("While deserializing Atom entry", e);
+ throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
}
- protected Feed toJSONFeed(final InputStream input) {
+ protected <T> T json(final InputStream input, final Class<T> reference) {
try {
- return getObjectMapper().readValue(input, JSONFeedImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON feed", e);
- }
- }
-
- protected Entry toJSONEntry(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONEntryImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON entry", e);
- }
- }
-
- protected Element toPropertyDOMFromXML(final InputStream input) {
- return toDOM(input);
- }
-
- protected Element toPropertyDOMFromJSON(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONPropertyImpl.class).getContent();
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON property", e);
- }
- }
-
- protected XMLLinkCollectionImpl toLinkCollectionFromXML(final InputStream input) {
- final Element root = toDOM(input);
-
- final NodeList uris = root.getOwnerDocument().getElementsByTagName(Constants.ELEM_URI);
-
- final NodeList next = root.getElementsByTagName(Constants.NEXT_LINK_REL);
- final XMLLinkCollectionImpl linkCollection = next.getLength() > 0
- ? new XMLLinkCollectionImpl(URI.create(next.item(0).getTextContent()))
- : new XMLLinkCollectionImpl();
- for (int i = 0; i < uris.getLength(); i++) {
- linkCollection.getLinks().add(URI.create(uris.item(i).getTextContent()));
- }
-
- return linkCollection;
- }
-
- protected JSONLinkCollectionImpl toLinkCollectionFromJSON(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONLinkCollectionImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON $links", e);
- }
- }
-
- protected Error toErrorFromXML(final InputStream input) {
- try {
- final XmlMapper xmlMapper = new XmlMapper(
- new XmlFactory(new InputFactoryImpl(), new OutputFactoryImpl()), new JacksonXmlModule());
- return xmlMapper.readValue(input, XMLErrorImpl.class);
+ return getObjectMapper().readValue(input, reference);
} catch (Exception e) {
- throw new IllegalArgumentException("While deserializing XML error", e);
+ throw new IllegalArgumentException("While deserializing " + reference.getName(), e);
}
}
- protected Error toErrorFromJSON(final InputStream input) {
- try {
- return getObjectMapper().readValue(input, JSONErrorBundle.class).getError();
- } catch (IOException e) {
- throw new IllegalArgumentException("While deserializing JSON error", e);
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataReader.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataReader.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataReader.java
index dad3707..9cc3c74 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataReader.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataReader.java
@@ -20,10 +20,9 @@ package org.apache.olingo.client.core.op.impl;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.StringUtils;
import org.apache.olingo.client.api.ODataClient;
-import org.apache.olingo.client.api.Constants;
import org.apache.olingo.client.api.data.Error;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.domain.ODataEntity;
import org.apache.olingo.client.api.domain.ODataEntitySet;
import org.apache.olingo.client.api.domain.ODataEntitySetIterator;
@@ -39,9 +38,6 @@ import org.apache.olingo.client.api.format.ODataValueFormat;
import org.apache.olingo.client.api.op.ODataReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
public abstract class AbstractODataReader implements ODataReader {
@@ -70,33 +66,7 @@ public abstract class AbstractODataReader implements ODataReader {
@Override
public ODataProperty readProperty(final InputStream input, final ODataFormat format) {
- final Element property = client.getDeserializer().toPropertyDOM(input, format);
-
- // The ODataProperty object is used either for actual entity properties and for invoke result
- // (when return type is neither an entity nor a collection of entities).
- // Such formats are mostly the same except for collections: an entity property looks like
- // <aproperty m:type="Collection(AType)">
- // <element>....</element>
- // </aproperty>
- //
- // while an invoke result with returnType="Collection(AnotherType)" looks like
- // <functionImportName>
- // <element m:type="AnotherType">...</element>
- // <functionImportName>
- //
- // The code below is meant for "normalizing" the latter into
- // <functionImportName m:type="Collection(AnotherType)">
- // <element m:type="AnotherType">...</element>
- // <functionImportName>
- final String type = property.getAttribute(Constants.ATTR_M_TYPE);
- final NodeList elements = property.getElementsByTagName(Constants.ELEM_ELEMENT);
- if (StringUtils.isBlank(type) && elements != null && elements.getLength() > 0) {
- final Node elementType = elements.item(0).getAttributes().getNamedItem(Constants.ATTR_M_TYPE);
- if (elementType != null) {
- property.setAttribute(Constants.ATTR_M_TYPE, "Collection(" + elementType.getTextContent() + ")");
- }
- }
-
+ final Property property = client.getDeserializer().toProperty(input, format);
return client.getBinder().getODataProperty(property);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataSerializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataSerializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataSerializer.java
index 8be014c..b847354 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataSerializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/AbstractODataSerializer.java
@@ -20,33 +20,25 @@ package org.apache.olingo.client.core.op.impl;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
-
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
-import javax.xml.parsers.DocumentBuilder;
-
-import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.Constants;
+import org.apache.olingo.client.api.ODataClient;
import org.apache.olingo.client.api.data.Entry;
import org.apache.olingo.client.api.data.Feed;
import org.apache.olingo.client.api.data.Link;
+import org.apache.olingo.client.api.data.Property;
import org.apache.olingo.client.api.format.ODataFormat;
import org.apache.olingo.client.api.op.ODataSerializer;
-import org.apache.olingo.client.api.utils.XMLUtils;
-import org.apache.olingo.client.core.data.AbstractPayloadObject;
import org.apache.olingo.client.core.data.AtomEntryImpl;
import org.apache.olingo.client.core.data.AtomFeedImpl;
+import org.apache.olingo.client.core.data.AtomPropertyImpl;
import org.apache.olingo.client.core.data.AtomSerializer;
import org.apache.olingo.client.core.data.JSONEntryImpl;
import org.apache.olingo.client.core.data.JSONFeedImpl;
import org.apache.olingo.client.core.data.JSONPropertyImpl;
-import org.apache.olingo.client.core.xml.XMLParser;
-import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
public abstract class AbstractODataSerializer extends AbstractJacksonTool implements ODataSerializer {
@@ -56,7 +48,8 @@ public abstract class AbstractODataSerializer extends AbstractJacksonTool implem
public AbstractODataSerializer(final ODataClient client) {
super(client);
- this.atomSerializer = new AtomSerializer(client);
+
+ this.atomSerializer = new AtomSerializer(client.getServiceVersion());
}
@Override
@@ -88,16 +81,16 @@ public abstract class AbstractODataSerializer extends AbstractJacksonTool implem
}
@Override
- public void property(final Element element, final ODataFormat format, final OutputStream out) {
- property(element, format, new OutputStreamWriter(out));
+ public void property(final Property obj, final OutputStream out) {
+ property(obj, new OutputStreamWriter(out));
}
@Override
- public void property(final Element element, final ODataFormat format, final Writer writer) {
- if (format == ODataFormat.XML) {
- dom(element, writer);
+ public void property(final Property obj, final Writer writer) {
+ if (obj instanceof AtomPropertyImpl) {
+ atom((AtomPropertyImpl) obj, writer);
} else {
- json(element, writer);
+ json((JSONPropertyImpl) obj, writer);
}
}
@@ -109,34 +102,24 @@ public abstract class AbstractODataSerializer extends AbstractJacksonTool implem
@Override
public void link(final Link link, final ODataFormat format, final Writer writer) {
if (format == ODataFormat.XML) {
- xmlLink(link, writer);
+ atom(link, writer);
} else {
jsonLink(link, writer);
}
}
- @Override
- public void dom(final Node content, final OutputStream out) {
- dom(content, new OutputStreamWriter(out));
- }
-
- @Override
- public void dom(final Node content, final Writer writer) {
- XMLParser.PARSER.serialize(content, writer);
- }
-
/*
* ------------------ Protected methods ------------------
*/
- protected <T extends AbstractPayloadObject> void atom(final T obj, final Writer writer) {
+ protected <T> void atom(final T obj, final Writer writer) {
try {
- dom(atomSerializer.serialize(obj), writer);
+ atomSerializer.write(writer, obj);
} catch (Exception e) {
throw new IllegalArgumentException("While serializing Atom object", e);
}
}
- protected <T extends AbstractPayloadObject> void json(final T obj, final Writer writer) {
+ protected <T> void json(final T obj, final Writer writer) {
try {
getObjectMapper().writeValue(writer, obj);
} catch (IOException e) {
@@ -144,31 +127,6 @@ public abstract class AbstractODataSerializer extends AbstractJacksonTool implem
}
}
- protected void json(final Element element, final Writer writer) {
- try {
- final JSONPropertyImpl property = new JSONPropertyImpl();
- property.setContent(element);
- getObjectMapper().writeValue(writer, property);
- } catch (IOException e) {
- throw new IllegalArgumentException("While serializing JSON property", e);
- }
- }
-
- protected void xmlLink(final Link link, final Writer writer) {
- try {
- final DocumentBuilder builder = XMLUtils.DOC_BUILDER_FACTORY.newDocumentBuilder();
- final Document doc = builder.newDocument();
- final Element uri = doc.createElementNS(
- client.getServiceVersion().getNamespaceMap().get(ODataServiceVersion.NS_DATASERVICES),
- Constants.ELEM_URI);
- uri.appendChild(doc.createTextNode(link.getHref()));
-
- dom(uri, writer);
- } catch (Exception e) {
- throw new IllegalArgumentException("While serializing XML link", e);
- }
- }
-
protected void jsonLink(final Link link, final Writer writer) {
final ObjectMapper mapper = getObjectMapper();
final ObjectNode uri = mapper.createObjectNode();
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataObjectFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataObjectFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataObjectFactoryImpl.java
index 56767a6..023ac9e 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataObjectFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataObjectFactoryImpl.java
@@ -160,7 +160,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newEntityNavigationLink(final String name, final URI link) {
- return new ODataLink(client.getServiceVersion(), link, ODataLinkType.ENTITY_NAVIGATION, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+ setType(ODataLinkType.ENTITY_NAVIGATION).setTitle(name).build();
}
/**
@@ -173,7 +174,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newEntityNavigationLink(final String name, final URI baseURI, final String href) {
- return new ODataLink(client.getServiceVersion(), baseURI, href, ODataLinkType.ENTITY_NAVIGATION, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+ setType(ODataLinkType.ENTITY_NAVIGATION).setTitle(name).build();
}
/**
@@ -185,7 +187,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newFeedNavigationLink(final String name, final URI link) {
- return new ODataLink(client.getServiceVersion(), link, ODataLinkType.ENTITY_SET_NAVIGATION, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+ setType(ODataLinkType.ENTITY_SET_NAVIGATION).setTitle(name).build();
}
/**
@@ -198,7 +201,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newFeedNavigationLink(final String name, final URI baseURI, final String href) {
- return new ODataLink(client.getServiceVersion(), baseURI, href, ODataLinkType.ENTITY_SET_NAVIGATION, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+ setType(ODataLinkType.ENTITY_SET_NAVIGATION).setTitle(name).build();
}
/**
@@ -210,7 +214,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newAssociationLink(final String name, final URI link) {
- return new ODataLink(client.getServiceVersion(), link, ODataLinkType.ASSOCIATION, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+ setType(ODataLinkType.ASSOCIATION).setTitle(name).build();
}
/**
@@ -223,7 +228,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newAssociationLink(final String name, final URI baseURI, final String href) {
- return new ODataLink(client.getServiceVersion(), baseURI, href, ODataLinkType.ASSOCIATION, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+ setType(ODataLinkType.ASSOCIATION).setTitle(name).build();
}
/**
@@ -235,7 +241,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newMediaEditLink(final String name, final URI link) {
- return new ODataLink(client.getServiceVersion(), link, ODataLinkType.MEDIA_EDIT, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(link).
+ setType(ODataLinkType.MEDIA_EDIT).setTitle(name).build();
}
/**
@@ -248,7 +255,8 @@ public class ODataObjectFactoryImpl implements ODataObjectFactory {
*/
@Override
public ODataLink newMediaEditLink(final String name, final URI baseURI, final String href) {
- return new ODataLink(client.getServiceVersion(), baseURI, href, ODataLinkType.MEDIA_EDIT, name);
+ return new ODataLink.Builder().setVersion(client.getServiceVersion()).setURI(baseURI, href).
+ setType(ODataLinkType.MEDIA_EDIT).setTitle(name).build();
}
/**
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3BinderImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3BinderImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3BinderImpl.java
index 7b092da..cf48c94 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3BinderImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3BinderImpl.java
@@ -27,9 +27,4 @@ public class ODataV3BinderImpl extends AbstractODataBinder {
public ODataV3BinderImpl(final ODataV3ClientImpl client) {
super(client);
}
-
-// @Override
-// protected EdmType newEdmType(final String expression) {
-// return new EdmV3Type(expression);
-// }
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/381b4170/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3DeserializerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3DeserializerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3DeserializerImpl.java
index 4a0f04a..814874e 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3DeserializerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/op/impl/ODataV3DeserializerImpl.java
@@ -18,7 +18,6 @@
*/
package org.apache.olingo.client.core.op.impl;
-import java.io.IOException;
import java.io.InputStream;
import org.apache.olingo.client.api.ODataClient;
@@ -49,13 +48,9 @@ public class ODataV3DeserializerImpl extends AbstractODataDeserializer implement
@Override
public ServiceDocument toServiceDocument(final InputStream input, final ODataFormat format) {
- try {
- return format == ODataFormat.XML
- ? getXmlMapper().readValue(input, XMLServiceDocumentImpl.class)
- : getObjectMapper().readValue(input, JSONServiceDocumentImpl.class);
- } catch (IOException e) {
- throw new IllegalArgumentException("Could not parse Service Document", e);
- }
+ return format == ODataFormat.XML
+ ? xml(input, XMLServiceDocumentImpl.class)
+ : json(input, JSONServiceDocumentImpl.class);
}
}