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/04/04 17:25:32 UTC

[1/7] [OLINGO-175] Enabling fit to respond to action / function invocation (V3)

Repository: olingo-odata4
Updated Branches:
  refs/heads/master 86ab7ef0f -> 9f6c06391


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/GetSpecificCustomer.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/GetSpecificCustomer.xml b/fit/src/main/resources/v3/GetSpecificCustomer.xml
new file mode 100644
index 0000000..f3dfda9
--- /dev/null
+++ b/fit/src/main/resources/v3/GetSpecificCustomer.xml
@@ -0,0 +1,200 @@
+<?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.
+
+-->
+<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/GetSpecificCustomer</id>
+  <title type="text">GetSpecificCustomer</title>
+  <updated>2014-04-03T14:27:37Z</updated>
+  <link rel="self" title="GetSpecificCustomer" href="GetSpecificCustomer"/>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Customer(-8)</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(-8)"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customer(-8)/Orders"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Logins" type="application/atom+xml;type=feed" title="Logins" href="Customer(-8)/Logins"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Husband" type="application/atom+xml;type=entry" title="Husband" href="Customer(-8)/Husband"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Wife" type="application/atom+xml;type=entry" title="Wife" href="Customer(-8)/Wife"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Info" type="application/atom+xml;type=entry" title="Info" href="Customer(-8)/Info"/>
+    <title/>
+    <summary type="text"></summary>
+    <updated>2014-04-03T14:27:37Z</updated>
+    <author>
+      <name/>
+    </author>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Thumbnail" title="Thumbnail" href="Customer(-8)/Thumbnail"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/edit-media/Video" title="Video" href="Customer(-8)/Video"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:CustomerId m:type="Edm.Int32">-8</d:CustomerId>
+        <d:Name m:null="true"/>
+        <d:PrimaryContactInfo m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+          <d:EmailBag m:type="Collection(Edm.String)">
+            <d:element>ヲまポマほяひんまぞびぁゾァ亜ミネ弌ぴダぁんソせタ歹яチミボ縷ゾせ匚歹ゼソネぼゼミソそボゼ弌ボせぽそマ黑ソぞ縷ポ珱チびゼЯハバポぼマヲミタグぼЯダ匚欲チべ暦マミぴzんハzヲёヲ裹びダ縷弌</d:element>
+            <d:element>ylhsxzpyyshr</d:element>
+            <d:element>exjbedardqaufugbqgrrshzxdghrcngpnskzgpfuusieu</d:element>
+            <d:element>kkqdn</d:element>
+            <d:element>裹ダaマ珱まソミまクほハァゼ珱ぁё畚畚ネァzせべぞクほ九裹ぜぁンя縷ぜ暦マポンチまグ亜ソ歹ポミぜボボほミミミまzソミチゾёミ</d:element>
+            <d:element>cmjdeggvfryupgkpoocvfddnogzik</d:element>
+            <d:element>pupidvpdyyjaguxhixzpngßßdyoshdhvohqkvhhgnßalxdcjmqarqssa</d:element>
+          </d:EmailBag>
+          <d:AlternativeNames m:type="Collection(Edm.String)">
+            <d:element>jryzplqzssohptlnepfmoaqtuudtuuhhdbnßrrijßchfdoaduezkssslvusssofuktpuohulzjlymzqgla</d:element>
+            <d:element>odyjmrsbryzobtprkapiqokyeumujjqgdbfjpgmqjduklsdozpaaixv</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>ぽハ珱яソぺせそソヲマグネЯゼま縷ソぴ欲ソポまゼァクボボ</d:PhoneNumber>
+            <d:Extension>nybsszdsunynocmßvpimshzxpflsipkodkvvivljqtjdniuuvhxayrvlqepqjnpuiudsjszaosyßssrfmufytuk</d:Extension>
+          </d:HomePhone>
+          <d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+            <d:PhoneNumber>buze</d:PhoneNumber>
+            <d:Extension>ujsojuxutvlzsikiqvhpkqeelvudruurjlrqmsdyleusuudigvhcvmdogqnmapkzaumchtmxnjijufcf</d:Extension>
+          </d:WorkPhone>
+          <d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+            <d:element>
+              <d:PhoneNumber>xzbnfxutsszpytßresnflrjkygejfßfsqmlssreymsuymbxsspdrmahn</d:PhoneNumber>
+              <d:Extension>gbckxtqbßgdaaaxepsvycehluqlfgeppmbsrddzuyaxqgc</d:Extension>
+            </d:element>
+            <d:element>
+              <d:PhoneNumber>dincdxtdccgyzurmvfbufuqßcbuuzssßoßiflssßkvmarznossxrsxbßnrlkpßiepgfcbyxkupxyhcfitkidssmbivujjxehßg</d:PhoneNumber>
+              <d:Extension>rgcihloßfpghhtozxoiubkeljqocynqfqteoyu</d:Extension>
+            </d:element>
+            <d:element>
+              <d:PhoneNumber m:null="true"/>
+              <d:Extension m:null="true"/>
+            </d:element>
+            <d:element>
+              <d:PhoneNumber>jfc</d:PhoneNumber>
+              <d:Extension m:null="true"/>
+            </d:element>
+            <d:element>
+              <d:PhoneNumber>cdurugzoussatrsaar</d:PhoneNumber>
+              <d:Extension>ylghuuzta</d:Extension>
+            </d:element>
+            <d:element>
+              <d:PhoneNumber>xilvsbßtpefvqcexaxkifuhdpmzftssppoyussuvgyibzgihbuubßpskmitccudsarkssteorclnßixeb</d:PhoneNumber>
+              <d:Extension>lyaxpgibymunjbcvhrjrplsiokhcqeauiokrjtegzxrqfymxnbtlxjxa</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>チ裹ダクゾをミダゼボポぁミ九暦ぁ匚びaタポソぼタ縷ポべソゾタЯ縷ソぞァ欲ぞヲソぼひё匚ひ珱畚ミびぴたたハほゼびぜポёゾ歹ぜぼぁ縷バ匚ボバゼンa欲ミポクボマせポяaяぽァ</d:element>
+              <d:element>asscuilquzßynicoubcgynenjnhkzißtmboprbxxgomkrvmpuvdeoenißjxpsasi</d:element>
+              <d:element>gypknhgzsenxnauqitxnjpepcgbufhjlhhopof</d:element>
+              <d:element>ぁ暦ёクタぺチ縷ァバぽяポa九裹Яほぺびぴポァバせゾぴ縷ぴチ匚そほ欲ゼ暦яぽミぞポぽЯ暦ひゾミゾゼミぞせソゾチゼゾソまЯяママ匚欲ひ匚歹タz縷ミタせタaポ</d:element>
+              <d:element>uslljsrtdßgpßtoßpcßasyßkxjphßqtssarcgbcgumapmqftvßngjnjyztaq</d:element>
+              <d:element>spcgnfkttfvulqdjvmqthjdfhntf</d:element>
+              <d:element>febdzdcrhdbsamrxbnduiffvffyyzluuprmtdhfunuckbqdtrqnrdzlzsgypf</d:element>
+              <d:element>たЯたまЯ黑ボ暦ぽぞチぽせ歹ポポあひほァzソ縷ボべダぁaソマ暦ァぜグァぴタン匚暦ё匚ソひゼぼ黑裹マまチびぁゼaミぞタせソ珱マァチァほびマゾソぞあゼソをびネミべzボひぼびぞボぽマ</d:element>
+            </d:EmailBag>
+            <d:AlternativeNames m:type="Collection(Edm.String)">
+              <d:element></d:element>
+              <d:element>fjvuuibhbuktpisshdourjujqzkcxhouekzsivavhseapupnrvqrtlcvdjobpzltefrooaplddhyhuuvfvmashhmcikqruc</d:element>
+              <d:element>zfoljqcojkifkipdxsjlepyuxe</d:element>
+              <d:element>ソёzポたぴゾミ弌ゼ珱九ボン裹ソaバァぁゼaゾЯ九ぺァゼzボゼぞんんネソひボァaぞチそんチ亜ゼボяミヲソべ縷ゼタタz黑a歹ぜ匚ひёミソんЯソままぽゼa珱欲ぴソン暦</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ぽ歹ァせボチソマび弌ヲダミァタaそそミチゾぜ暦яゼチゾぁチ珱ァ黑ぁ畚aハポミぜ弌匚ン亜ぞソグ九バミ弌まヲまほソびёんマあせゼそんソぁゾ珱ゼ黑ぽゼяz弌ゾァポチя暦裹</d:element>
+                <d:element>クボ欲ゼ九チァёёミグ縷ソマゼ縷裹べ弌タ裹zァソン歹ク九ポぼびёク亜せソポソポク黑クネほゼバ裹ンひぞ黑マチほポゼぽ</d:element>
+              </d:AlternativeNames>
+            </d:ContactAlias>
+            <d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+              <d:PhoneNumber>vmgmspßcknjqnßoahsshpmglloirufeuufßbsi</d:PhoneNumber>
+              <d:Extension m:null="true"/>
+            </d:HomePhone>
+            <d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+              <d:PhoneNumber>oqokugaßxaxlexj</d:PhoneNumber>
+              <d:Extension>ク弌ぼをチ弌ゼzをミネゼバ歹ァクゾzぺンaあ弌ァんぞミポぺマボソクンぞグ畚んチポ亜ゼマぼ珱チぼボミゾ裹ポミ欲ンをン黑ンゼあ亜ミボせタぁバミヲゾびクチぺタクタゾミ畚せaミ弌ネ九タン欲グヲァ</d:Extension>
+            </d:WorkPhone>
+            <d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+              <d:element>
+                <d:PhoneNumber m:null="true"/>
+                <d:Extension>lpxsardonkyjhcmzuzuislpxnlvbzbudgo</d:Extension>
+              </d:element>
+            </d:MobilePhoneBag>
+          </d:element>
+          <d:element>
+            <d:EmailBag m:type="Collection(Edm.String)">
+              <d:element>ernylxxlennurcenaaaukveogppiceftqcshoniaqztpheoefmbbuzcbpjmvcucadtlkkpjhxa</d:element>
+              <d:element>kugmpusyi</d:element>
+            </d:EmailBag>
+            <d:AlternativeNames m:type="Collection(Edm.String)">
+              <d:element>匚マёほ亜歹ミ九ァハタポチポた匚をたソ匚そぴマぺァポぁチひびひ歹ゾ裹縷九グマぼマ九ァそび暦畚Яそチせ暦ゾぺべソチ</d:element>
+              <d:element>ぜ匚ひハひゼマびポ匚ゼゼボ縷弌ё亜あタゼゾボzяあグポボまソを亜チ暦た裹チ九ヲ九ぜマァァひポびバソひマゾソゼゼソ歹たタ匚亜あ裹ぺゾボ歹暦ミ縷ソяそ匚ん弌んバ珱ゼぴぁぴそ亜弌をび</d:element>
+              <d:element>ソぺびネё</d:element>
+              <d:element>lugvmrqhqenocdonrxtjqfqheuatytdzbsfmuuphihniumuoindoapuuuzurqvjxtpylymsmcggdsmnkavrflo</d:element>
+              <d:element>ujxgsstcsstgbpfbnxtzrfykphgsvuohqrhssuozcfrogacjysromvcfd</d:element>
+              <d:element>ソンほ裹せ欲ァマタほグゼソ黑タチЯぴダゼクンソネたяボチゼァそぼぁをソぺあ亜яタポタ畚ポァぼマチまポをせぞんソゾタぼ九あぴ弌んびそそクぞソまタほひя九欲ぞ弌ポ裹んёぽ</d:element>
+              <d:element>os</d:element>
+            </d:AlternativeNames>
+            <d:ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+              <d:AlternativeNames m:type="Collection(Edm.String)">
+                <d:element>fvbqlbxmiauexompgsnusolnoizndlnrbbqvnjcjasycmziaubnybubugpmjbddnhkurjqaxkuuzbcaozzjexpkezllyxubsk</d:element>
+                <d:element>ひグチゾぴマソяァ</d:element>
+                <d:element>バゼソぺ珱ぴミ亜ネ匚九黑</d:element>
+                <d:element></d:element>
+                <d:element>ゾ裹ゼaンバゼa縷</d:element>
+                <d:element>rsmgglgzxdniogppforsecserqhvtydlmliagtrkfzbbdft</d:element>
+                <d:element>バ匚ゾゼゼソЯゾポポそタぴヲネせタボまボまゾゼぴソせぁタ匚ゼ縷匚畚яんタёたぜボЯ縷たぁグ欲弌ぼほべ弌びァァゾぜグをンんゼゾマほ匚ァボひボソぁグタポボゼクァ</d:element>
+              </d:AlternativeNames>
+            </d:ContactAlias>
+            <d:HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+              <d:PhoneNumber>prjllbusotcluxdeupntuhqqrisakganuopixipjdfbrjibjetjqblhbas</d:PhoneNumber>
+              <d:Extension>dvuqgedbuiaum</d:Extension>
+            </d:HomePhone>
+            <d:WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+              <d:PhoneNumber>fßszgjssjeofussuekssvuuuyqgraapaimbnuunyjcrgxuavxbguußkysooipshsojssqiqvßmpmnixfsqnxvrvd</d:PhoneNumber>
+              <d:Extension>eekdsvzbjbhqbhgcujxsvuhjavmafoumtssyadtropvlbvnhdliqumabpacxdyvdgvxkqhcvqupbyxcucurteug</d:Extension>
+            </d:WorkPhone>
+            <d:MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+              <d:element>
+                <d:PhoneNumber>xj</d:PhoneNumber>
+                <d:Extension>gssotzfbaßzvdtu</d:Extension>
+              </d:element>
+              <d:element>
+                <d:PhoneNumber>bukrso</d:PhoneNumber>
+                <d:Extension>九ソソク九裹べそソ欲タ珱ひゼまaほダほ黑ほァzマクネ畚ぼグチ弌せクほぺソァ黑Я畚黑ダボゼチグЯあゼ欲裹チネaタゼゾ九Я匚яz九裹ёゼゾaび欲ハんダグЯマミ</d:Extension>
+              </d:element>
+            </d:MobilePhoneBag>
+          </d:element>
+        </d:BackupContactInfo>
+        <d:Auditing m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo">
+          <d:ModifiedDate m:type="Edm.DateTime">2014-07-02T05:26:37.3447573</d:ModifiedDate>
+          <d:ModifiedBy>jruznxbvzt</d:ModifiedBy>
+          <d:Concurrency m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo">
+            <d:Token>nbnanxuqynaubibbtfebfvzhflexabaivxdfibllvuaavhpvnlmtuvmscuqevyqsmyyfuvonumfuuzlxxudkpbczfmi</d:Token>
+            <d:QueriedDateTime m:type="Edm.DateTime">2013-01-11T03:38:30.0434315</d:QueriedDateTime>
+          </d:Concurrency>
+        </d:Auditing>
+      </m:properties>
+    </content>
+  </entry>
+</feed>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.full.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.full.json b/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.full.json
new file mode 100644
index 0000000..bb2e6d2
--- /dev/null
+++ b/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.full.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","value":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(-10)","odata.editLink":"Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","PersonMetadata@odata.navigationLinkUrl":"Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager","Car@odata.navigationLinkUrl":"Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"},"PersonId":-10,"Name":"\u307a\u
 30bd\u305e\u5f0c\u30bf\u30a1\u531a\u30bf\u307d\u3072\u30cf\u6b32\u3074\u307b\u531a\u305b\u307e\u305f\u30d0\u30dc\u30c1\u30de\u531a\u3041\u30be\u30bd\u30c1\u3041\u042f\u305d\u3041\u30df\u044f\u66a6\u755a\u30dc\u6b79\u3072\u042f\u307b\u30c0\u30c1\u305d\u042f\u305b\u307d\u30bc\u30dd\u042f\u30c1\uff41\u305f\u6b79\u305f\u3092\u30bf\u30de\u305b\u3092\u305b\u531a\u30df\u30bf\u3072\u305c\u755a\u66a6\u30b0\u30af\u3072\u307b\u305d\u305f\u30b0\u305b\u044f\u30c1\u531a\uff66\u307a\u3041\u88f9\u3041\u30bd\u3073\u9ed1\u88f9\u7e37","ManagersPersonId":47,"Salary":4095,"Title":"\u307a\u30bd\u042f\u3092\u6b79\u30a1\u6b32\u042f\u30bd\u3042\u307d\uff66\uff41\u305d\u305b\u044f\u7e37\u30dd\u305b\uff88\u3074\uff66\u9ed1\u755a\u044f\u307b\u30be\u307b\u3079\uff41\u307b\uff88\u30d0\u755a\u4e5d\u4e9c\u0451\u30cf\u3079\u305c\u30a1\u88f9\u30bd\u6b32\u307b\u30b0\uff9d\u30dd\u5f0c\u9ed1\u30c1\u3073\uff66\uff88\u30df\u307c\u30bf\u305f\u307e\u30d0\u6b79\u30c1\u66a6\u30bf\u6b32\u3092\u30af\u3041\u30af\u3093\uff9d\u30
 7e\u30bd\uff88\u30dc\u307e\u30bf\u305c\u30dc\u30dd\u307b\u6b79\u30bd\u3092\u30a1\u3042\u044f\u30dc\u305f\u30be\u307b","CarsVIN":-1911530027,"Bonus":-37730565,"IsFullyVested":false},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(-9)","odata.editLink":"Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","PersonMetadata@odata.navigationLinkUrl":"Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager","Car@odata.navigationLinkUrl":"Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"},"PersonI
 d":-9,"Name":"stiuictvznkcvledkjnnluuvkmyumyfduxmjqpfnbjqgmvhuiytjbjinzbfmf","ManagersPersonId":-8429952,"Salary":-2147483644,"Title":"\u30d0\u30dc\u6b79\u305d\u042f\u30bc\u3041\u30be\u30bd\u3093\u30dc\u305f\u305d\u4e5d\u30dc\u3072\u73f1\u3042\u30de\u66a6\uff9d\u30bd\u30bd\u30a1\u531a\u307c\u307b\u305f\u30dc\u305c\u30af\u531a\u30bd\u755a\u30be\u3093\uff41\u30a1\u3079\u3042\u044f\u305b\u30bf\u7e37\u30de\u30bc\u3079\u307a\u30de\u7e37\u30bc\u305e\u30bc\u305f\uff5a\u305f\u305f\u30bf\u30a1\u4e5d\u3072\u9ed1\u7e37\u30af\uff66\u6b79\u30de\u307b\u307c\u3092\u307a\u30bf\u755a\u30dc\u5f0c\u9ed1\uff5a\u30cf\u30dc\u30af\u0451\u044f\u30bd\u30df\u30de\u307b\u30bc\u307e\uff41\u30a1\u3072\u30bc\uff9d\u30bd\u9ed1","CarsVIN":-2147483648,"Bonus":-2147483648,"IsFullyVested":false},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(-8)","odata.editLink":"Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaul
 tService.SpecialEmployee","PersonMetadata@odata.navigationLinkUrl":"Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager","Car@odata.navigationLinkUrl":"Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"},"PersonId":-8,"Name":"vypuyxjjxlzfldvppqxkmzdnnapmugyumusqfrnaotviyfbudutxksfvpabxdxdmnosflbfxevfsouqdutczmaguuxaf","ManagersPersonId":3777,"Salary":334131144,"Title":"\u305b\u755a\u73f1\u6b32\u30d0\u30bc\u30c1\u30df\u30be\u30a1\u9ed1\u305c\u30be\u30dc\u3093\uff9d\u30c1\u5f0c\uff5a\u30bf\u30dc\u3073\u042f\u30bc\u30b0\u305e\u305b\u307c\u73f1\u30dd\u88f9","CarsVIN":-4784,"Bonus":2147483647,"IsFullyVested":true},{
 "odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(-7)","odata.editLink":"Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee","PersonMetadata@odata.navigationLinkUrl":"Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager","Car@odata.navigationLinkUrl":"Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"},"PersonId":-7,"Name":"\u3073\u305e\u042f\u30bd\u307a\u307d\u30a1\u3041\u30c0\u3092\u30bd\u30dc\u0451\u66a6\u5f0c\u88f9\u30be\u3042\u30c0\u30de\u88f9\u305e\u30dc\u6b79\u307e\u307b\u307c\u4e9c
 \u307d\u305b\u9ed1\u3092\u30df\u30bf\u30bc\u30bd\u307a\u305e\uff88\u044f\u30d0\uff41\u3041\u0451\u3074\u307d","ManagersPersonId":-56,"Salary":2016141260,"Title":"uuzantjguxlhfqgilizenqahpiqcqznzgyeyzaaonqagfcfxkuu","CarsVIN":2147483647,"Bonus":-9620,"IsFullyVested":false},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(-6)","odata.editLink":"Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","PersonMetadata@odata.navigationLinkUrl":"Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Manager","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Sack"},"PersonId":-6,"Name":"vnqfkvpolnxvurgxpfbfquqrqxqxknjykkuapsqcmbeu
 slhkqufultvr","ManagersPersonId":-9918,"Salary":-2147483645,"Title":"osshrngfyr\u00dfulolssumccqfdktqkisioexmuevutzgnjmnajpk\u00dflesslapymreidqunzzss\u00dfkuaufyiyuztbyrsqeo"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(-3)","odata.editLink":"Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","PersonMetadata@odata.navigationLinkUrl":"Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Manager","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Sack"},"PersonId":-3,"Name":"ybqmssrdtj\u00dfcbhhmfxvhoxlssekuuibnmltiahdssxnpktmtorxfme\u00dfbbujc","ManagersPersonId":-465010984,"Salary":4,"Title":"\u30df\u30bd\u307e
 \u30b0\u305f\u044f\u7e37\uff66\u5f0c\u30c0\u30bc\u4e9c\u30bc\u3092\u3093\u30be\u88f9\u4e9c\u30de\u30be\u30c0\u3093\u30bf\u30a1\u30cf\u305d\u30dd\u7e37\u3041\u30dc\u30b0\u9ed1\u73f1\u3041\u044f\u30dd\u30b0\u30bd\u3072\u30be\u3072\u042f\u30b0\u30dd\u30b0\u30dc\u6b32\u3092\u4e9c"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","odata.id":"http://192.168.0.160:8080/DefaultService.svc/Person(0)","odata.editLink":"Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee","PersonMetadata@odata.navigationLinkUrl":"Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/PersonMetadata","Manager@odata.navigationLinkUrl":"Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Manager","#DefaultContainer.Sack":{"title":"Sack","target":"http://192.168.0.160:8080/DefaultService.svc/Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Sack"},"PersonId":0,"Name":"\u30bd\u3092\u30dd\u307d\u30bd\u6b79\u3079\u
 305e\u30de\u307e\u531a\u30bd\u30d0\u4e5d\u30df\uff66\u307e\u30bd\u30dc\u30bc\u305b\u30bc\u30bf\u30a1\uff88\u042f\u305d\u307e\u305b\u305d\u30c0\u042f\u30de\u30bd\u30bc\u3092\u307e\u30cf\u88f9\u30c1\u3093\u30bd\u30de\u30bc\u30b0\u307c\u30b0\u30bc\u30de\u30dc\u30dd\u307d\u3074\u30bc\u30dd\u042f\u531a\u30a1\u307e\u30bd\u30df\uff41\u0451\u30c1\u30df\u531a\u531a\u305f\u30a1\u30bc\u30dd\u30de\u30c1\u305b\u305b","ManagersPersonId":5309,"Salary":89,"Title":"vdvjmssfkxhjosplcid\u00dfsssogadrhn"}]}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.xml b/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.xml
new file mode 100644
index 0000000..14d5f5d
--- /dev/null
+++ b/fit/src/main/resources/v3/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/feed.xml
@@ -0,0 +1,200 @@
+<?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.
+
+-->
+<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">
+  <id>http://192.168.0.160:8080/DefaultService.svc/Person/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee</id>
+  <title type="text">Microsoft.Test.OData.Services.AstoriaDefaultService.Employee</title>
+  <updated>2014-04-03T14:22:40Z</updated>
+  <link rel="self" title="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" href="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee"/>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(-10)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Car" type="application/atom+xml;type=entry" title="Car" href="Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(-10)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">-10</d:PersonId>
+        <d:Name>ぺソぞ弌タァ匚タぽひハ欲ぴほ匚せまたバボチマ匚ぁゾソチぁЯそぁミя暦畚ボ歹ひЯほダチそЯせぽゼポЯチaた歹たをタマせをせ匚ミタひぜ畚暦グクひほそたグせяチ匚ヲぺぁ裹ぁソび黑裹縷</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">47</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">4095</d:Salary>
+        <d:Title>ぺソЯを歹ァ欲Яソあぽヲaそせя縷ポせネぴヲ黑畚яほゾほべaほネバ畚九亜ёハべぜァ裹ソ欲ほグンポ弌黑チびヲネミぼタたまバ歹チ暦タ欲をクぁクんンまソネボまタぜボポほ歹ソをァあяボたゾほ</d:Title>
+        <d:CarsVIN m:type="Edm.Int32">-1911530027</d:CarsVIN>
+        <d:Bonus m:type="Edm.Int32">-37730565</d:Bonus>
+        <d:IsFullyVested m:type="Edm.Boolean">false</d:IsFullyVested>
+      </m:properties>
+    </content>
+  </entry>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(-9)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Car" type="application/atom+xml;type=entry" title="Car" href="Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(-9)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">-9</d:PersonId>
+        <d:Name>stiuictvznkcvledkjnnluuvkmyumyfduxmjqpfnbjqgmvhuiytjbjinzbfmf</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">-8429952</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">-2147483644</d:Salary>
+        <d:Title>バボ歹そЯゼぁゾソんボたそ九ボひ珱あマ暦ンソソァ匚ぼほたボぜク匚ソ畚ゾんaァべあяせタ縷マゼべぺマ縷ゼぞゼたzたたタァ九ひ黑縷クヲ歹マほぼをぺタ畚ボ弌黑zハボクёяソミマほゼまaァひゼンソ黑</d:Title>
+        <d:CarsVIN m:type="Edm.Int32">-2147483648</d:CarsVIN>
+        <d:Bonus m:type="Edm.Int32">-2147483648</d:Bonus>
+        <d:IsFullyVested m:type="Edm.Boolean">false</d:IsFullyVested>
+      </m:properties>
+    </content>
+  </entry>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(-8)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Car" type="application/atom+xml;type=entry" title="Car" href="Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(-8)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">-8</d:PersonId>
+        <d:Name>vypuyxjjxlzfldvppqxkmzdnnapmugyumusqfrnaotviyfbudutxksfvpabxdxdmnosflbfxevfsouqdutczmaguuxaf</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">3777</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">334131144</d:Salary>
+        <d:Title>せ畚珱欲バゼチミゾァ黑ぜゾボんンチ弌zタボびЯゼグぞせぼ珱ポ裹</d:Title>
+        <d:CarsVIN m:type="Edm.Int32">-4784</d:CarsVIN>
+        <d:Bonus m:type="Edm.Int32">2147483647</d:Bonus>
+        <d:IsFullyVested m:type="Edm.Boolean">true</d:IsFullyVested>
+      </m:properties>
+    </content>
+  </entry>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(-7)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Manager"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Car" type="application/atom+xml;type=entry" title="Car" href="Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Car"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(-7)/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">-7</d:PersonId>
+        <d:Name>びぞЯソぺぽァぁダをソボё暦弌裹ゾあダマ裹ぞボ歹まほぼ亜ぽせ黑をミタゼソぺぞネяバaぁёぴぽ</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">-56</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">2016141260</d:Salary>
+        <d:Title>uuzantjguxlhfqgilizenqahpiqcqznzgyeyzaaonqagfcfxkuu</d:Title>
+        <d:CarsVIN m:type="Edm.Int32">2147483647</d:CarsVIN>
+        <d:Bonus m:type="Edm.Int32">-9620</d:Bonus>
+        <d:IsFullyVested m:type="Edm.Boolean">false</d:IsFullyVested>
+      </m:properties>
+    </content>
+  </entry>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(-6)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Manager"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(-6)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">-6</d:PersonId>
+        <d:Name>vnqfkvpolnxvurgxpfbfquqrqxqxknjykkuapsqcmbeuslhkqufultvr</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">-9918</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">-2147483645</d:Salary>
+        <d:Title>osshrngfyrßulolssumccqfdktqkisioexmuevutzgnjmnajpkßlesslapymreidqunzzssßkuaufyiyuztbyrsqeo</d:Title>
+      </m:properties>
+    </content>
+  </entry>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(-3)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Manager"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(-3)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">-3</d:PersonId>
+        <d:Name>ybqmssrdtjßcbhhmfxvhoxlssekuuibnmltiahdssxnpktmtorxfmeßbbujc</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">-465010984</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">4</d:Salary>
+        <d:Title>ミソまグたя縷ヲ弌ダゼ亜ゼをんゾ裹亜マゾダんタァハそポ縷ぁボグ黑珱ぁяポグソひゾひЯグポグボ欲を亜</d:Title>
+      </m:properties>
+    </content>
+  </entry>
+  <entry>
+    <id>http://192.168.0.160:8080/DefaultService.svc/Person(0)</id>
+    <category term="Microsoft.Test.OData.Services.AstoriaDefaultService.Employee" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
+    <link rel="edit" title="Employee" href="Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/PersonMetadata" type="application/atom+xml;type=feed" title="PersonMetadata" href="Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/PersonMetadata"/>
+    <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Manager" type="application/atom+xml;type=entry" title="Manager" href="Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Manager"/>
+    <title/>
+    <updated>2014-04-03T14:22:40Z</updated>
+    <author>
+      <name/>
+    </author>
+    <m:action metadata="http://192.168.0.160:8080/DefaultService.svc/$metadata#DefaultContainer.Sack" title="Sack" target="http://192.168.0.160:8080/DefaultService.svc/Person(0)/Microsoft.Test.OData.Services.AstoriaDefaultService.Employee/Sack"/>
+    <content type="application/xml">
+      <m:properties>
+        <d:PersonId m:type="Edm.Int32">0</d:PersonId>
+        <d:Name>ソをポぽソ歹べぞマま匚ソバ九ミヲまソボゼせゼタァネЯそませそダЯマソゼをまハ裹チんソマゼグぼグゼマボポぽぴゼポЯ匚ァまソミaёチミ匚匚たァゼポマチせせ</d:Name>
+        <d:ManagersPersonId m:type="Edm.Int32">5309</d:ManagersPersonId>
+        <d:Salary m:type="Edm.Int32">89</d:Salary>
+        <d:Title>vdvjmssfkxhjosplcidßsssogadrhn</d:Title>
+      </m:properties>
+    </content>
+  </entry>
+</feed>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/webapp/WEB-INF/applicationContext.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/webapp/WEB-INF/applicationContext.xml b/fit/src/main/webapp/WEB-INF/applicationContext.xml
index 18b555d..8a4a074 100644
--- a/fit/src/main/webapp/WEB-INF/applicationContext.xml
+++ b/fit/src/main/webapp/WEB-INF/applicationContext.xml
@@ -40,6 +40,7 @@
   <jaxrs:server id="services" address="/">
     <jaxrs:serviceBeans>
       <bean class="org.apache.olingo.fit.V3Services"/>
+      <bean class="org.apache.olingo.fit.V3KeyAsSegment"/>
       <bean class="org.apache.olingo.fit.V4Services"/>
       <bean class="org.apache.olingo.fit.V4NorthWind"/>
       <bean class="org.apache.olingo.fit.V4NorthWindExt"/>


[5/7] [OLINGO-234] Invoke requests working for V3 (with new Edm interfaces)

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
index 36eabb3..3e2a9f5 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java
@@ -22,6 +22,7 @@ import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
 import org.apache.olingo.commons.api.edm.EdmActionImport;
 import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.server.api.edm.provider.ActionImport;
 
 public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
@@ -35,8 +36,15 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
   }
 
   @Override
-  public EdmAction getAction() {
-    return edm.getAction(actionImport.getAction(), null, null);
+  public EdmAction getUnboundAction() {
+    return getBoundAction(null, null);
+  }
+
+  @Override
+  public EdmAction getBoundAction(
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
+    return edm.getAction(actionImport.getAction(), bindingParameterTypeName, isBindingParameterCollection);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
index e9a06c5..2c8a097 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java
@@ -38,8 +38,17 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
   }
 
   @Override
-  public EdmFunction getFunction(final List<String> parameterNames) {
-    return edm.getFunction(functionImport.getFunction(), null, null, parameterNames);
+  public EdmFunction getUnboundFunction(final List<String> parameterNames) {
+    return getBoundFunction(parameterNames, null, null);
+  }
+
+  @Override
+  public EdmFunction getBoundFunction(final List<String> parameterNames,
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
+    return edm.getFunction(functionImport.getFunction(),
+            bindingParameterTypeName, isBindingParameterCollection, parameterNames);
+
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
index d83ad86..61e7af7 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentXmlSerializer.java
@@ -231,7 +231,7 @@ public class MetadataDocumentXmlSerializer {
     for (EdmActionImport actionImport : actionImports) {
       writer.writeStartElement(XML_ACTION_IMPORT);
       writer.writeAttribute(XML_NAME, actionImport.getName());
-      writer.writeAttribute(XML_ACTION, getFullQualifiedName(actionImport.getAction(), false));
+      writer.writeAttribute(XML_ACTION, getFullQualifiedName(actionImport.getUnboundAction(), false));
       // TODO: Annotations
       writer.writeEndElement();
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/UriResourceActionImpl.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/UriResourceActionImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/UriResourceActionImpl.java
index 8196d03..4ca162c 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/UriResourceActionImpl.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/UriResourceActionImpl.java
@@ -50,7 +50,7 @@ public class UriResourceActionImpl extends UriResourceTypedImpl implements UriRe
 
   public UriResourceActionImpl setActionImport(final EdmActionImport actionImport) {
     this.actionImport = actionImport;
-    setAction(actionImport.getAction());
+    setAction(actionImport.getUnboundAction());
     return this;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
index 1747c0c..f237fea 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
@@ -336,7 +336,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
         }
 
         // get function from function import
-        EdmFunction function = edmFunctionImport.getFunction(names);
+        EdmFunction function = edmFunctionImport.getUnboundFunction(names);
         if (function == null) {
           String tmp = "";
           for (String name : names) {
@@ -346,7 +346,7 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
                   + "' with parameters [" + tmp + "] not found"));
         }
 
-        uriResource.setFunction(edmFunctionImport.getFunction(names));
+        uriResource.setFunction(edmFunctionImport.getUnboundFunction(names));
         context.contextUriInfo.addResourcePart(uriResource);
         return null;
       }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
index f3963f6..c9393aa 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImplTest.java
@@ -68,7 +68,7 @@ public class EdmActionImportImplTest {
   public void simpleActionTest() {
     assertEquals("actionImportName", actionImport.getName());
     assertTrue(container == actionImport.getEntityContainer());
-    assertTrue(action == actionImport.getAction());
+    assertTrue(action == actionImport.getUnboundAction());
   }
 
   @Test

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
index 8b8689c..22a5d37 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImplTest.java
@@ -73,7 +73,7 @@ public class EdmFunctionImportImplTest {
             = new EdmFunctionImportImpl(edm, entityContainer, functionImportProvider);
     assertEquals(functionImportName, entityContainer.getFunctionImport(functionImportName).getName());
     assertEquals("functionImport", functionImport.getName());
-    final EdmFunction function = functionImport.getFunction(Collections.<String>emptyList());
+    final EdmFunction function = functionImport.getUnboundFunction(Collections.<String>emptyList());
     assertEquals(functionName.getNamespace(), function.getNamespace());
     assertEquals(functionName.getName(), function.getName());
     assertFalse(function.isBound());

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
index 5575fef..ec7e1ee 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmSchemaImplTest.java
@@ -188,7 +188,7 @@ public class EdmSchemaImplTest {
     assertNotNull(actionImports);
     assertEquals(2, actionImports.size());
     for (EdmActionImport obj : actionImports) {
-      assertNotNull(obj.getAction());
+      assertNotNull(obj.getUnboundAction());
     }
 
     List<EdmFunctionImport> functionImports = container.getFunctionImports();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
index 7a5dc05..51a9638 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/UriResourceImplTest.java
@@ -86,10 +86,10 @@ public class UriResourceImplTest {
     EdmActionImport actionImport = edm.getEntityContainer(null).getActionImport("AIRTPrimParam");
     impl.setActionImport(actionImport);
     assertEquals(actionImport, impl.getActionImport());
-    assertEquals(actionImport.getAction(), impl.getAction());
+    assertEquals(actionImport.getUnboundAction(), impl.getAction());
     assertEquals(false, impl.isCollection());
     assertEquals("AIRTPrimParam", impl.toString());
-    assertEquals(actionImport.getAction().getReturnType().getType(), impl.getType());
+    assertEquals(actionImport.getUnboundAction().getReturnType().getType(), impl.getType());
   }
 
   @Test
@@ -201,7 +201,7 @@ public class UriResourceImplTest {
 
     // function
     EdmFunction function = (EdmFunction) edm.getEntityContainer(null).getFunctionImport("FINRTInt16")
-            .getFunction(new ArrayList<String>());
+            .getUnboundFunction(new ArrayList<String>());
     assertNotNull(function);
     impl.setFunction(function);
 
@@ -225,7 +225,7 @@ public class UriResourceImplTest {
     impl.setFunctionImport(functionImport, Arrays.asList(parameter));
     assertEquals("FICRTESTwoKeyNavParam", impl.toString());
 
-    impl.setFunction(functionImport.getFunction(Arrays.asList("ParameterInt16")));
+    impl.setFunction(functionImport.getUnboundFunction(Arrays.asList("ParameterInt16")));
     assertEquals(true, impl.isCollection());
     impl.setKeyPredicates(new ArrayList<UriParameterImpl>());
     assertEquals(false, impl.isCollection());


[6/7] git commit: [OLINGO-234] Invoke requests working for V3 (with new Edm interfaces)

Posted by il...@apache.org.
[OLINGO-234] Invoke requests working for V3 (with new Edm interfaces)


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

Branch: refs/heads/master
Commit: 44729da1982e3b3ca37e7eab99a26fbee74ca687
Parents: bb748ec
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 4 17:23:23 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 4 17:23:23 2014 +0200

----------------------------------------------------------------------
 .../invoke/CommonInvokeRequestFactory.java      |  19 +-
 .../request/invoke/ODataInvokeRequest.java      |   2 +
 .../response/ODataInvokeResponse.java           |  14 +-
 .../olingo/client/api/uri/CommonURIBuilder.java |   8 +
 .../communication/request/ODataRequestImpl.java |   6 +-
 .../invoke/AbstractInvokeRequestFactory.java    |   9 +-
 .../invoke/v3/InvokeRequestFactoryImpl.java     |  66 +--
 .../invoke/v4/InvokeRequestFactoryImpl.java     |  10 +-
 .../client/core/edm/EdmActionImportImpl.java    |  14 +-
 .../olingo/client/core/edm/EdmClientImpl.java   |   8 +-
 .../client/core/edm/EdmFunctionImportImpl.java  |   9 +-
 .../core/edm/v3/EdmActionImportProxy.java       |  13 +-
 .../core/edm/v3/EdmFunctionImportProxy.java     |  12 +-
 .../client/core/uri/AbstractURIBuilder.java     |   7 +
 .../apache/olingo/client/core/uri/URIUtils.java |  12 +-
 .../client/core/it/v3/AbstractTestITCase.java   |   3 +
 .../core/it/v3/EntityCreateTestITCase.java      |  20 +-
 .../client/core/it/v3/ErrorTestITCase.java      |   2 +-
 .../client/core/it/v3/InvokeTestITCase.java     | 555 ++++++++++---------
 .../core/it/v3/KeyAsSegmentTestITCase.java      |  18 +-
 .../apache/olingo/client/core/v3/JSONTest.java  |   8 +-
 .../olingo/client/core/v3/MetadataTest.java     |   6 +-
 .../apache/olingo/client/core/v4/JSONTest.java  |   8 +-
 .../olingo/client/core/v4/MetadataTest.java     |  10 +-
 .../commons/api/domain/ODataPrimitiveValue.java |   3 +
 .../olingo/commons/api/edm/EdmActionImport.java |  16 +-
 .../commons/api/edm/EdmFunctionImport.java      |  19 +-
 .../commons/core/data/JSONEntrySerializer.java  |   5 +
 .../domain/AbstractODataPrimitiveValue.java     |  14 +
 .../core/edm/provider/EdmActionImportImpl.java  |  12 +-
 .../edm/provider/EdmFunctionImportImpl.java     |  13 +-
 .../xml/MetadataDocumentXmlSerializer.java      |   2 +-
 .../server/core/uri/UriResourceActionImpl.java  |   2 +-
 .../core/uri/parser/UriParseTreeVisitor.java    |   4 +-
 .../edm/provider/EdmActionImportImplTest.java   |   2 +-
 .../edm/provider/EdmFunctionImportImplTest.java |   2 +-
 .../core/edm/provider/EdmSchemaImplTest.java    |   2 +-
 .../server/core/uri/UriResourceImplTest.java    |   8 +-
 38 files changed, 540 insertions(+), 403 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
index 0198b92..f6839b4 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/CommonInvokeRequestFactory.java
@@ -20,11 +20,10 @@ package org.apache.olingo.client.api.communication.request.invoke;
 
 import java.io.Serializable;
 import java.net.URI;
-import java.util.LinkedHashMap;
+import java.util.Map;
 import org.apache.olingo.commons.api.domain.ODataInvokeResult;
 import org.apache.olingo.commons.api.domain.ODataValue;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.EdmOperation;
 
 /**
  * OData request factory class.
@@ -36,26 +35,20 @@ public interface CommonInvokeRequestFactory extends Serializable {
    *
    * @param <RES> OData domain object result, derived from return type defined in the function import
    * @param uri URI that identifies the function import
-   * @param edm Edm metadata
-   * @param container Entity container
-   * @param functionImport function import to be invoked
+   * @param operation operation to be invoked
    * @return new ODataInvokeRequest instance.
    */
-  <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
-          URI uri, Edm edm, FullQualifiedName container, String functionImport);
+  <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(URI uri, EdmOperation operation);
 
   /**
    * Gets an invoke request instance.
    *
    * @param <RES> OData domain object result, derived from return type defined in the function import
    * @param uri URI that identifies the function import
-   * @param edm Edm metadata
-   * @param container Entity container
-   * @param functionImport function import to be invoked
+   * @param operation operation to be invoked
    * @param parameters parameters to pass to function import invocation
    * @return new ODataInvokeRequest instance.
    */
   <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
-          URI uri, Edm edm, FullQualifiedName container, String functionImport,
-          LinkedHashMap<String, ODataValue> parameters);
+          URI uri, EdmOperation operation, Map<String, ODataValue> parameters);
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/ODataInvokeRequest.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/ODataInvokeRequest.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/ODataInvokeRequest.java
index 986a13b..733008a 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/ODataInvokeRequest.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/request/invoke/ODataInvokeRequest.java
@@ -27,6 +27,8 @@ import org.apache.olingo.commons.api.format.ODataPubFormat;
 
 /**
  * This class implements an OData invoke operation request.
+ *
+ * @param <T> the actual invoke result
  */
 public interface ODataInvokeRequest<T extends ODataInvokeResult>
         extends ODataBasicRequest<ODataInvokeResponse<T>, ODataPubFormat> {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataInvokeResponse.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataInvokeResponse.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataInvokeResponse.java
index ab1d890..9d73d11 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataInvokeResponse.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/communication/response/ODataInvokeResponse.java
@@ -23,14 +23,14 @@ import org.apache.olingo.commons.api.domain.ODataInvokeResult;
 /**
  * This class implements a response to a specific invoke request.
  *
- * @see org.apache.olingo.client.core.communication.request.invoke.ODataInvokeRequest
+ * @param <T> the actual invoke result
  */
 public interface ODataInvokeResponse<T extends ODataInvokeResult> extends ODataResponse {
 
-    /**
-     * Gets operation return value if exists.
-     *
-     * @return operation return value.
-     */
-    T getBody();
+  /**
+   * Gets operation return value if exists.
+   *
+   * @return operation return value.
+   */
+  T getBody();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonURIBuilder.java
----------------------------------------------------------------------
diff --git a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonURIBuilder.java b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonURIBuilder.java
index 6a8ce0e..08f267e 100644
--- a/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonURIBuilder.java
+++ b/lib/client-api/src/main/java/org/apache/olingo/client/api/uri/CommonURIBuilder.java
@@ -112,6 +112,14 @@ public interface CommonURIBuilder<UB extends CommonURIBuilder<?>> {
    * Appends operation (action or function) segment to the URI.
    *
    * @param operation Operation (action or function) name
+   * @return current URIBuilder instance
+   */
+  UB appendOperationCallSegment(String operation);
+
+  /**
+   * Appends operation (action or function) segment to the URI.
+   *
+   * @param operation Operation (action or function) name
    * @param arguments Operation arguments
    * @return current URIBuilder instance
    */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
index 9d38461..3998a59 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/ODataRequestImpl.java
@@ -325,8 +325,7 @@ public class ODataRequestImpl<T extends Format> implements ODataRequest {
     final ByteArrayOutputStream baos = new ByteArrayOutputStream();
     try {
       final StringBuilder requestBuilder = new StringBuilder();
-      requestBuilder.append(getMethod().toString()).append(" ").
-              append(uri.toString()).append(" ").append("HTTP/1.1");
+      requestBuilder.append(getMethod().toString()).append(' ').append(uri.toString()).append(' ').append("HTTP/1.1");
 
       baos.write(requestBuilder.toString().getBytes());
 
@@ -425,9 +424,8 @@ public class ODataRequestImpl<T extends Format> implements ODataRequest {
         if (httpEntity == null) {
           throw new ODataClientErrorException(response.getStatusLine());
         } else {
-          final boolean isXML = getAccept().indexOf("json") == -1;
+          final boolean isXML = getAccept().contains("json");
           ODataError error;
-
           try {
             error = odataClient.getReader().readError(httpEntity.getContent(), isXML);
           } catch (IllegalArgumentException e) {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractInvokeRequestFactory.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractInvokeRequestFactory.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractInvokeRequestFactory.java
index eb0d45b..a1a1b8c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractInvokeRequestFactory.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/AbstractInvokeRequestFactory.java
@@ -23,8 +23,7 @@ import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.client.api.communication.request.invoke.CommonInvokeRequestFactory;
 import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
 import org.apache.olingo.commons.api.domain.ODataInvokeResult;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.EdmOperation;
 
 public abstract class AbstractInvokeRequestFactory implements CommonInvokeRequestFactory {
 
@@ -37,10 +36,10 @@ public abstract class AbstractInvokeRequestFactory implements CommonInvokeReques
   }
 
   @Override
-  public <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(final URI uri, final Edm edm,
-          final FullQualifiedName container, final String functionImport) {
+  public <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
+          final URI uri, final EdmOperation operation) {
 
-    return getInvokeRequest(uri, edm, container, functionImport, null);
+    return getInvokeRequest(uri, operation, null);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v3/InvokeRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v3/InvokeRequestFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v3/InvokeRequestFactoryImpl.java
index 87e8c76..8781840 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v3/InvokeRequestFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v3/InvokeRequestFactoryImpl.java
@@ -19,8 +19,7 @@
 package org.apache.olingo.client.core.communication.request.invoke.v3;
 
 import java.net.URI;
-import java.util.LinkedHashMap;
-import java.util.List;
+import java.util.Map;
 import org.apache.olingo.client.api.v3.ODataClient;
 import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
 import org.apache.olingo.client.api.communication.request.invoke.ODataNoContent;
@@ -33,14 +32,9 @@ import org.apache.olingo.commons.api.domain.ODataValue;
 import org.apache.olingo.client.api.http.HttpMethod;
 import org.apache.olingo.client.core.communication.request.invoke.AbstractInvokeRequestFactory;
 import org.apache.olingo.client.core.communication.request.invoke.ODataInvokeRequestImpl;
-import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
-import org.apache.olingo.commons.api.edm.EdmActionImport;
-import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmFunction;
-import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmOperation;
 import org.apache.olingo.commons.api.edm.EdmReturnType;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
 
 public class InvokeRequestFactoryImpl extends AbstractInvokeRequestFactory implements InvokeRequestFactory {
@@ -53,60 +47,34 @@ public class InvokeRequestFactoryImpl extends AbstractInvokeRequestFactory imple
 
   @Override
   @SuppressWarnings("unchecked")
-  public <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(final URI uri, final Edm edm,
-          final FullQualifiedName container, final String functionImport,
-          final LinkedHashMap<String, ODataValue> parameters) {
+  public <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
+          final URI uri, final EdmOperation operation, final Map<String, ODataValue> parameters) {
 
-    final EdmEntityContainer edmContainer = edm.getEntityContainer(container);
-    if (edmContainer == null) {
-      throw new IllegalArgumentException("Could not find container " + container.toString());
-    }
-
-    final HttpMethod method;
-    final EdmReturnType returnType;
-    final EdmFunctionImport edmFunctionImport = edmContainer.getFunctionImport(functionImport);
-    final EdmActionImport edmActionImport = edmContainer.getActionImport(functionImport);
-    if (edmFunctionImport == null && edmActionImport == null) {
-      throw new IllegalArgumentException("Could not find function import " + functionImport
-              + " in the given container");
-    } else if (edmFunctionImport == null) {
-      final EdmAction action = edmActionImport.getAction();
-      if (action == null) {
-        throw new IllegalArgumentException("Could not find function import " + functionImport
-                + " in the given container");
-      }
+    final HttpMethod method = operation instanceof EdmAction
+            ? HttpMethod.POST
+            : HttpMethod.GET;
+    final EdmReturnType returnType = operation.getReturnType();
 
-      method = HttpMethod.POST;
-      returnType = action.getReturnType();
-    } else {
-      final EdmFunction function = edmFunctionImport.getFunction(
-              parameters == null ? null : (List<String>) parameters.keySet());
-      if (function == null) {
-        throw new IllegalArgumentException("Could not find function import " + functionImport
-                + " in the given container");
-      }
-
-      method = HttpMethod.GET;
-      returnType = function.getReturnType();
-    }
-
-    ODataInvokeRequest<RES> result;
+    ODataInvokeRequest<RES> request;
     if (returnType == null) {
-      result = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<ODataNoContent>(
+      request = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<ODataNoContent>(
               client, ODataNoContent.class, method, uri);
     } else {
       if (returnType.isCollection() && returnType.getType().getKind() == EdmTypeKind.ENTITY) {
-        result = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<CommonODataEntitySet>(
+        request = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<CommonODataEntitySet>(
                 client, CommonODataEntitySet.class, method, uri);
       } else if (!returnType.isCollection() && returnType.getType().getKind() == EdmTypeKind.ENTITY) {
-        result = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<CommonODataEntity>(
+        request = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<CommonODataEntity>(
                 client, CommonODataEntity.class, method, uri);
       } else {
-        result = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<CommonODataProperty>(
+        request = (ODataInvokeRequest<RES>) new ODataInvokeRequestImpl<CommonODataProperty>(
                 client, CommonODataProperty.class, method, uri);
       }
     }
+    if (parameters != null) {
+      request.setParameters(parameters);
+    }
 
-    return result;
+    return request;
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/InvokeRequestFactoryImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/InvokeRequestFactoryImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/InvokeRequestFactoryImpl.java
index d6f929d..da49df4 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/InvokeRequestFactoryImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/communication/request/invoke/v4/InvokeRequestFactoryImpl.java
@@ -19,7 +19,7 @@
 package org.apache.olingo.client.core.communication.request.invoke.v4;
 
 import java.net.URI;
-import java.util.LinkedHashMap;
+import java.util.Map;
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.olingo.client.api.v4.ODataClient;
 import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
@@ -27,8 +27,7 @@ import org.apache.olingo.client.api.communication.request.invoke.v4.InvokeReques
 import org.apache.olingo.commons.api.domain.ODataInvokeResult;
 import org.apache.olingo.commons.api.domain.ODataValue;
 import org.apache.olingo.client.core.communication.request.invoke.AbstractInvokeRequestFactory;
-import org.apache.olingo.commons.api.edm.Edm;
-import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.EdmOperation;
 
 public class InvokeRequestFactoryImpl extends AbstractInvokeRequestFactory implements InvokeRequestFactory {
 
@@ -39,9 +38,8 @@ public class InvokeRequestFactoryImpl extends AbstractInvokeRequestFactory imple
   }
 
   @Override
-  public <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(final URI uri, final Edm edm,
-          final FullQualifiedName container, final String functionImport,
-          final LinkedHashMap<String, ODataValue> parameters) {
+  public <RES extends ODataInvokeResult> ODataInvokeRequest<RES> getInvokeRequest(
+          final URI uri, final EdmOperation operation, final Map<String, ODataValue> parameters) {
 
     throw new NotImplementedException("Not available yet.");
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
index ae6b8d4..5941824 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmActionImportImpl.java
@@ -24,6 +24,7 @@ import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
 import org.apache.olingo.commons.api.edm.EdmActionImport;
 import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
 
 public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport {
 
@@ -37,8 +38,17 @@ public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmAc
   }
 
   @Override
-  public EdmAction getAction() {
+  public EdmAction getUnboundAction() {
+    return getBoundAction(null, null);
+  }
+
+  @Override
+  public EdmAction getBoundAction(
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
     return edm.getAction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(actionImport.getAction()).
-            setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(), null, null);
+            setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
+            bindingParameterTypeName, isBindingParameterCollection);
   }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
index 0fe9ce6..52fce98 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmClientImpl.java
@@ -265,8 +265,8 @@ public class EdmClientImpl extends AbstractEdm {
 
     final Schema schema = xmlSchemaByNamespace.get(actionName.getNamespace());
     if (schema instanceof org.apache.olingo.client.api.edm.xml.v4.Schema) {
-      final List<Action> actions = ((org.apache.olingo.client.api.edm.xml.v4.Schema) schema).
-              getActions(actionName.getName());
+      final List<Action> actions =
+              ((org.apache.olingo.client.api.edm.xml.v4.Schema) schema).getActions(actionName.getName());
       boolean found = false;
       for (final Iterator<Action> itor = actions.iterator(); itor.hasNext() && !found;) {
         final Action action = itor.next();
@@ -284,8 +284,8 @@ public class EdmClientImpl extends AbstractEdm {
     } else {
       for (EntityContainer entityContainer : schema.getEntityContainers()) {
         @SuppressWarnings("unchecked")
-        final List<FunctionImport> functionImports = (List<FunctionImport>) entityContainer.
-                getFunctionImports(actionName.getName());
+        final List<FunctionImport> functionImports =
+                (List<FunctionImport>) entityContainer.getFunctionImports(actionName.getName());
         boolean found = false;
         for (final Iterator<FunctionImport> itor = functionImports.iterator(); itor.hasNext() && !found;) {
           final FunctionImport functionImport = itor.next();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
index 138c2ac..9ad469d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmFunctionImportImpl.java
@@ -40,7 +40,14 @@ public class EdmFunctionImportImpl extends EdmOperationImportImpl implements Edm
   }
 
   @Override
-  public EdmFunction getFunction(final List<String> parameterNames) {
+  public EdmFunction getUnboundFunction(final List<String> parameterNames) {
+    return getBoundFunction(parameterNames, null, null);
+  }
+
+  @Override
+  public EdmFunction getBoundFunction(final List<String> parameterNames,
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
     return edm.getFunction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getFunction()).
             setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(), null, null, parameterNames);
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
index 8b7496f..e39dd23 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
@@ -25,6 +25,7 @@ import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
 import org.apache.olingo.commons.api.edm.EdmActionImport;
 import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
 
 public class EdmActionImportProxy extends EdmOperationImportImpl implements EdmActionImport {
 
@@ -38,8 +39,18 @@ public class EdmActionImportProxy extends EdmOperationImportImpl implements EdmA
   }
 
   @Override
-  public EdmAction getAction() {
+  public EdmAction getUnboundAction() {
     return edm.getAction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
             setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(), null, null);
   }
+
+  @Override
+  public EdmAction getBoundAction(
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
+    return edm.getAction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
+            setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
+            bindingParameterTypeName, isBindingParameterCollection);
+  }
+
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
index 9014c4a..b1dcec8 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
@@ -41,9 +41,17 @@ public class EdmFunctionImportProxy extends EdmOperationImportImpl implements Ed
   }
 
   @Override
-  public EdmFunction getFunction(final List<String> parameterNames) {
+  public EdmFunction getUnboundFunction(final List<String> parameterNames) {
+    return getBoundFunction(parameterNames, null, null);
+  }
+
+  @Override
+  public EdmFunction getBoundFunction(final List<String> parameterNames,
+          final FullQualifiedName bindingParameterTypeName, final Boolean isBindingParameterCollection) {
+
     return edm.getFunction(new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(functionImport.getName()).
-            setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(), null, null, parameterNames);
+            setDefaultNamespace(container.getNamespace()).build().getFullQualifiedName(),
+            bindingParameterTypeName, isBindingParameterCollection, parameterNames);
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
index 10feb7e..1b2720a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
@@ -163,6 +163,13 @@ public abstract class AbstractURIBuilder<UB extends CommonURIBuilder<?>> impleme
   }
 
   @Override
+  public UB appendOperationCallSegment(final String operation) {
+    segments.add(new Segment(
+            segments.size() == 1 ? SegmentType.UNBOUND_OPERATION : SegmentType.BOUND_OPERATION, operation));
+    return getThis();
+  }
+
+  @Override
   public UB appendOperationCallSegment(final String operation, final Map<String, Object> arguments) {
     segments.add(new Segment(
             segments.size() == 1 ? SegmentType.UNBOUND_OPERATION : SegmentType.BOUND_OPERATION, operation));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index b31b81c..841af8f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -41,7 +41,7 @@ import org.apache.http.entity.InputStreamEntity;
 import org.apache.olingo.client.api.CommonODataClient;
 import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.EdmEntityContainer;
-import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmOperationImport;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
@@ -140,20 +140,20 @@ public final class URIUtils {
   }
 
   /**
-   * Gets function import URI segment.
+   * Gets operation import URI segment.
    *
    * @param entityContainer entity container.
-   * @param functionImport function import.
+   * @param operationImport function import.
    * @return URI segment.
    */
-  public static String rootFunctionImportURISegment(
-          final EdmEntityContainer entityContainer, final EdmFunctionImport functionImport) {
+  public static String operationImportURISegment(
+          final EdmEntityContainer entityContainer, final EdmOperationImport operationImport) {
 
     final StringBuilder result = new StringBuilder();
     if (!entityContainer.isDefault()) {
       result.append(entityContainer.getName()).append('.');
     }
-    result.append(functionImport.getName());
+    result.append(operationImport.getName());
 
     return result.toString();
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
index f73c7cb..d58aae2 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/AbstractTestITCase.java
@@ -87,6 +87,8 @@ public abstract class AbstractTestITCase {
 
   protected static String testStaticServiceRootURL;
 
+  protected static String testKeyAsSegmentServiceRootURL;
+
   protected static String testOpenTypeServiceRootURL;
 
   protected static String testLargeModelServiceRootURL;
@@ -96,6 +98,7 @@ public abstract class AbstractTestITCase {
   @BeforeClass
   public static void setUpODataServiceRoot() throws IOException {
     testStaticServiceRootURL = "http://localhost:9080/StaticService/V30/Static.svc";
+    testKeyAsSegmentServiceRootURL = "http://localhost:9080/StaticService/V30/KeyAsSegment.svc";
     testOpenTypeServiceRootURL = "http://localhost:9080/StaticService/V30/Static.svc/openType";
     testLargeModelServiceRootURL = "http://localhost:9080/StaticService/V30/Static.svc/large";
     testAuthServiceRootURL = "http://localhost:9080/DefaultService.svc";

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
index c6a7c15..f89be63 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/EntityCreateTestITCase.java
@@ -18,11 +18,6 @@
  */
 package org.apache.olingo.client.core.it.v3;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 import java.net.URI;
 import java.util.Collections;
 import java.util.HashSet;
@@ -40,7 +35,7 @@ import org.apache.olingo.client.api.communication.response.ODataDeleteResponse;
 import org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
 import org.apache.olingo.client.api.communication.response.ODataRetrieveResponse;
 import org.apache.olingo.client.api.http.NoContentException;
-import org.apache.olingo.client.api.uri.CommonURIBuilder;
+import org.apache.olingo.client.api.uri.v3.URIBuilder;
 import org.apache.olingo.client.core.uri.URIUtils;
 import org.apache.olingo.commons.api.domain.ODataInlineEntitySet;
 import org.apache.olingo.commons.api.domain.ODataLink;
@@ -50,6 +45,11 @@ import org.apache.olingo.commons.api.domain.v3.ODataProperty;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.format.ODataPubFormat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -255,7 +255,7 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
     final int id = 2;
     final ODataEntity original = (ODataEntity) getSampleCustomerProfile(id, "Sample customer for issue 135", false);
 
-    final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Customer");
+    final URIBuilder uriBuilder = client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Customer");
     final ODataEntityCreateRequest<ODataEntity> createReq =
             client.getCUDRequestFactory().getEntityCreateRequest(uriBuilder.build(), original);
     createReq.setFormat(ODataPubFormat.JSON_FULL_METADATA);
@@ -312,7 +312,7 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
     // now, compare the created one with the actual one and go deeply into the associated customer info.....
     final ODataEntity actual = (ODataEntity) compareEntities(getServiceRoot(), format, created, id, null);
 
-    final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot());
+    final URIBuilder uriBuilder = client.getURIBuilder(getServiceRoot());
     uriBuilder.appendEntitySetSegment("Customer").appendKeySegment(id).appendEntitySetSegment("Orders");
 
     final ODataEntitySetRequest<ODataEntitySet> req = client.getRetrieveRequestFactory().
@@ -354,7 +354,7 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
     // now, compare the created one with the actual one and go deeply into the associated customer info.....
     final ODataEntity actual = compareEntities(getServiceRoot(), format, created, id, null);
 
-    final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(getServiceRoot());
+    final URIBuilder uriBuilder = client.getURIBuilder(getServiceRoot());
     uriBuilder.appendEntitySetSegment("Customer").appendKeySegment(id).appendEntitySetSegment("Info");
 
     final ODataEntityRequest<ODataEntity> req = client.getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
@@ -477,7 +477,7 @@ public class EntityCreateTestITCase extends AbstractTestITCase {
                     client.getObjectFactory().newPrimitiveValueBuilder().setValue(false).
                     setType(EdmPrimitiveTypeKind.Boolean).build()));
 
-    final CommonURIBuilder<?> builder =
+    final URIBuilder builder =
             client.getURIBuilder(getServiceRoot()).appendEntitySetSegment("Message");
     final ODataEntityCreateRequest<ODataEntity> req = client.getCUDRequestFactory().
             getEntityCreateRequest(builder.build(), message);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ErrorTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ErrorTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ErrorTestITCase.java
index efb818b..5e3e235 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ErrorTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/ErrorTestITCase.java
@@ -149,7 +149,7 @@ public class ErrorTestITCase extends AbstractTestITCase {
     final EdmEntityContainer container = metadata.getSchemas().get(0).getEntityContainer();
     final EdmFunctionImport funcImp = container.getFunctionImport("InStreamErrorGetCustomer");
     final CommonURIBuilder<?> builder = client.getURIBuilder(testStaticServiceRootURL).
-            appendOperationCallSegment(URIUtils.rootFunctionImportURISegment(container, funcImp), null);
+            appendOperationCallSegment(URIUtils.operationImportURISegment(container, funcImp), null);
     // TODO: review invoke
 //        final ODataInvokeRequest<ODataEntitySet> req =
 //                client.getInvokeRequestFactory().getInvokeRequest(builder.build(), metadata, funcImp);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
index 101dca7..48410cc 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/InvokeTestITCase.java
@@ -18,258 +18,309 @@
  */
 package org.apache.olingo.client.core.it.v3;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.net.URI;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.communication.request.cud.ODataDeleteRequest;
+import org.apache.olingo.client.api.communication.request.cud.ODataEntityCreateRequest;
+import org.apache.olingo.client.api.communication.request.invoke.ODataInvokeRequest;
+import org.apache.olingo.client.api.communication.request.invoke.ODataNoContent;
+import org.apache.olingo.client.api.communication.request.retrieve.ODataEntityRequest;
+import org.apache.olingo.client.api.communication.response.ODataDeleteResponse;
+import org.apache.olingo.client.api.communication.response.ODataEntityCreateResponse;
+import org.apache.olingo.client.api.communication.response.ODataInvokeResponse;
+import org.apache.olingo.client.api.uri.v3.URIBuilder;
+import org.apache.olingo.client.core.uri.URIUtils;
+import org.apache.olingo.commons.api.domain.ODataOperation;
+import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
+import org.apache.olingo.commons.api.domain.ODataValue;
+import org.apache.olingo.commons.api.domain.v3.ODataEntity;
+import org.apache.olingo.commons.api.domain.v3.ODataEntitySet;
+import org.apache.olingo.commons.api.domain.v3.ODataProperty;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmActionImport;
+import org.apache.olingo.commons.api.edm.EdmEntityContainer;
+import org.apache.olingo.commons.api.edm.EdmFunction;
+import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmParameter;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.format.ODataPubFormat;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+import org.junit.Test;
+
 public class InvokeTestITCase extends AbstractTestITCase {
 
-//    private void getWithNoParams(final ODataPubFormat format) {
-//        final Edm metadata =
-//                client.getRetrieveRequestFactory().getMetadataRequest(testStaticServiceRootURL).execute().getBody();
-//        assertNotNull(metadata);
-//
-//        final EdmEdmEntityContainer container = metadata.getSchemas().get(0).getEntityContainer();
-//
-//        // 1. get primitive value property
-//        EdmFunctionImport funcImp = container.getFunctionImport("GetPrimitiveString");
-//
-//        URIBuilder builder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEdmFunctionImportSegment(URIUtils.rootEdmFunctionImportURISegment(container, funcImp));
-//
-//        ODataInvokeRequest<ODataProperty> req =
-//                client.getInvokeRequestFactory().getInvokeRequest(builder.build(), metadata, funcImp);
-//        req.setFormat(format);
-//        ODataInvokeResponse<ODataProperty> res = req.execute();
-//        assertNotNull(res);
-//
-//        ODataProperty property = res.getBody();
-//        assertNotNull(property);
-//        assertEquals("Foo", property.getPrimitiveValue().<String>toCastValue());
-//
-//        // 2. get collection of complex type property
-//        funcImp = container.getFunctionImport("EntityProjectionReturnsCollectionOfComplexTypes");
-//
-//        builder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEdmFunctionImportSegment(URIUtils.rootEdmFunctionImportURISegment(container, funcImp));
-//
-//        req = client.getInvokeRequestFactory().getInvokeRequest(builder.build(), metadata, funcImp);
-//        req.setFormat(format);
-//        res = req.execute();
-//        assertNotNull(res);
-//
-//        property = res.getBody();
-//        assertNotNull(property);
-//        assertTrue(property.hasCollectionValue());
-//        assertFalse(property.getCollectionValue().isEmpty());
-//    }
-//
-//    @Test
-//    public void getWithNoParamsAsAtom() {
-//        getWithNoParams(ODataPubFormat.ATOM);
-//    }
-//
-//    @Test
-//    public void getWithNoParamsAsJSON() {
-//        getWithNoParams(ODataPubFormat.JSON);
-//    }
-//
-//    private void getWithParams(final ODataPubFormat format) {
-//        // 1. primitive result
-//        Edm metadata =
-//                client.getRetrieveRequestFactory().getMetadataRequest(testStaticServiceRootURL).execute().getBody();
-//        assertNotNull(metadata);
-//
-//        EdmEntityContainer container = metadata.getSchemas().get(0).getEntityContainer();
-//        EdmFunctionImport funcImp = container.getFunctionImport("GetArgumentPlusOne");
-//
-//        URIBuilder builder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEdmFunctionImportSegment(URIUtils.rootEdmFunctionImportURISegment(container, funcImp));
-//
-//        EdmType type = new EdmV3Type(funcImp.getParameters().get(0).getType());
-//        ODataPrimitiveValue argument = client.getPrimitiveValueBuilder().
-//                setType(type.getSimpleType()).
-//                setValue(154).
-//                build();
-//        Map<String, ODataValue> parameters = new HashMap<String, ODataValue>();
-//        parameters.put(funcImp.getParameters().get(0).getName(), argument);
-//
-//        final ODataInvokeRequest<ODataProperty> primitiveReq =
-//                client.getInvokeRequestFactory().getInvokeRequest(builder.build(), metadata, funcImp,
-//                        parameters);
-//        primitiveReq.setFormat(format);
-//
-//        final ODataInvokeResponse<ODataProperty> primitiveRes = primitiveReq.execute();
-//        assertNotNull(primitiveRes);
-//
-//        final ODataProperty property = primitiveRes.getBody();
-//        assertNotNull(property);
-//        assertEquals(Integer.valueOf(155), property.getPrimitiveValue().<Integer>toCastValue());
-//
-//        // 2. feed result
-//        metadata = 
-//  client.getRetrieveRequestFactory().getMetadataRequest(testStaticServiceRootURL).execute().getBody();
-//        assertNotNull(metadata);
-//
-//        container = metadata.getSchemas().get(0).getEntityContainer();
-//        funcImp = container.getFunctionImport("GetSpecificCustomer");
-//
-//        builder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEdmFunctionImportSegment(URIUtils.rootEdmFunctionImportURISegment(container, funcImp));
-//
-//        type = new EdmV3Type(funcImp.getParameters().get(0).getType());
-//        argument = client.getPrimitiveValueBuilder().
-//                setType(type.getSimpleType()).
-//                setText(StringUtils.EMPTY).
-//                build();
-//        parameters = new LinkedHashMap<String, ODataValue>();
-//        parameters.put(funcImp.getParameters().get(0).getName(), argument);
-//
-//        final ODataInvokeRequest<ODataEntitySet> feedReq =
-//                client.getInvokeRequestFactory().getInvokeRequest(builder.build(), metadata, funcImp, parameters);
-//        feedReq.setFormat(format);
-//
-//        final ODataInvokeResponse<ODataEntitySet> feedRes = feedReq.execute();
-//        assertNotNull(feedRes);
-//
-//        final ODataEntitySet feed = feedRes.getBody();
-//        assertNotNull(feed);
-//
-//        final Set<Integer> customerIds = new HashSet<Integer>(feed.getEntities().size());
-//        for (ODataEntity entity : feed.getEntities()) {
-//            customerIds.add(entity.getProperty("CustomerId").getPrimitiveValue().<Integer>toCastValue());
-//        }
-//        assertTrue(customerIds.contains(-8));
-//    }
-//
-//    @Test
-//    public void getWithParamsAsAtom() {
-//        getWithParams(ODataPubFormat.ATOM);
-//    }
-//
-//    @Test
-//    public void getWithParamsAsJSON() {
-//        getWithParams(ODataPubFormat.JSON);
-//    }
-//
-//    private ODataEntity createEmployee(final ODataPubFormat format) {
-//        final ODataEntity employee = client.getObjectFactory().newEntity(
-//                "Microsoft.Test.OData.Services.AstoriaDefaultService.Employee");
-//
-//        employee.getProperties().add(client.getObjectFactory().newPrimitiveProperty("PersonId", client.
-//                getPrimitiveValueBuilder().
-//                setText("1244").setType(ODataJClientEdmPrimitiveType.Int32).build()));
-//        employee.getProperties().add(client.getObjectFactory().newPrimitiveProperty(
-//                "Name", client.getPrimitiveValueBuilder().
-//                setText("Test employee").build()));
-//        employee.getProperties().add(client.getObjectFactory().newPrimitiveProperty("ManagersPersonId", client.
-//                getPrimitiveValueBuilder().
-//                setText("3777").setType(ODataJClientEdmPrimitiveType.Int32).build()));
-//        employee.getProperties().add(client.getObjectFactory().newPrimitiveProperty(
-//                "Salary", client.getPrimitiveValueBuilder().
-//                setText("1000").setType(ODataJClientEdmPrimitiveType.Int32).build()));
-//        employee.getProperties().add(client.getObjectFactory().newPrimitiveProperty(
-//                "Title", client.getPrimitiveValueBuilder().
-//                setText("CEO").build()));
-//
-//        final URIBuilder<?> uriBuilder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEntitySetSegment("Person");
-//
-//        final ODataEntityCreateRequest createReq =
-//                client.getCUDRequestFactory().getEntityCreateRequest(uriBuilder.build(), employee);
-//        createReq.setFormat(format);
-//        final ODataEntityCreateResponse createRes = createReq.execute();
-//        assertEquals(201, createRes.getStatusCode());
-//
-//        return createRes.getBody();
-//    }
-//
-//    private void deleteEmployee(final ODataPubFormat format, final Integer id) {
-//        final URIBuilder<?> uriBuilder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEntitySetSegment("Person").appendKeySegment(id);
-//
-//        final ODataDeleteRequest deleteReq = client.getCUDRequestFactory().getDeleteRequest(uriBuilder.build());
-//        deleteReq.setFormat(format);
-//        final ODataDeleteResponse deleteRes = deleteReq.execute();
-//        assertEquals(204, deleteRes.getStatusCode());
-//    }
-//
-//    @Test
-//    public void boundPost() {
-//        // 0. create an employee
-//        final ODataEntity created = createEmployee(ODataPubFormat.JSON_FULL_METADATA);
-//        assertNotNull(created);
-//        final Integer createdId = created.getProperty("PersonId").getPrimitiveValue().<Integer>toCastValue();
-//        assertNotNull(createdId);
-//
-//        // 1. invoke action bound with the employee just created
-//        final ODataOperation action = created.getOperations().get(0);
-//
-//        final Edm metadata =
-//                client.getRetrieveRequestFactory().getMetadataRequest(testStaticServiceRootURL).execute().getBody();
-//        assertNotNull(metadata);
-//
-//        final EdmEntityContainer container = metadata.getSchemas().get(0).getEntityContainer();
-//        final EdmFunctionImport funcImp = container.getFunctionImport(action.getTitle());
-//
-//        final ODataInvokeRequest<ODataNoContent> req = client.getInvokeRequestFactory().getInvokeRequest(
-//                action.getTarget(), metadata, funcImp);
-//        req.setFormat(ODataPubFormat.JSON_FULL_METADATA);
-//        final ODataInvokeResponse<ODataNoContent> res = req.execute();
-//        assertNotNull(res);
-//        assertEquals(204, res.getStatusCode());
-//
-//        // 2. check that invoked action has effectively run
-//        final URIBuilder<?> uriBuilder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEntitySetSegment("Person").appendKeySegment(createdId);
-//        final ODataEntityRequest retrieveRes = 
-//  client.getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
-//        retrieveRes.setFormat(ODataPubFormat.JSON_FULL_METADATA);
-//        final ODataEntity read = retrieveRes.execute().getBody();
-//        assertEquals("0", read.getProperty("Salary").getPrimitiveValue().toString());
-//        assertTrue(read.getProperty("Title").getPrimitiveValue().toString().endsWith("[Sacked]"));
-//
-//        // 3. remove the test employee
-//        deleteEmployee(ODataPubFormat.JSON_FULL_METADATA, createdId);
-//    }
-//
-//    @Test
-//    public void boundPostWithParams() {
-//        // 1. read employees and store their current salary
-//        final URIBuilder<?> builder = client.getURIBuilder(testStaticServiceRootURL).
-//                appendEntitySetSegment("Person").
-//                appendEntitySetSegment("Microsoft.Test.OData.Services.AstoriaDefaultService.Employee");
-//        final URI employeesURI = builder.build();
-//        ODataEntitySet employees = client.getRetrieveRequestFactory().getEntitySetRequest(employeesURI).execute().
-//                getBody();
-//        assertFalse(employees.getEntities().isEmpty());
-//        final Map<Integer, Integer> preSalaries = new HashMap<Integer, Integer>(employees.getCount());
-//        for (ODataEntity employee : employees.getEntities()) {
-//            preSalaries.put(employee.getProperty("PersonId").getPrimitiveValue().<Integer>toCastValue(),
-//                    employee.getProperty("Salary").getPrimitiveValue().<Integer>toCastValue());
-//        }
-//        assertFalse(preSalaries.isEmpty());
-//
-//        // 2. invoke action bound, with additional parameter
-//        final Edm metadata =
-//                client.getRetrieveRequestFactory().getMetadataRequest(testStaticServiceRootURL).execute().getBody();
-//        assertNotNull(metadata);
-//
-//        final EdmEntityContainer container = metadata.getSchemas().get(0).getEntityContainer();
-//        final EdmFunctionImport funcImp = container.getFunctionImport("IncreaseSalaries");
-//
-//        final ODataInvokeRequest<ODataNoContent> req = client.getInvokeRequestFactory().getInvokeRequest(
-//                builder.appendOperationCallSegment(funcImp.getName()).build(), metadata, funcImp,
-//                Collections.<String, ODataValue>singletonMap(
-//                        "n", client.getPrimitiveValueBuilder().setValue(1).
-//  setType(ODataJClientEdmPrimitiveType.Int32).build()));
-//        final ODataInvokeResponse<ODataNoContent> res = req.execute();
-//        assertNotNull(res);
-//        assertEquals(204, res.getStatusCode());
-//
-//        // 3. check whether salaries were incremented
-//        employees = client.getRetrieveRequestFactory().getEntitySetRequest(employeesURI).execute().getBody();
-//        assertFalse(employees.getEntities().isEmpty());
-//        for (ODataEntity employee : employees.getEntities()) {
-//            assertTrue(
-//                    preSalaries.get(employee.getProperty("PersonId").getPrimitiveValue().<Integer>toCastValue())
-//                    < employee.getProperty("Salary").getPrimitiveValue().<Integer>toCastValue());
-//        }
-//    }
+  private void getWithNoParams(final ODataPubFormat format) {
+    final Edm edm = getClient().getRetrieveRequestFactory().
+            getMetadataRequest(testStaticServiceRootURL).execute().getBody();
+    assertNotNull(edm);
+
+    final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+
+    // 1. get primitive value property
+    EdmFunctionImport funcImp = container.getFunctionImport("GetPrimitiveString");
+    EdmFunction func = funcImp.getUnboundFunction(null);
+
+    URIBuilder builder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendOperationCallSegment(URIUtils.operationImportURISegment(container, funcImp));
+
+    ODataInvokeRequest<ODataProperty> req = getClient().getInvokeRequestFactory().
+            getInvokeRequest(builder.build(), func);
+    req.setFormat(format);
+    ODataInvokeResponse<ODataProperty> res = req.execute();
+    assertNotNull(res);
+
+    ODataProperty property = res.getBody();
+    assertNotNull(property);
+    assertEquals("Foo", property.getPrimitiveValue().toString());
+
+    // 2. get collection of complex type property
+    funcImp = container.getFunctionImport("EntityProjectionReturnsCollectionOfComplexTypes");
+    func = funcImp.getUnboundFunction(null);
+
+    builder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendOperationCallSegment(URIUtils.operationImportURISegment(container, funcImp));
+
+    req = getClient().getInvokeRequestFactory().getInvokeRequest(builder.build(), func);
+    req.setFormat(format);
+    res = req.execute();
+    assertNotNull(res);
+
+    property = res.getBody();
+    assertNotNull(property);
+    assertTrue(property.hasCollectionValue());
+    assertFalse(property.getCollectionValue().isEmpty());
+  }
+
+  @Test
+  public void getWithNoParamsAsAtom() {
+    getWithNoParams(ODataPubFormat.ATOM);
+  }
+
+  @Test
+  public void getWithNoParamsAsJSON() {
+    getWithNoParams(ODataPubFormat.JSON);
+  }
+
+  private void getWithParams(final ODataPubFormat format) throws EdmPrimitiveTypeException {
+    // 1. primitive result
+    final Edm edm = getClient().getRetrieveRequestFactory().
+            getMetadataRequest(testStaticServiceRootURL).execute().getBody();
+    assertNotNull(edm);
+
+    final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+    EdmFunctionImport funcImp = container.getFunctionImport("GetArgumentPlusOne");
+
+    URIBuilder builder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendOperationCallSegment(URIUtils.operationImportURISegment(container, funcImp));
+
+    EdmFunction function = funcImp.getUnboundFunction(Collections.singletonList("arg1"));
+    EdmParameter param = function.getParameter(function.getParameterNames().get(0));
+    ODataPrimitiveValue paramValue = getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setType(param.getType()).
+            setValue(154).
+            build();
+
+    final ODataInvokeRequest<ODataProperty> primitiveReq = getClient().getInvokeRequestFactory().
+            getInvokeRequest(builder.build(), function,
+                    Collections.<String, ODataValue>singletonMap(param.getName(), paramValue));
+    primitiveReq.setFormat(format);
+
+    final ODataInvokeResponse<ODataProperty> primitiveRes = primitiveReq.execute();
+    assertNotNull(primitiveRes);
+
+    final ODataProperty property = primitiveRes.getBody();
+    assertNotNull(property);
+    assertEquals(Integer.valueOf(155), property.getPrimitiveValue().toCastValue(Integer.class));
+
+    // 2. feed result
+    funcImp = container.getFunctionImport("GetSpecificCustomer");
+
+    builder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendOperationCallSegment(URIUtils.operationImportURISegment(container, funcImp));
+
+    function = funcImp.getUnboundFunction(Collections.singletonList("Name"));
+    param = function.getParameter(function.getParameterNames().get(0));
+    paramValue = getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setType(param.getType()).
+            setValue(StringUtils.EMPTY).
+            build();
+
+    final ODataInvokeRequest<ODataEntitySet> feedReq = getClient().getInvokeRequestFactory().
+            getInvokeRequest(builder.build(), function,
+                    Collections.<String, ODataValue>singletonMap(param.getName(), paramValue));
+    feedReq.setFormat(format);
+
+    final ODataInvokeResponse<ODataEntitySet> feedRes = feedReq.execute();
+    assertNotNull(feedRes);
+
+    final ODataEntitySet feed = feedRes.getBody();
+    assertNotNull(feed);
+
+    final Set<Integer> customerIds = new HashSet<Integer>(feed.getEntities().size());
+    for (ODataEntity entity : feed.getEntities()) {
+      customerIds.add(entity.getProperty("CustomerId").getPrimitiveValue().toCastValue(Integer.class));
+    }
+    assertTrue(customerIds.contains(-8));
+  }
+
+  @Test
+  public void getWithParamsAsAtom() throws EdmPrimitiveTypeException {
+    getWithParams(ODataPubFormat.ATOM);
+  }
+
+  @Test
+  public void getWithParamsAsJSON() throws EdmPrimitiveTypeException {
+    getWithParams(ODataPubFormat.JSON);
+  }
+
+  private ODataEntity createEmployee(final ODataPubFormat format) {
+    final ODataEntity employee = getClient().getObjectFactory().newEntity(
+            "Microsoft.Test.OData.Services.AstoriaDefaultService.Employee");
+
+    employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty("PersonId",
+            getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setText("1244").setType(EdmPrimitiveTypeKind.Int32).build()));
+    employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
+            "Name", getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setText("Test employee").build()));
+    employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
+            "ManagersPersonId", getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setText("3777").setType(EdmPrimitiveTypeKind.Int32).build()));
+    employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
+            "Salary", getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setText("1000").setType(EdmPrimitiveTypeKind.Int32).build()));
+    employee.getProperties().add(getClient().getObjectFactory().newPrimitiveProperty(
+            "Title", getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setText("CEO").build()));
+
+    final URIBuilder uriBuilder = getClient().getURIBuilder(testStaticServiceRootURL).appendEntitySetSegment("Person");
+
+    final ODataEntityCreateRequest<ODataEntity> createReq =
+            getClient().getCUDRequestFactory().getEntityCreateRequest(uriBuilder.build(), employee);
+    createReq.setFormat(format);
+    final ODataEntityCreateResponse<ODataEntity> createRes = createReq.execute();
+    assertEquals(201, createRes.getStatusCode());
+
+    final ODataEntityRequest<ODataEntity> req =
+            getClient().getRetrieveRequestFactory().getEntityRequest(uriBuilder.appendKeySegment(1244).build());
+    return req.execute().getBody();
+  }
+
+  private void deleteEmployee(final ODataPubFormat format, final Integer id) {
+    final URIBuilder uriBuilder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendEntitySetSegment("Person").appendKeySegment(id);
+
+    final ODataDeleteRequest deleteReq = getClient().getCUDRequestFactory().getDeleteRequest(uriBuilder.build());
+    deleteReq.setFormat(format);
+    final ODataDeleteResponse deleteRes = deleteReq.execute();
+    assertEquals(204, deleteRes.getStatusCode());
+  }
+
+  @Test
+  public void boundPost() throws EdmPrimitiveTypeException {
+    // 0. create an employee
+    final ODataEntity created = createEmployee(ODataPubFormat.JSON_FULL_METADATA);
+    assertNotNull(created);
+    final Integer createdId = created.getProperty("PersonId").getPrimitiveValue().toCastValue(Integer.class);
+    assertNotNull(createdId);
+
+    // 1. invoke action bound with the employee just created
+    final ODataOperation operation = created.getOperations().get(0);
+
+    final Edm edm = getClient().getRetrieveRequestFactory().
+            getMetadataRequest(testStaticServiceRootURL).execute().getBody();
+    assertNotNull(edm);
+
+    final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+    final EdmActionImport actImp = container.getActionImport(operation.getTitle());
+    final EdmTypeInfo createdTypeInfo =
+            new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(created.getName()).build();
+    final EdmAction action = actImp.getBoundAction(
+            createdTypeInfo.getFullQualifiedName(), createdTypeInfo.isCollection());
+
+    final ODataInvokeRequest<ODataNoContent> req = getClient().getInvokeRequestFactory().
+            getInvokeRequest(operation.getTarget(), action);
+    req.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+    final ODataInvokeResponse<ODataNoContent> res = req.execute();
+    assertNotNull(res);
+    assertEquals(204, res.getStatusCode());
+
+    // 2. check that invoked action has effectively run
+    final URIBuilder uriBuilder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendEntitySetSegment("Person").appendKeySegment(createdId);
+    final ODataEntityRequest<ODataEntity> retrieveRes =
+            getClient().getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
+    retrieveRes.setFormat(ODataPubFormat.JSON_FULL_METADATA);
+    final ODataEntity read = retrieveRes.execute().getBody();
+    assertEquals("0", read.getProperty("Salary").getPrimitiveValue().toString());
+    assertTrue(read.getProperty("Title").getPrimitiveValue().toString().endsWith("[Sacked]"));
+
+    // 3. remove the test employee
+    deleteEmployee(ODataPubFormat.JSON_FULL_METADATA, createdId);
+  }
+
+  @Test
+  public void boundPostWithParams() throws EdmPrimitiveTypeException {
+    // 1. read employees and store their current salary
+    final URIBuilder builder = getClient().getURIBuilder(testStaticServiceRootURL).
+            appendEntitySetSegment("Person").
+            appendEntitySetSegment("Microsoft.Test.OData.Services.AstoriaDefaultService.Employee");
+    final URI employeesURI = builder.build();
+    ODataEntitySet employees = getClient().getRetrieveRequestFactory().
+            getEntitySetRequest(employeesURI).execute().getBody();
+    assertFalse(employees.getEntities().isEmpty());
+    final Map<Integer, Integer> preSalaries = new HashMap<Integer, Integer>(employees.getCount());
+    for (ODataEntity employee : employees.getEntities()) {
+      preSalaries.put(employee.getProperty("PersonId").getPrimitiveValue().toCastValue(Integer.class),
+              employee.getProperty("Salary").getPrimitiveValue().toCastValue(Integer.class));
+    }
+    assertFalse(preSalaries.isEmpty());
+
+    // 2. invoke action bound, with additional parameter
+    final Edm edm = getClient().getRetrieveRequestFactory().
+            getMetadataRequest(testStaticServiceRootURL).execute().getBody();
+    assertNotNull(edm);
+
+    final EdmEntityContainer container = edm.getSchemas().get(0).getEntityContainer();
+    final EdmActionImport actImp = container.getActionImport("IncreaseSalaries");
+
+    final EdmTypeInfo employeesTypeInfo = new EdmTypeInfo.Builder().setEdm(edm).
+            setTypeExpression("Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Employee)").build();
+    final EdmAction action = actImp.getBoundAction(
+            employeesTypeInfo.getFullQualifiedName(), employeesTypeInfo.isCollection());
+
+    final EdmParameter param = action.getParameter(action.getParameterNames().get(1));
+    final ODataPrimitiveValue paramValue = getClient().getObjectFactory().newPrimitiveValueBuilder().
+            setType(param.getType()).
+            setValue(1).
+            build();
+
+    final ODataInvokeRequest<ODataNoContent> req = getClient().getInvokeRequestFactory().getInvokeRequest(
+            builder.appendOperationCallSegment(actImp.getName()).build(), action,
+            Collections.<String, ODataValue>singletonMap(param.getName(), paramValue));
+    final ODataInvokeResponse<ODataNoContent> res = req.execute();
+    assertNotNull(res);
+    assertEquals(204, res.getStatusCode());
+
+    // 3. check whether salaries were incremented
+    employees = getClient().getRetrieveRequestFactory().getEntitySetRequest(employeesURI).execute().getBody();
+    assertFalse(employees.getEntities().isEmpty());
+    for (ODataEntity employee : employees.getEntities()) {
+      assertTrue(
+              preSalaries.get(employee.getProperty("PersonId").getPrimitiveValue().toCastValue(Integer.class))
+              < employee.getProperty("Salary").getPrimitiveValue().toCastValue(Integer.class));
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/KeyAsSegmentTestITCase.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/KeyAsSegmentTestITCase.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/KeyAsSegmentTestITCase.java
index 1b4892d..81dcd0a 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/KeyAsSegmentTestITCase.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/it/v3/KeyAsSegmentTestITCase.java
@@ -39,7 +39,7 @@ public class KeyAsSegmentTestITCase extends AbstractTestITCase {
   }
 
   private void read(final ODataPubFormat format) {
-    final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(testStaticServiceRootURL).
+    final CommonURIBuilder<?> uriBuilder = client.getURIBuilder(testKeyAsSegmentServiceRootURL).
             appendEntitySetSegment("Customer").appendKeySegment(-10);
 
     final ODataEntityRequest<ODataEntity> req = client.getRetrieveRequestFactory().getEntityRequest(uriBuilder.build());
@@ -69,10 +69,10 @@ public class KeyAsSegmentTestITCase extends AbstractTestITCase {
     final int id = 1;
     final ODataEntity original = getSampleCustomerProfile(id, "Sample customer", false);
 
-    createEntity(testStaticServiceRootURL, format, original, "Customer");
-    final ODataEntity actual = compareEntities(testStaticServiceRootURL, format, original, id, null);
+    createEntity(testKeyAsSegmentServiceRootURL, format, original, "Customer");
+    final ODataEntity actual = compareEntities(testKeyAsSegmentServiceRootURL, format, original, id, null);
 
-    cleanAfterCreate(format, actual, false, testStaticServiceRootURL);
+    cleanAfterCreate(format, actual, false, testKeyAsSegmentServiceRootURL);
   }
 
   @Test
@@ -81,16 +81,16 @@ public class KeyAsSegmentTestITCase extends AbstractTestITCase {
     final int id = 2;
     final ODataEntity original = getSampleCustomerProfile(id, "Sample customer", false);
 
-    createEntity(testStaticServiceRootURL, format, original, "Customer");
-    final ODataEntity actual = compareEntities(testStaticServiceRootURL, format, original, id, null);
+    createEntity(testKeyAsSegmentServiceRootURL, format, original, "Customer");
+    final ODataEntity actual = compareEntities(testKeyAsSegmentServiceRootURL, format, original, id, null);
 
-    cleanAfterCreate(format, actual, false, testStaticServiceRootURL);
+    cleanAfterCreate(format, actual, false, testKeyAsSegmentServiceRootURL);
   }
 
   @Test
   public void replaceODataEntityAsAtom() {
     final ODataPubFormat format = ODataPubFormat.ATOM;
-    final ODataEntity changes = read(format, client.getURIBuilder(testStaticServiceRootURL).
+    final ODataEntity changes = read(format, client.getURIBuilder(testKeyAsSegmentServiceRootURL).
             appendEntitySetSegment("Car").appendKeySegment(14).build());
     updateEntityDescription(format, changes, UpdateType.REPLACE);
   }
@@ -98,7 +98,7 @@ public class KeyAsSegmentTestITCase extends AbstractTestITCase {
   @Test
   public void replaceODataEntityAsJSON() {
     final ODataPubFormat format = ODataPubFormat.JSON_FULL_METADATA;
-    final ODataEntity changes = read(format, client.getURIBuilder(testStaticServiceRootURL).
+    final ODataEntity changes = read(format, client.getURIBuilder(testKeyAsSegmentServiceRootURL).
             appendEntitySetSegment("Car").appendKeySegment(14).build());
     updateEntityDescription(format, changes, UpdateType.REPLACE);
   }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/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
index 64badc0..1434008 100644
--- 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
@@ -103,15 +103,17 @@ public class JSONTest extends AtomTest {
 
   @Override
   protected void assertSimilar(final String filename, final String actual) throws Exception {
-    final JsonNode orig = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)).
+    final JsonNode expected = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)).
             replace("Categories" + getClient().getServiceVersion().getJSONMap().
                     get(ODataServiceVersion.JSON_NAVIGATION_LINK),
                     "Categories" + Constants.JSON_BIND_LINK_SUFFIX).
             replace("\"Products(0)/Categories\"", "[\"Products(0)/Categories\"]").
             replace(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_NAVIGATION_LINK),
                     Constants.JSON_BIND_LINK_SUFFIX));
-    cleanup((ObjectNode) orig);
-    assertEquals(orig, OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes())));
+    cleanup((ObjectNode) expected);
+    final ObjectNode actualNode = (ObjectNode) OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes()));
+    cleanup(actualNode);
+    assertEquals(expected, actualNode);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
index a4d1ba8..d41a370 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v3/MetadataTest.java
@@ -179,12 +179,12 @@ public class MetadataTest extends AbstractTest {
     final EdmFunctionImport getArgumentPlusOne = container.getFunctionImport("GetArgumentPlusOne");
     assertNotNull(getArgumentPlusOne);
     assertEquals(EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32),
-            getArgumentPlusOne.getFunction(null).getReturnType().getType());
+            getArgumentPlusOne.getUnboundFunction(null).getReturnType().getType());
 
     final EdmActionImport resetDataSource = container.getActionImport("ResetDataSource");
     assertNotNull(resetDataSource);
-    assertTrue(resetDataSource.getAction().getParameterNames().isEmpty());
-    assertNull(resetDataSource.getAction().getReturnType());
+    assertTrue(resetDataSource.getUnboundAction().getParameterNames().isEmpty());
+    assertNull(resetDataSource.getUnboundAction().getReturnType());
 
     final EdmEntityType computer = metadata.getEntityType(new FullQualifiedName(container.getNamespace(), "Computer"));
     assertNotNull(computer);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
index 8bd3245..619734b 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/JSONTest.java
@@ -111,11 +111,13 @@ public class JSONTest extends AbstractTest {
   }
 
   protected void assertSimilar(final String filename, final String actual) throws Exception {
-    final JsonNode orig = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)).
+    final JsonNode expected = OBJECT_MAPPER.readTree(IOUtils.toString(getClass().getResourceAsStream(filename)).
             replace(getClient().getServiceVersion().getJSONMap().get(ODataServiceVersion.JSON_NAVIGATION_LINK),
                     Constants.JSON_BIND_LINK_SUFFIX));
-    cleanup((ObjectNode) orig);
-    assertEquals(orig, OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes())));
+    cleanup((ObjectNode) expected);
+    final ObjectNode actualNode = (ObjectNode) OBJECT_MAPPER.readTree(new ByteArrayInputStream(actual.getBytes()));
+    cleanup(actualNode);
+    assertEquals(expected, actualNode);
   }
 
   protected void feed(final String filename, final ODataPubFormat format) throws Exception {

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
index b594858..c90fae5 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/v4/MetadataTest.java
@@ -213,13 +213,13 @@ public class MetadataTest extends AbstractTest {
             new FullQualifiedName(metadata.getSchema(0).getNamespace(), "ProductsByRating"),
             null, Boolean.FALSE, null);
     assertNotNull(function);
-    assertEquals(function.getName(), fi.getFunction(null).getName());
-    assertEquals(function.getNamespace(), fi.getFunction(null).getNamespace());
-    assertEquals(function.getParameterNames(), fi.getFunction(null).getParameterNames());
+    assertEquals(function.getName(), fi.getUnboundFunction(null).getName());
+    assertEquals(function.getNamespace(), fi.getUnboundFunction(null).getNamespace());
+    assertEquals(function.getParameterNames(), fi.getUnboundFunction(null).getParameterNames());
     assertEquals(function.getReturnType().getType().getName(),
-            fi.getFunction(null).getReturnType().getType().getName());
+            fi.getUnboundFunction(null).getReturnType().getType().getName());
     assertEquals(function.getReturnType().getType().getNamespace(),
-            fi.getFunction(null).getReturnType().getType().getNamespace());
+            fi.getUnboundFunction(null).getReturnType().getType().getNamespace());
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
index 77e83ae..fb4d0bc 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/domain/ODataPrimitiveValue.java
@@ -21,11 +21,14 @@ package org.apache.olingo.commons.api.domain;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.EdmType;
 
 public interface ODataPrimitiveValue extends ODataValue {
 
   interface Builder {
 
+    Builder setType(EdmType type);
+
     Builder setType(EdmPrimitiveTypeKind type);
 
     Builder setText(String text);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
index a302b9e..e44d45a 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmActionImport.java
@@ -23,5 +23,19 @@ package org.apache.olingo.commons.api.edm;
  */
 public interface EdmActionImport extends EdmOperationImport {
 
-    EdmAction getAction();
+  /**
+   * Gets unbound action.
+   *
+   * @return unbound action.
+   */
+  EdmAction getUnboundAction();
+
+  /**
+   * Gets bound action.
+   *
+   * @param bindingParameterTypeName may be null if it is an unbound function
+   * @param isBindingParameterCollection may be null if it is an unbound function
+   * @return bound action with given parameter names
+   */
+  EdmAction getBoundAction(FullQualifiedName bindingParameterTypeName, Boolean isBindingParameterCollection);
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
----------------------------------------------------------------------
diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
index 3f67ec6..815ff8d 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmFunctionImport.java
@@ -25,7 +25,24 @@ import java.util.List;
  */
 public interface EdmFunctionImport extends EdmOperationImport {
 
-  EdmFunction getFunction(List<String> parameterNames);
+  /**
+   * Gets unbound function with given parameter names.
+   *
+   * @param parameterNames parameter names
+   * @return unbound function with given parameter names
+   */
+  EdmFunction getUnboundFunction(List<String> parameterNames);
+
+  /**
+   * Gets bound function with given parameter names.
+   *
+   * @param parameterNames parameter names
+   * @param bindingParameterTypeName may be null if it is an unbound function
+   * @param isBindingParameterCollection may be null if it is an unbound function
+   * @return bound function with given parameter names
+   */
+  EdmFunction getBoundFunction(List<String> parameterNames,
+          FullQualifiedName bindingParameterTypeName, Boolean isBindingParameterCollection);
 
   /**
    * @return the Full qualified name for the function as specified in the metadata

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntrySerializer.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntrySerializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntrySerializer.java
index 1f4bbea..b7139d3 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntrySerializer.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/JSONEntrySerializer.java
@@ -22,6 +22,7 @@ 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.commons.lang3.StringUtils;
 import org.apache.olingo.commons.api.data.Entry;
 import org.apache.olingo.commons.api.data.Link;
 import org.apache.olingo.commons.api.data.Property;
@@ -38,6 +39,10 @@ public class JSONEntrySerializer extends AbstractJsonSerializer<JSONEntryImpl> {
 
     jgen.writeStartObject();
 
+    if (StringUtils.isNotBlank(entry.getType())) {
+      jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_TYPE), entry.getType());
+    }
+
     if (entry.getId() != null) {
       jgen.writeStringField(version.getJSONMap().get(ODataServiceVersion.JSON_ID), entry.getId());
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/44729da1/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
----------------------------------------------------------------------
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
index 9d2d6ec..36b07d0 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/domain/AbstractODataPrimitiveValue.java
@@ -26,6 +26,8 @@ import org.apache.olingo.commons.api.domain.ODataPrimitiveValue;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
 import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
 
@@ -44,6 +46,18 @@ public abstract class AbstractODataPrimitiveValue extends AbstractODataValue imp
     protected abstract AbstractODataPrimitiveValue getInstance();
 
     @Override
+    public AbstractBuilder setType(final EdmType type) {
+      EdmPrimitiveTypeKind primitiveTypeKind = null;
+      if (type != null) {
+        if (type.getKind() != EdmTypeKind.PRIMITIVE) {
+          throw new IllegalArgumentException(String.format("Provided type %s is not primitive", type));
+        }
+        primitiveTypeKind = EdmPrimitiveTypeKind.valueOf(type.getName());
+      }
+      return setType(primitiveTypeKind);
+    }
+
+    @Override
     public AbstractBuilder setType(final EdmPrimitiveTypeKind type) {
       if (type != null && !type.getSupportedVersions().contains(version)) {
         throw new IllegalArgumentException(String.format(


[3/7] [OLINGO-175] Enabling fit to respond to action / function invocation (V3)

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.full.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.full.json b/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.full.json
new file mode 100644
index 0000000..a3809c7
--- /dev/null
+++ b/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.full.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails)","value":[{"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","qckrnurux
 cbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta","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\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\u00dfjnelx
 qttkhdalabibuqhiubt\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\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\u30
 c1\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.Services.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\u
 30bc\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\u
 88f9\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.Services.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\u30c
 1\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu","Extension":""},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","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"},{"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\u3
 05c\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\u30dc\u30dc\u30a1\u9ed1\u531a\u3093\u3079\u30dd\u30dd","Extension":"gclzjelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg"}]},{"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","ktspjklssrnklboho
 cuxdvnokqcjsce\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\u4e5
 d\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","PhoneNumber":"\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":"somzcvarnprbdmqzovljazvnrqidogiznplvrrejaoqrtijfuiuqenxsdycnt
 smbmrnpatdjuijxdutpcsjelhyastnsk"},"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\u00dfdyzexdkmmarpojjzqycqqvsuztzidxudieldnhn\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":"zssfvjobacbplbteflz
 tpvjymbrvoelkbqtjftkusunalum","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":"Microsoft.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\u04
 4f\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\u30d0\u73f1\u30bc\u7e37\u30a1\u3092\u5f0c\u3072\u305c\u305b\u30dd"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["\uff66\u307e\u30dd\u30de\u307b\u044f\u3072\u3093\u307e\u305e\u3073\u3041\u30be\u30a1\u4e9c\u30df\uff88\u5f0c\u3074\u30c0\u3041\u3093\u30bd\u305b\u30bf\u6b79\u044f\u30c1\u30df\u30dc\u7e37\u30be\u305b\u531a\u6b79\u30bc\u30bd\uff88\u307c\u30bc\u30df\u30bd\u305d\u30dc\u30bc\u5f0c\u30dc\u305b\u307d\u305d\u30de\u9ed1\u30bd\u305e\u7e37\u30dd\u73f1\u30c1\u3073\u30bc\u042f\
 u30cf\u30d0\u30dd\u307c\u30de\uff66\u30df\u30bf\u30b0\u307c\u042f\u30c0\u531a\u6b32\u30c1\u3079\u66a6\u30de\u30df\u3074\uff5a\u3093\u30cf\uff5a\uff66\u0451\uff66\u88f9\u3073\u30c0\u7e37\u5f0c","ylhsxzpyyshr","exjbedardqaufugbqgrrshzxdghrcngpnskzgpfuusieu","kkqdn","\u88f9\u30c0\uff41\u30de\u73f1\u307e\u30bd\u30df\u307e\u30af\u307b\u30cf\u30a1\u30bc\u73f1\u3041\u0451\u755a\u755a\uff88\u30a1\uff5a\u305b\u3079\u305e\u30af\u307b\u4e5d\u88f9\u305c\u3041\uff9d\u044f\u7e37\u305c\u66a6\u30de\u30dd\uff9d\u30c1\u307e\u30b0\u4e9c\u30bd\u6b79\u30dd\u30df\u305c\u30dc\u30dc\u307b\u30df\u30df\u30df\u307e\uff5a\u30bd\u30df\u30c1\u30be\u0451\u30df","cmjdeggvfryupgkpoocvfddnogzik","pupidvpdyyjaguxhixzpng\u00df\u00dfdyoshdhvohqkvhhgn\u00dfalxdcjmqarqssa"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["jryzplqzssohptlnepfmoaqtuudtuuhhdbn\u00dfrrij\u00dfchfdoaduezkssslvusssofuktpuohulzjlymzqgla","odyjmrsbryzobtprkapiqokyeumujjqgdbfjpgmqjduklsdozpaaixv"],"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":"\u307d\u30cf\u73f1\u044f\u30bd\u307a\u305b\u305d\u30bd\uff66\u30de\u30b0\uff88\u042f\u30bc\u307e\u7e37\u30bd\u3074\u6b32\u30bd\u30dd\u307e\u30bc\u30a1\u30af\u30dc\u30dc","Extension":"nybsszdsunynocm\u00dfvpimshzxpflsipkodkvvivljqtjdniuuvhxayrvlqepqjnpuiudsjszaosy\u00dfssrfmufytuk"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"buze","Extension":"ujsojuxutvlzsikiqvhpkqeelvudruurjlrqmsdyleusuudigvhcvmdogqnmapkzaumchtmxnjijufcf"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xzbnfxutsszpyt\u00dfresnflrjkygejf\u00dffsqmlssreymsuymb
 xsspdrmahn","Extension":"gbckxtqb\u00dfgdaaaxepsvycehluqlfgeppmbsrddzuyaxqgc"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"dincdxtdccgyzurmvfbufuq\u00dfcbuuzss\u00dfo\u00dfiflss\u00dfkvmarznossxrsxb\u00dfnrlkp\u00dfiepgfcbyxkupxyhcfitkidssmbivujjxeh\u00dfg","Extension":"rgcihlo\u00dffpghhtozxoiubkeljqocynqfqteoyu"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jfc","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"cdurugzoussatrsaar","Extension":"ylghuuzta"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xilvsb\u00dftpefvqcexaxkifuhdpmzftssppoyussuvgyibzgihbuub\u00dfpskmitccudsarkssteorcln\u00dfixeb","Extension":"lyaxpgibymunjbcvhrjrplsiokhcqeauiokrjtegzxrqfymxnbtlxjxa"}]},{"odata.type":"Mi
 crosoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":[],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u30bd\u044f\u30bd\u30be\u73f1\u30c0\u3041\u307a\u30df\uff66\uff88\u3072\u3074\u5f0c\u5f0c\u30be\u30a1\u30af\u3092\u305e\uff88\uff66\u3041\u3041\u30df\u3092\u6b32\u755a\u30c0\u3073\u3073\u9ed1\u3092\u755a\u30b0\u305e\u4e9c\u307d\u30bc\u305b\u30dd\u044f\uff5a\u9ed1\u305f\u30d0\u307e\uff5a\u4e9c\u30af\u4e5d\u3093\u307e\u30de\u30dc\u30be\uff88\u30bc\u4e9c\u30c1","ltevfhqrezbjyaoxoaviujvpncxuflugkghoisylipqgecqkulplvikixhcilkgmovz","","g\u00dfntmp","gxyfljyfcrmyaqducbdizxsdkmizhjxymiunrvhntd","bfgdndhikllopuzfyytupgxjrkhtrgpemgcurptohsamqhazhctfzdcvhymivnhoxjncntpfuqjvfgtfjjhkndec","uerdvhyrbvujpqkufyhmeudrjbssnqjhouaxdmjqlkspmrexxoothuztqv\u00dfxqkfavkrcnubrzdyign"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"
 Collection(Edm.String)","AlternativeNames":["lqzgcfbjlmzeoqteatdexkuivugeeajcgvlojfzcmsogc","\u531a\u30dd\uff9d\u30c1\u3042\u0451\u30bf\u0451\u6b32\u7e37\u30bd\u30bd\uff5a\u305f\u30b0\u30bf\u305c\u30df\u30de\u307e\u3072\u30dc\u30dc\u30de\u6b79\u0451\u30be\u305f\u30a1\u30be\u73f1\u3041\u7e37\u30de\u3092\u30bc\u042f\u7e37\u3074\u3092\u3093\u30be\u30a1\u30c1\u6b79\u30bf\u307e\u30bc\u30bc\u30dc\u307c\u30bf\u305e\u30dc\u30bf\u305e\u0451\u3092\u4e5d\u044f\u30c1\u30b0\u30de\u30a1\u044f\u30bc\u30c1\u307d","\u307a\u30bf\u30bc\uff66\u30de\u3093\u3041\u6b79\u3093\u4e9c\u3041\u4e9c\u30df\u307b\u3093\uff41\u307b\u3072\u3073\u30af\u30de\u305e\u3072\u4e5d\uff5a\u531a\uff9d\u30c0\u30bc\uff88\u044f\u30cf\u30bc\u305d\u044f\uff9d\u30df\u30de\u6b79\u66a6\uff9d\u30bd\u30bd\u307d\u30bf\u30d0\uff9d\u305b\u30de\u30be\u3093","vihrazgmjgtkgpbgbnfhhcsycgvzxssrzzvfssqirsslleimedhyhfuvfcnhlk"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xmnfdsozhyybqhuej
 akrzoqntnorssxevpjsmsipruxjjghuodqthbvutzantnlssnvi","Extension":"\u30af\u3092\u30bd\u5f0c\u30be\u3042\u30de\u307a\u3074\u30b0\u531a\u044f\u30bc\u3093\u305d\u30de\u30d0\u4e9c\u30dc\uff88\u30dc\u30de\u30c1\u755a\u305c\u30de\u88f9\u755a\u30c1\u307e\u4e5d\u30c1\u30bd\u30d0\u307d\u30bc\uff5a\u30bc\u30a1\u30df\u0451\u30dd\u66a6\u3073\uff5a\u30c0\u305b\u30dc\u30bd\u305e\u30bd\u755a\u30c1\u30de\u044f\u30dd\u4e5d\u30c1\u30de\u531a\u3072\u6b32\u30dd\u9ed1\u30dc"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3074\u30bc\u9ed1\uff5a\uff5a\u755a\u30bc\uff41\u30c1\u30dc\u307d\u30bd\u30bd\u66a6\u7e37\uff9d\u4e5d\u30cf\u30cf\u30dd\u30bc\u30df\u30c0\u30c0\u3079\u044f\u88f9\u30c0\u30df\uff88\u3092\u30cf\u4e5d\u30bc\u307e\u30bd\u30dd\u4e9c\u3042\u5f0c\u30a1\u30dc\u305e\u3072\u88f9\u30bc\u3074\u305d\u30df\u307a\u6b32\u3074\u30bd\u044f\u30a1\u30bd\u7e37\u30b0\u30df\uff41\uff88\u6b79\u3079\u30cf\u3093\u30dd\u30de\u3041\u30bf\u30bd\u30a1\uff9d\u30b
 f\u66a6","Extension":"qxxvvluootexndauvmjmxcsupdzvrqspyltziba"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30de\u88f9\u3042\uff88\u30af\uff9d\u66a6\u30a1\u3042\u30c0\u30bc\u305e\u30de\u3074\u30bf\u30cf\u30a1\u30bd\u30be\u044f\u30be\uff66\u3042\u30bf\u305d\u3041\u30dc\u30be\u30de\u305c\u30dc\u30de\u4e5d\u305f\u88f9\u30b0\u6b32\u6b79\u3093\u30dd\u7e37\u307a\u5f0c\uff5a\u30a1\u531a\u30bc\uff9d\u30be\u305d\u305d\u4e9c\u0451\uff41\u30bf\u30df\u6b79\u30bf\u73f1\u3093\u30af\u3093\u30dd\uff88\u88f9\u30de\u30b0\u30bf\u3092\u305f\u531a\u30be\u305e\u6b79\u305f\u307c\u3073\u305d\u3074\u30a1\u30dc\u30dc\u042f\u30c1\uff88\u7e37\u30dd\u66a6\u30dc\u3072\u30c0\u3092\uff9d\u042f\u3092\u30c1\u30c1\u6b32\u3041\u30dc","Extension":"\u30a1\u30dc\u30dc\u3074\u5f0c\u307d\u30c1\u30df\u30a1\u30bf\u30dd\u30df\u3092\u3042\uff9d\u042f\u0451\u30c1\u9
 ed1\u305e\u30d0\u30bd\u30be\u305e\u30c0\u30c1\u30dd\u30a1\u3041\u30c1\uff5a\u4e9c\uff41"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"agnuykfmdluenuzmrvokpbnbqtmxtpupsmmmmtlatzdulayi","Extension":"\u307a\u531a\u6b79\u66a6\u4e9c\u30b0\u3072\u3072\u88f9\u30bc\u4e9c\u30dd\u30dd\u3074\u3093\u0451\u307e\u30bc\u044f\uff5a\u30a1\u305d\u30de\u30dd\uff41\u30bc\u30de\u30dd\u6b79\u30bd\u305e\u30bd\u30dd\u30be\u30bc\uff66"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"gigbplfrxugfzaoeuvfqlfjdfzutffmpvfzzfkdygyxpsiqkdxmvkkieqivqf","Extension":"ulreousnjfnjxncfsmkuruhczgcpr"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"znajuovfeompumpfnaxvpnihotlixtkyi","Extension":"dhfygicsdls\u00dff\u00dfxsksjmpfhqujdrp"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30a1\u30dc\u30d0\uff66\u307e","Extension":"\u3092\u73f1\u305e\u30d0\u
 66a6\u30dc\u307d\u30dc\u531a\u305e\u305e\u30de\uff9d\u042f\u30de\u305e\uff41\u6b32\u30c1\u305d\u30de\u305e\u30dd\uff88\u307c\u30dd\u3074\u305b\u30be\u30bc\u88f9\u30dd\u7e37\u30bc\u3041\u4e9c\u30dc\u5f0c\u30bd\u0451\u3093\u9ed1\u30c1\u755a\u755a\u30af\u30a1\u30dc\u9ed1\u6b79\u30a1\u30de\u307e\u30d0\u3072\u3072\u3073\u3072\u30af\u305f\u30bd\u3073\u3072\u30af\u307b\u30bd\u66a6\u30c1\uff5a\uff41\u30bf\u305f\u30af\u30bf\u5f0c\u5f0c\u30c1\u66a6\u305d\u88f9\u3093\u30c0\u3073\u30dd\u3042\u307a\u30af"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"kfpoubqjnvs\u00dffbfuvhphelxzamfaimfegesessregutgmy","Extension":"\u30d0\u30be\u7e37\u307e\u307b\u30bc\uff88\u30bd\u30de\u305e\u307b\uff41\u30dc\u3092\u0451\u30be\u30dc\u30dd\u307d\u30bf\u307d\u66a6\u305f\u30a1\u307c\u3074\u3093\u305e\u30a1\u0451\u66a6\u3073\u30bc\u305d\u30be\u0451\u30bc\u531a\u305c\u30dc\u30df\u30cf\u307d\u30bf\u5f0c\u30bc\u30c1\u30bc\u3092\u0451\u307b\u30bf\u3042\u30a1\u30dc\u66a6\u30a1\
 u30c1\u0451\u0451\u305d\u6b79\u305e\u30dd\u3093\u3042\u30be\u30be\u66a6\uff9d\u3042\u6b79\u30c1\u30dc\u531a\u30dd\u30bf\u30dc\u30bf\u6b32\u30dc\u7e37\u6b79\u307e\u5f0c\u307d\u305c\u3042\u30be\u30de"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xjpbryendyhzjmycrabhbavvezhaodbikixbxhuxmdlfgdqllhau","Extension":"nsuslekasfkfqsgdbfuyklksfxkrdgmuuapucehltlneufutespbughidhjnntsgsplqouaoyduzyhyziqplrfaj"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["ylhgieuhztskmpqovfjivuquxpfdlxzxeyoyvenktnmdispj","hxinivbjksmviuvhplsdtryddcgiuzxihcmzzfaipposcrkjbfzxkuurytfvkock","xdykfmqrupbenuzyxa\u00dfqnjyab\u00dfuqmhryucrbgzsjxbrottuin","yyssjjxcfh\u00dfovzgdgotnzfnuguufkceefssb\u00dfzdcvlrjexi","kjzuqlufinppmuedyuvsfgevyicxlydxmvzticpjaq","\u3072\u9ed1\u6b79\u3093\u4e5d\u9ed1\u307c\u044f\u30bd\u305c\u305b\u30a1\u305c\u88f9\u30c1\u307b\u307c\u5f0c\u305f\u3093
 \u4e5d\u3042\u30de\u6b79\u307d\u3074\u30de\u3074\u30bc\u30df\u30dc\u30c0\u30bc\u307d\u531a\u3074\u30bc\u30cf\u531a\u044f\u044f\u755a\u305d\u531a\u7e37\u30bd\uff9d\u30a1\u3042\u3079\u4e9c\u88f9\u30de\u30a1\u73f1\u305b\u307a\u042f\u0451\u30c0\u307b","knssxohvraofysszssxbgobsstyejs\u00dfjncu\u00dfdhfglubsjoyne\u00dfofebgysskussyjkjjiuggqpp"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["htuvfzjmqgfvx","\u30d0\u30dd\u30d0\u30df\u4e9c\u307e\uff9d\u042f\u305c\u3079\u30df\u30a1\u30c0\u30de\u30bc\u7e37\u3092\u4e9c\u30bf\u30dd\uff5a\u73f1\u30b0\u88f9\uff9d\u7e37\u30df\u044f\u4e9c\u88f9\u30bd\u3093\u6b32\uff9d\uff9d\uff66\u30df\u3093\u30af\u305e\u5f0c\u6b79\u4e5d\u305d\u307d\u305b\u042f\uff88\uff66\u30bd\u30c1\u305e\u30bd\u3072\u30dd\u4e9c\u307e\u30df\u30df\u755a","\u3079\u4e5d\u30bc\u30bf\u30c0\u30de\u30bd\u305f\uff88\u30bc\u30bc\u73f1\u305d\u305c\u307d\u30dc\u88f9\u755a\u4e9c\u3041\u3092\u30a1\u3093\u6b79","saplpvpnhxnkdmfptefnrai","\uff41\uff41\u755a\u30bc\u30
 c1\u7e37\u3079\u30bd\u4e9c\u305f\u30bc\u88f9\u6b79\u3041\u30bf\u30c1\u88f9\u531a\u30a1\u30bc\u30be\u30c0\u042f\u30df\u30c1\u531a\u30a1\u5f0c\u30cf\u30dd\u9ed1\u4e5d\u30be\u5f0c\u7e37\u30dd\u30dd\uff41\u307d\u30de\u307c\u66a6\u4e5d\u3072\u3079\u73f1\u307b\u307c\u044f\u305c\u305d\u3093\u30be\u30cf\u3092\u30b0\uff41\u305f\u73f1\u66a6\u30bf\u30bc\u7e37\u305c\u307a\u30dc\u30bc\u0451\u3073\u73f1\u7e37\uff66\u30bf\u30dd\u3072\u30de\u66a6\u6b79\u30bf","ulnqczllt"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u30dd\uff5a\u30c1\u30bd\u3074\u305b\u3073\u307a\u305f\u66a6\u73f1\u30bc\u30dc\u30c1\u305b\u30dc\u305d\u307d\u30bd\u30dd\u30bc\u30bf\u30d0\u30bc\u30be\u30c0\u30dd\u305d\u30a1\u7e37\u3041\u30be\u30a1\u4e5d\u3072\u88f9\uff66\u307e\u30a1\u042f\u30cf\u307d\u30bc\u66a6\u30bc\u30be\u755a\uff41\u30dc\u88f9\uff66\u3073\u30de\u3072\u30bf\u305d\u30a1\u3073\uff5a\u30dc\u30bc\u3
 041\u755a\u307d\u4e5d\u30a1\u305b\u7e37\u30bc\u3074\u30dd\u6b79\uff41\u30bd\u3042\u305d\u305d\u66a6\uff9d\u042f\u30de\u4e5d\u30be\u30bd\u9ed1\u755a\u5f0c\u3073\u3079\u3041\u30c1\u531a\u30a1","jueej\u00dfmkcoddij\u00dfmussssrpjgynzrhqylcxnt\u00dftssqscacuqmivea","ssss\u00dfvbmlfuvgqaknsavcgcjnbndaxyfpdilyptunkohicyopimiechimnjvczlrkxbennnssssx","\u73f1\u3093\u3093\u3092\u30bc\u30dd\uff41\u3093\u531a\u307d\u30b0\u9ed1\u042f\uff5a\u30a1\u3074\uff5a\uff41\u30dc\uff41\u30bd","u"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"zmvqciktcmfqmuompc","Extension":"\u755a\u4e5d\u9ed1\u0451\u3092\u30bd\u6b79\u30dd\u30bc\u4e5d\u30dd\u305b\u30b0\u30af\u305e\u307e\u305b\u305c\u30bd\u305e\u30b0\u30af\u305d\u307e\u30de\u3073\u30de\u0451\u30bc\u307e\u5f0c\u305d\u307d\u30af\u30de\u305d\u4e5d\u3074\u531a\u044f\uff66\u30cf\u3073\u30cf\u042f\u30bd\u30bd\u531a\u30bc\u30a1\u305f\u30dd\u30c0\u531a\u307c\u30be\u30dc\u30dc\u30a1\u305e\u4e9c\u5f0c"},"WorkPh
 one":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30dd","Extension":null},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"blcbsxpeoimkoukovpcufepkpjohtcginkfigohuubzvzgxklhequajoxtndtcdxskvpvgsschzoit","Extension":"yhbrzpaucpmiazziimldqurfjuafeodduuhzsindqsubbuhib\u00dfsavdattydunso"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"lahazbpxzjocgyiejckkuquuugrxnevyvlmunqepqirdsatpneqeturvvnbnkrfynugvhyksuuueyvetmiflgt","Extension":"\u3092\uff9d\u30be\u30bd\u305f\uff5a\u4e9c\u5f0c\u30de\u30cf\u30dd\uff5a\u307a\u30dd\u30c1\u9ed1\u7e37\uff5a\u044f\u30dc\uff41\uff9d\u30c0\u30bc\u044f\u30bc\u30b0\u5f0c\u30c1\u531a\u042f\u30b0\u044f\u30df\u30dc\u30be\u307d\u30df\u30de\u755a\u3092\u305f\u3073\u30bd\u305e\u30dc\u73f1\u30de\uff88\u30bd\u9ed1\u307a\uff
 9d\u3073\u30df\u3092\u30bd\u3042\u30bd\u4e5d\u30c1\uff66\u307a\uff41\u30c1\u307e\uff41"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"tuidhlruivtguafebdydfycxvrgqxtszvu","Extension":"ecyuoivzilrakyfxaypbjsuazfivmaexsjctjbvuissqyazhyravizuhgeycv\u00df\u00dfhikvgarpjxejilif"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"uzylexqmyzuimljbnfbinzakexcsvcvtvvxjvuzsxvxecaxmvth"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["ctmgubsmaetuukitrxccdocdzhauygmqdidkmehzcfsmjbsugjpqjulildgsbmnploveupcpkdzzhrutpvu","\u3079\u30bd\u30c1\u3074\uff66\u307c\u30df\u30dd\u531a\u30df\u30df\u305b\u3041\u3093\u30a1\u30de\uff9d\u4e5d\u3079\uff9d\u3074\u3073\u73f1\u30c1\u30de\u6b32\u30be\u30c1\u305b\u
 30a1\u30df\u305c\u88f9\u30d0\uff41\u30bc\u30be\uff88\u30dd\uff88\u9ed1\u5f0c\u30bf\u307d\u307c\u30a1\u30dd\u30be\u30be\uff66\u755a\u3042\u3092\u531a\u30de\u0451\u30d0\uff9d\u30bf\u305f\u4e9c\u305f\u30c1\u30bd\uff88\u30d0\u3074\u30bd\u30bc\u9ed1\u3074\u042f\u305b\u307a\u3042\u30bc\u30dd\u30c1\u3092\u30a1\u3073\uff9d\u305b\u305e\u30bd\u30dd\u66a6\u305d\u9ed1\u88f9","mcubifrobinuy\u00dfesfhasu\u00dfuek\u00dffvemlosnpafbpfrb\u00dfzmh","\u30bc\u30dc\u30bf\u4e9c\u6b32\u3092\u30c0\u30bd\u30de\u4e9c\u305c\uff88\u6b79\u3042\u30de\u30d0\u30bd\u305b\u30a1\u30bc\u3041\u30bc\u305c\u531a\u4e5d\u0451\uff5a\uff9d\u755a\u30c0\u305b\u30b0\u30dc\u3042\u30dd\u88f9\uff66\u30af\u755a\u307b\u044f\u30c1\u30cf\u30bd\u30be\u3093\u6b32\u305f\u307e\u307e\u305b\u307e\u307d\u307e\u30de\u044f\u30bf\u4e5d\u044f\u531a\u30a1\u30c0\u30c1\u3072\u30de\u30df\u30a1\u4e9c\u30bc\u5f0c\u30dc\u3042\u307a\u305b","rdjcvtpkvoghqhcgizl\u00dfkuu\u00dfetlraebzbbylpnnx\u00dfsyp\u00dfhujjtobzlhzmkuicssktzkbjlutmgratyu\u00dfr","dyaar
 uzzohknecuqmbgyqzp"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["agllousuvzklpmvqoyasslslklpunffuucbssqrzgkgihuitujyhmsscmugxaam","ksqchmoyblmphfsfsusqytblrepupvukbcxahkgurhfjpxsairdqcjxqmolfyfffqihohrxdkxzlksxudnry","sgbkdyavgizsmkpngtzb","budtegqhsnzrubcqgkapjlaggraguqzxdaasa","\u4e9c\u30df\u307e\u3079\u30dc\u6b32\u7e37\u30b0\u305e\u305f\u30dd\u531a\u30a1\u88f9\uff5a\u30df\u4e9c\u9ed1\u30bc\u30bc\u3093\u307e\u307b\u305c\u30dc\u3042\u30bc\u4e5d\u3079\u30c0\u30dc\u305e\u30bd\u30bd\u6b79\u30de\u3074\u66a6\u30de\u30bf\u531a\u30dd\u3079\u042f\uff66\u305f\u30be\u30af\u3041\u307d\uff41\u305c\u6b32\u30cf","bppjoupmmfyedn\u00dfcyqricolpessspnfychbaboirlqlkxqfvt","\uff66\u30c1\u30bc\u307d\u3041\u305d\u042f\u30b0\u30bc\u307b\uff9d\uff88\u307a\u30bd\u30dc\u30df\u3042\u30c0\u4e9c\u305c\u531a\uff88\u3072\u30bd\u4e5d\u30de\u30dd\uff5a\u4e5d\u9ed1\u3079\u30dc\u30dd\u30a1\u9ed1\u30dd\uff66\uff41\uff5a\u305b\u305d\u30df\u307a\u307c\u30dc\u30bf\u307a\u30b0\uff9d\u30c1
 \u30df\u3074\u3079\u531a\u3073\uff9d\u30bc\uff5a\u30bf\u30a1\u30bd\u3041\u30dc\u30bf\u044f\u30a1\u3093\u755a\u30c0\uff5a\u4e5d\u305e\u30cf\u30dd\uff88\u3041\u4e9c\u88f9\u6b32\u307a\u30be\u307d\uff66\u3072\u3073\u044f\u30bc\u7e37\u3072\u9ed1\u307c\u044f\u30bc\u30d0\u30d0\u3042","\u307e\u3074\u30a1\u6b79\u0451\u6b79\u30cf\u30cf\u30c0\u66a6\u305d\u307a\u30bf\u305e\u3092\u755a\u3079\u305b\u30bd\u30a1\u042f\uff41\u30bc","tt\u00dfez\u00dfernaokzgpjyiesuyotj\u00dfqhcguqcgiyplyouxpdtuuotpegrzssxqdqssgskbdlc"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["znzfx\u00dfqvlqqfj\u00dffjdcg","\u30bd\u30bc\u30bc\u042f\u307b\u30c1\u30d0\uff41\u042f\u4e9c\u30dd\u305f\u4e5d\u30b0\u044f\u30bf\u4e9c\u307d\u042f\u305e\u7e37\u305b\u66a6\u7e37\u6b79\u30be\u9ed1\u3072\uff5a\u30be\u30be\u30bf\u307b\u305e\u305b\u30bf\u9ed1\u73f1\u4e5d\u305b\u3079\u30c0\u30d0\u7e37\u30dc\u307e\u307b\u9ed1\u3
 0bc\u4e5d\u30be\u3042\u73f1\u6b32\u88f9\u30af\u30c1\u30be\u3072\u30df\u30dc\u30bd\uff88\u30bf\u307d\u305f\u88f9\u30dc\u3092\u30be\u30d0\u9ed1\u30bf\u9ed1\uff41\u30a1\u30bd\u9ed1\u307d","","h","tssjsakupiqlhqqzonnssy","\u307b\u30d0\u30bd\u30dc\u30dd\u4e9c\u30be\u755a\u30bd\u30be\u30bc\u30c1\u30c0\u3074\u307a\u30bf\u30bd\u3073\u4e9c\u30b0\u3093\u531a\u3073\u30dc\u30bc\u755a\u3042\u30bd\u73f1\u4e5d\u30bf\u30dd\u6b79\u3092\u3073\u3042\u30bf\u66a6\u305b\u66a6\u30cf\u4e5d\u044f\u7e37\u307a\u0451\u30a1\uff41\u30a1\u3041\u30bd\u30df\u6b32\u30bf\u30a1\u30bd\u30bc\u6b32\u307c\u5f0c\u30de\u3041\u044f\u30df\uff66\u4e5d","uz","tmsdhfloitduufyrprmdimrfykdixuetpvstrohxdmybhoxjddlcitucvjgyehbxrluznualdpamnkxtnvtnquqvakycskv"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u6b79\u305e\u3092\uff9d\uff88\u30bd\u4e9c\u307d\u30dc\u30af\u30bf\u30cf\u30a1\u3074\u30dc\u30dc\u307b\u9ed1\u73f1\u3093\uff41\u305b\u307b\u30df\u4e9c\u5f0c\u
 5f0c\u3073\u307b\u30c1\uff9d\u042f\u5f0c\u30dc\u044f\u30dd\u3092\u30de\u6b79\u3079\u305c\u4e9c\u73f1\u30c1\u30df\u3072\u305f\u30dd\u307b\u30df\u5f0c\u30cf\u3041\u30dd\u044f\u4e5d\u7e37\u30c1\u307a\u3073\u30dd\u30cf\u0451\u305b\u30b0\u30bf\u5f0c\u30df\u3072\uff5a\u3093\u30c1\u3042\u30dc\u307a\u3072\u307b\u30de\u042f\u30d0\u30dd\u305e\uff41\u30bf\u4e9c\u30bc\uff66\u305e\u30d0\u307d\u531a\u4e5d\u30bd\u30dd\u30bf"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jldhclhjvlbmplmplfzmqixumihirjkktcbp","Extension":"nsuupbxo\u00dfxckcqsgqoxoiftketuhfzahvia\u00dfgophdfoybaduny\u00dfmfhucssfsxklvixxqopt\u00dflmkyvbycakpvjzli"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"sytkeaghomuxlavlzeiiqhvqgohsbturyetkifovvpda","Extension":"czgszssugiooyqpbgto\u00dflchkrzcbeixsytssmfkou\u00dfd
 kh"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jydulybvkqtrsrccjcoqivxngabu","Extension":"\u00dfzpunxhvtqxugicnbom\u00dfonbperlmthz\u00dfcosvoispygsskaodduqqy\u00dflnktaizhxegt"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"jijziuqunzhbuiue\u00dftpdio\u00dfvcedpsupizgbmkijuv","Extension":"uiznrvupiffipqelaehfddhxbnxftkopuceydzzctkuaxjuhfdtxa"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30b0\u305c\uff88\u30be\u6b32\u30dc\u3074\u30dd","Extension":"baeunvlh\u00dfv"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":[],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u30bf\u30bd\u30bf\u6b32\u30de\uff5a\u3093\u30bc\u3072\u30dd\u30c1\u3072\u307a\u30bc\u755a\u305e\u30c1\u3092\u042f\u30be\u66a6\u307d\u30af\u30dd\u531a\u30de\uff88\u30be
 \u044f\u305d\u30bd\u3073\u305e\u3041\uff5a\u30c0\u3072\u307c\u30bc\u30bf\u044f\uff41\u3079\u30bd\u30df\uff66\u30dc\u9ed1\u30de\u3092\u30bd\u307e\u30de\u30be\uff66\u307d\u305d\u6b79\u0451\uff88\uff66\u6b32\u30af\u0451\u3079\u30bc\u0451\u3073\u30bd\u3093\uff88\u30a1\u88f9\u30be\u30bd\u7e37\u3042\u9ed1","\u3042\u6b32\u30df\u30dd\u3072\u30bd","jfbjmbmubfykjgfohbaibbvbxxapheyhitvqokxcfxqqxnpjhltcpakcjzlqbxtuhlgp","z","\u3092\u30bf\u307a\u30a1\u3092\u307d\u30c0\u307b\u7e37\u307d\u30dd\u4e9c\u305b\u3092\u30dc\u307b\u305f\uff5a\u307c\u3041\u30bc\u305e\u30be\u307d\u30a1\u307b\uff88\uff88\u4e5d\u30be\u6b79\uff66\u7e37\u307d\u3074\u30df\u3079\u30dc\u307a\u30bc\u30dd\u30dd\u88f9\u9ed1\u30df\u531a\u307e\u30a1\u6b79\u30bc\u755a\uff88\u3041\u30de\u3093\u3072\u042f\uff66\uff9d\u3042\u307e\u30c1\u30be\u30b0\u30bc\u30df\u755a\u6b32\u305d\u9ed1\u0451\u30be\u30df\u73f1\u30bc","mnypofpvxbyascpuoiulkaxkbyhgcbdmyhhhopjusmtqviutvmsdnromqkhb"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.Asto
 riaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u305c\u30a1\u6b79\u307b\u0451\u30bd\u30dd\uff9d\u4e5d\u9ed1\u3079\u307a\u30cf\u305e\u4e5d\u30d0\u30bf\u30de\u30bd\uff9d\uff88\u3079\u307e\u755a\u4e5d\u30dc\u307b\u3079\u307c\u30bf\uff66\u305c\u531a\u30be\u042f\u73f1\uff5a\u30dc","nzbfjxdkfsxcxhxazkhbjscyijioxqvubggbildszsxtevviiuzooabvscbztonqv","aqyjbpcrukxcmzaersauolkufdyuucxdufejvlyktkadgzjuolzirvh","oxrjmmmnjc","uvnjrlblgyosrfvpss","ujeugssltumbyngvfultassquaptz"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"juuuetaltxscuflljlbmguqabqe"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3092\u9ed1\u0451\u30bf\u30bc\u30bc\u042f\u044f\u30bd\u88f9\uff5a\u30a1\u30a1\u30c1\u30c1\u5f0c\u307d\u30d0\uff88\u305e\u73f1\uff41\u307c\u305e\u4e9c\u30cf\u30bd\u30de\u6b32\u30c0\uff9d\u4e9c\u6b32\u4e5d\u73f1\u30bc\u30b
 d\uff66\u044f\u3042\u3073\u30be\u7e37\u307c\u30de\u30de\u73f1\u044f\u30bd\u30bc","Extension":"pgqxttzfbxxuknrufdnxygezjeshbjvvqiikrmbcivdzgkucdcehmutdfqjramitealhkcjtif"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"sshkglfvuei","Extension":"mzg\u00dfuuevdfbhtccelxmkojqsaosejsqodgmbf\u00dfiteuiuooppssaprriqodq\u00dfri\u00dfjpriohsetmtvj"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"niohi\u00dfkushzs\u00dfjreumla\u00dfbyydezysrxxaio\u00dfxalsq\u00dfsguenfogcussnzgcdiaenkenirzfsbtaujalntcmpugkeylb","Extension":"lremquejqajolubuyysnymlvoqmcbtm\u00dfqxnogmxurxyngcssfsffzaee\u00dfudjadxczlkmrbevhazyeqzkzrcnyjqsspup"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefault
 Service.Phone","PhoneNumber":null,"Extension":"pssezsfiqmzziuagdxmhafgmymzyqitdujekrxmbguzhlsxjucscpllmdkujvjlnurtsipsjffayh\u00dfabrl"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"sznbcrojssrhqxssogbndssfkqodk\u00dftffiudaavnjktuzibahbcmuzvophcdjzvrji","Extension":"uygttilsgghixctbohdaqptlikqesujptag"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"nuavvfamxbzcduqbouqfjjamxtdvxkatcnjvpxptkoumvbfpfuofqudoukyeaoqhuuzrsum","Extension":"\u3092\u307e\u30bd\u30de\u30de\u30bd\u30de\u30c0\u30df\u30a1\u30de\u305d\u30bd\u3092\u3093\u0451\u3072\uff66\u30c1\u531a\u30af\u30be\u4e9c\u30bc\u30dd\u307b\u30dc\u755a\u30bf\u30cf\u88f9\u305f\u531a\uff9d\uff9d\u73f1\u30b0\u531a\u307c\u30d0\u30a1\u30c1\uff41\u3042\u30bd\u3042\u30bf\u30bc\u30bd\u531a\u30bc\u307e\u30d0\u305c\u30bd\u66a6\u30bf\u0451\u042f\u30bd\u6b79\u66a6\u0451\u305e\u30bd\u30c0\u30a1\u30bd\u3093\u30bd\u30dd\u30b0\u30df\uff88\u30bd\u5f0c\u30c0\u30de\u9e
 d1\u30d0\u30df\u3079\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"nugguvummvqsstii\u00dfoenqrrdvojtqhfssvarzoogpzbssdti\u00dfyqolqoezayzmcheuocy","Extension":"zvtjqjrhmsomilxr"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"cpo","Extension":"avdeskonurhkfkgtiuypbleeukorcqbtgvgqketpgdvigpdmxuahxjnltccdghgolnijiqfaefcypzqubm"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["myjbbggstjdlukcpoymrlaibvtdtxdkapbkymomcabiclaactsprylelu","invl\u00dfdy\u00df\u00dffe\u00dfhdsdzysxtaauruioo\u00dfifvobkjqdcoed","\u30a1\u30dd\u66a6\u5f0c\u30cf\uff88\u30c1\u30bf\u30de\u3041\u30bf\u30dd\u66a6\u307a\u3074\u4e9c\u73f1\u042f\u3079\u4e5d\u3074\u307b\u305b\u307d\u73f1\u307e\u30d0\u30bd\u30de\u30de\u4e5d\u30c0\u30bd\u0451\u30bc\u30bc\u3093\u30a1\u30bc\u305d\u4e5d\u307d\u30bd\u305e\u88f9\u4e9c\u6b79\u044f\u3041\u30a
 f\u3073\u307e\u307d\uff66\u30bd\u305d\u30cf\u30bf\uff41\u3093\u30b0\u305e\u6b32\uff88","\u4e9c\u6b32\u531a\u30bd\u30bf\u30dc\u305c\uff9d\u9ed1\u531a\uff66\u30af\u305c\u30bd\u30c1\u30b0\u30a1\u30bf\u30bd\u307e","xvjitqklvznebdzrrussmgquxyvulk","\u3073\u30bf\uff66\u30dd\u305d\u30c0\u30af\u30b0\u30bd\u3092\u305f\u30bd\u30c0\u30bc\u30b0\u305c\u30bc\u73f1\u5f0c\u305c\u30bf\u3041\uff66\u3074\u30dc\u30c1\u3079\uff5a\u755a\uff5a\u044f\uff5a\u3079\u73f1\u7e37\u30de\u3093\u307d\u30c0\u305d\u6b32\u30cf\u3042\u044f\u30bd\u30df\u3092\u30bd\u30bc\u30dc\u305b\u30cf\u3041\u30d0\u3072\u305e\u30c1\u4e9c\u0451\u30c1\u30a1\u30bc\u30bf\u30bf\u307e\u3074\u307b\u30de\u30be\u30de","qdyzyrxcslbvhxnrsomczthemsdknzr"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["fbonaodnxdqvdpzsmbxfxvvjbjhpstgxoldkpl","ultvvzvpcupeykjfqhnrpuiysstgkiertprgimfkmalprvuauoyiygefhvooulooiycfti","ounfjbxm","ussujnhssckbdayhnuqydtzxaxbka\u00dfqcpk\u00df","\u3074\u6b79\u4e9c\u30bc\u305e\u042f\u30dd\u7e3
 7\u6b79\u305f\u30df\uff5a\u9ed1\u30bd","\u531a\u30bd\u3093\uff5a\uff41\u307a\u305d\u30af\uff88\u30d0\u3079\u30dc\u73f1\u0451\u305c\u30bc\u30bc\u30cf\u531a\u305c\u6b79\u30d0\u88f9\u3073\u305e\uff9d\u0451\u30df\u3042\u3041\u3079\uff5a\u7e37\uff41\u307a\u30a1\u30dd\u3079\u307d\u30d0\u30dc\u3041\u305f\u30bc\u30bd\u307d\uff88\u305d\u30dc\u30bf\u30bf","runuvssbjfzjdtzvuubgukvklsyazimnhkfdevmjgjcucabnefyvgmgoyse","\u307c\u3093\u4e9c\u30bc\u0451\u66a6\u30bd\u30dd\u30df\uff66\u307b\u5f0c\uff9d\u4e5d\u3079\u0451\u307b\u30be\u30bf\u3093\uff5a\u30d0\u3074\u4e5d\u3079\u6b79\u305c\u3072\u30bc\u30b0\u4e5d\u305b\u30bd\u30bc\u3072\uff41\u042f\u6b79\uff88\u30bc\u305c\u30bc\u30c1\uff41\u30c0\u30bf\u30bf\u30cf\u9ed1\u6b79\u30bd\u30c1\uff41\u30dc\uff88\u30dd\u305d\u044f\u3073\u3074\u30de\u307e\u307d\u30af\u307a\u3072\u30a1\u30cf\u30c1\u307e\u0451\u30bc\u30bf\u305d\u307a\u30c0\u0451\u307d\u3074\u30dd\u30a1\u30be\u307b\u30c1\u9ed1\u3073\u3072\u66a6\u30bc\u30bf\u66a6\uff88\u30dd","\u305e\u3079\u30df\u30bc\
 u3074\u9ed1\u044f\u30dc\u66a6\u3042\u0451\u66a6\u30bc\u30bc\u30dc\u73f1\u6b32\u30bf\u755a\u3079\u0451\u30df\u30bd\u0451\u042f\u30bf\u3073\u3041\u30bd\u3041\u4e5d\u4e5d\u30bc\u30bc\u30bc\u6b32\u30c1\u66a6\u30be\u30bc\u30be\u30d0\u4e5d\u6b79\u305e\u30a1\u30bc\uff9d\u88f9\uff66\u3072\u305f\u9ed1\u30be\u5f0c\u30bc\u4e5d\u30dd\u30b0\u30dd\u4e5d\uff88\u3072\u4e9c\u3093\u3092\u30b0\u044f\u042f\u66a6\u307e\u042f\u044f\u30bd\u30df\u30bd\uff66\u30d0\u88f9\u30dd\u305f\u3073\u3072"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\uff9d\u3042\u7e37\u30bc\u6b32\u30dd\u30be\u30bd\uff9d\u30bf\u6b79\uff88\u30af\uff88\u305c\u30de\u305f\u305d\u30bd\u4e9c\u30a1\u30bd\u305f\u531a\u30df\u30bf\u30c1\u66a6\u30dd\u755a\u30de\u30bd\u30bd\u30bc\u044f\u30df\u30bc\u30c1\u3079\u66a6\u307a\uff9d\uff66\u305b\u3042\u30de\u531a\u3074\u3042\u6b32\u30df\u30be\u30b0\u3073\u307c\u30bf\uff41\u305d\u30de
 \u3093\u305b","\u6b32\u30af\u30bf\uff5a\uff66\u30af\u307e\u30c1\u9ed1\u30dc\u30c0\u30a1","esgsuobiculudxvrlbucroucrmunrpxavhqnryyzncdtjmaqaxaoqtaxxoadzpgpckyvbda","pjvatulkmuntfehsqmxqazvpmznojsxjvuomavgvskemakovjkpjppupmbktmhauxoxlyvstbexmyfpeusrz","cal\u00dfvjnghkcrypqssptxdptdscpj\u00dfvseslgrlkysshqtmitrulbvidfubmuvtc\u00dfpmrjmumzultukqybu\u00df","\u5f0c\uff88\u30cf\u4e9c\u30bc\u3093\u305e\u305e\u30df\u30dd\u305d\u30df\u30bc\u0451\u3074\u73f1\u30de\u3079\u30be\u307c\u30c1\u044f\u3093\u30af\u30be\u755a\u30bf\u30a1\u30a1\u30cf\u66a6\u3073\u30bc\u044f\u5f0c\u30c0\u305b\u30dd\u305b\u73f1\u30b0\u5f0c\u30bd\u73f1\u30d0\u3042\u042f\u30cf\u30de\u30a1\u30be\u531a\u3042\u30c1\u30bc\u4e9c\u30dd\u307a\u307d\u30c1\u531a\u66a6\u5f0c\u305e\u73f1\uff5a\u3092\u30bc\u307c\u30dd\u4e9c\u0451\u305d\u30dc\u755a\u531a\u30cf\u30bd\u4e9c\u30bd\u73f1\uff5a\u30dc\uff9d\u305d\u044f\u305c\u73f1\u30dc\u0451\u7e37\u73f1\u30b0\u30bf\u305b"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefa
 ultService.Phone","PhoneNumber":"\u30dc\u30a1\u0451\u30c1\u30bd\u30dd\u30bc\u30de\u30dc\u3073\u3074\u30bd\u6b79\u30de\u6b32\u3073\u66a6\u044f\u6b32\u6b79\u30bd\u4e5d\u3079\u531a\u88f9\u30dd\u30cf\u30c1\u3092\u531a\u307d\u30bd\u305b\u30dd\u307b\u30d0\u30d0\u30bc\u30dd\u30af\u30de\u3072\u044f\u73f1\u30de\u30bc\u30c0\u6b32\u307c\u30bc\u3073\u307e\u3073\u6b79\u3093\u755a\u305e\u307d\u30dd\u531a\u3042\u755a\u30bc\u6b79\u88f9\u30df\u30b0\u3072\u30bd\u307a\u30c1\u30bc\u30a1\u30bd\u3072\u307d","Extension":"osdxnzdcggkfrxdutuyyaggautyrqeosuuqfmkbxjouiscqjuflm"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"exapnfctunc\u00dfddssamyncfpimng","Extension":"rzzf"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"yaiobbicpjpqbu\u00dfltmacuqhozge\u00dfxnosfehdm\u00dffhdfasskatuf","Extensio
 n":"gtdrssbyoihadzgovsssucr\u00dflpkszqfryzuy\u00dfgiqpvkduzasmsp\u00dfqayobhdrbdddvkmilehvsih\u00dfuhvnpuu"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\u30dc\u30de"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"ujrhxbkftdlpxgtmrejoeckhpeugsscqijnyioqmqxcelcicvag"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ssfuxgineaynkvylnhzkoajyjsspltjytzaq\u00dfuhxbngbersrlanu\u00dfetfssmkgyupxqoorkuysunsyvvhbtfiluqzrusrkga\u00df","Extension":"ssmebfoxpkgxmuucqnroracllulkhundzdcksrovgfakggumfihjuxxn"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["uzdvydqiqquupklpclltadeomuendkudtsyelaifgbgmcurpgszjkhvxyudociuukxgvmjocjbjtxkvsijbllsu","\u305c\u30a1","\u307c\u30bc\u3074\u305b\u30af\u30bd\u6b79","\u4e9c\uff9d\u307d\uff66\u3042\u042f\
 u30be\u307e\u30bf\u044f\u66a6\u7e37\u3092\u30de\u30df\u3042\uff9d\uff9d\u30bf\u30af\u531a\u30be\u30be\u305f\u3074\u30bc\u30de\u30bc\u30bf\u30a1\u307c\u30b0\u3092\u7e37\u4e5d\u531a\u30c0\u30bc\u6b32\u044f\u30d0\u3042\u3079\uff41\u307d\u30af\u305c\u30be\u30a1\u307e\u30bd\u6b79\u30c0\u30c0\u755a\u307c\u30bf\u305e\u4e9c\u30dd\u3092\u305c\u531a\u3074","jssssnnulusfnyxfbecyjvtaldjrutlfauxusnjtyreuu\u00dfssdsshienfgqx","ozaudjdhaepqrlatussymfotuqkusvczfisq\u00dfqdmtspdyvljefpxymssh\u00dfuduxrnnuofn","\u305d\u30be","rxuzuarhbhetofptgoqeoakslykudkgjhoqiffztzoghilhpcbsgseqrhijbmlorengzplkeoxiaqeqzm","\u4e5d\uff9d\u30de\u30a1","\u307c\u73f1\u531a\u307c\u30bd\u042f\u30dc\u30af\u30be\u305e\u30bc\uff88\u4e5d\u4e9c\u30de\u307b\u755a\uff5a\u30dd\u3041\u30a1\u30bc\u30bd\u30de\u30df\u30dc\u305b\uff88\u3041\u9ed1\u0451\u30be\u30de\u6b32\u307a\u3074\u30af\u30dc\u30de\uff9d\u0451\u30df\u3079\u755a\u305f\u755a\u3072\u3092\u3041\u4e5d\u6b32\u30bc\u6b79\u88f9\u30a1\u73f1\u30bc\u305b\u30bf\u66a6\u9ed1\u30dc
 \u3092\u30c1\u305b\u88f9\u307d\uff41\u30c0"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["papbnmujtydipqtkgtdivihhptc","mvnouxrqumrgorzkjckjurnohmpbmtdcbegjklkxsrzshlyqhogaisnvckrpckiecjoigmaxsmrk","\u88f9\u30dc\uff5a\u66a6\u30bd\u30bc\u307e\u305f\u30bd\u30bd\u30be\u3074\uff88\u6b32\u73f1\u30dd\u307e\u30dc\uff41\u30be\uff88\u30af\u755a\u3093\u755a\u305c\u30be\u307c\u30c0\u3042\u305c\u305f\u30b0\u531a\u66a6\uff9d\u3093\u30de\u30dd\u30dc\uff88\u3092\u30de\u30dc\u7e37\u30af\u0451\u3042\u9ed1\u9ed1\u30bc\u73f1\u5f0c\u30bc\u30df\u30c0\u4e5d\u30dc\uff5a\u30a1\uff41\u044f\u30cf\u30b0\u30af\u30a1\u66a6\u3074\u044f\u73f1\u30a1","\u30bf\u30dd\u30de\u307c\u30bd\u30be\u3041\u30bc\u30a1\u30dc\u30dd\u307c\u30af\uff88\u0451\u307d\u307c\u30de\u30df\u3093\u30de\uff5a\u30de\u3092\u307d\u30c0\u30c1\u6b79\u3041\u3042\u30cf","\u7e37\u3042\u73f1\u30be\u3074\u30bd\u307d\u30bf\u30de\uff66\u30df\u305c\uff88\u6b32\u3072\u4e9c\u30d0\u30dc\u755a\u30dd\u30dc\u30c1\uff88\u30b0\uff9
 d\u7e37\uff5a\u307a\u30af\u307d\u0451\u73f1\u30bc\u7e37\u305c\uff88\u30bc\u4e5d\u30be\u307e\u0451\u3072\u307b\u30df\u30c1\u3072\u30c1\u30df"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["\u755a\u3093\u305b\u30bd\u30bf\u3092\u30bf\u3041\u3072\u30bc\uff41\u73f1\u30df\u305c\u30df\u3073\u30a1\u73f1\u305f\u30cf\u30dc","tufbleuiyuatxycutzautrjk","pvgpj\u00dfxrs\u00dffmiqxssnissdjq\u00dfxqkmkihxbaobdppqvednblkzbssvzjecm\u00dfxm\u00dfssljpguimssjng\u00dflocuiugunflfkkoupc","pfpqbegyzthjyyyahxeuthuxdvrysguodguunkvrzcmlivllbsbfgxucosgff","ndoniojxafumupujgbszovshmnqvilgmezyurxhifdfarchlxxzoqbkslselj"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"ys\u00dftkvrqxmsrfbussbncyxlbdssyyqulxeitmvzumgapqbxiugfq","Extension":"\u30de\u30bc\u30bf\u30df\u66a6\u30cf\uff41\u042f\u755a\u30af\u30de\u30dc\u30c1\u30c1\u30de\u30af\u044f
 \u044f\u3041\u755a\u73f1\u307c\u755a\uff88\u30bd\u73f1\u305c\u30bf\u30a1\u305e\u755a\u9ed1\u3093\u30a1\u044f\u305d\u307d\u3074\u30af\u9ed1\u30bc\u044f\u30de\u307d\u30be\u3074\u30bf\u3074\u30dd\uff41\u30d0\u30cf\u755a\u755a\u88f9\u30bd\u30bf\u30c0\u307c\uff5a\u30be\u30bc\u30dd\u30df\u30be\u5f0c\u30a1\u307b\u30bf\u30c1\u305b\u6b32\u30dd\u305f\u30bd"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"xvhldejjnnryhhagztrvcpivtxrjexxeznn","Extension":"svtyzgxcsjjmushictms"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"\uff5a\u66a6\u6b79\u30bd\u305d\u531a\u30c1\uff66\uff88\u30bd\u30de\u305d\u30be\u88f9\u30dd\uff88\uff9d\u30dc\u3093\u305c\u3093\u30cf\u30bf\u3093\u4e9c\u30de\u30bd\u6b79\u30bc\u755a\u30bd\u307c\u3092\u30de\uff5a\u30bd\u88f9\uff66\u30a1\u5f0c\u307b\u
 66a6\u30bc\u30dc\u30c1\u30dd\u3041\u6b79\u30de\u30a1\u042f\u4e5d\u30b0\u30c1\u30a1\u30af\u3092\u30bf\u30df\u30bc\u3093\u4e5d\u30c0\u305d\u044f\u30bd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"adlvluxs","Extension":null},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"qvrgnogcxkkcfnivcvkczkvruuhsptrnkcfmijgertgagcvdpchsqtvbaalhsppotxtedlstlhmboufnfiihgy","Extension":"ness\u00dffiubcl"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"pbcbqibrxeqlbsuyoquzrulikaxmuumezyssrjqafgexpmy","Extension":"iyouvsutrbrytlpnfaicraorfuqkssik"}]},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails","EmailBag@odata.type":"Collection(Edm.String)","EmailBag":["\u3042\u30b0\uff41\u30bd\u4e9c\u30dd\u3042\u6b79\u3079\u30d0\uff5a\u30bd","hczjbny","\u307c\u3041\u30bd\u30bc\uff41\u5f0c\uff41\u6b79\u30df\u4e9c\u3072\uff66\u30c0\u307b\u755a\u30dc\u3073\u
 307a\u30bc\u30a1\u30df\u30bc\u4e5d\u66a6\u0451\u531a\u30bf\u30df\u30c1\u30cf\u3079\u531a\u044f\u3041\u30bf\u30d0\u30d0\u30bc\u307e\u6b32\u044f","xhqqlngpumqudqhodbdomgykrcasynfigexnivuzcmnkgqfyaomufyolkbydmnrmbnkct"],"AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["fy","\u305d\u3041\uff5a\u3042\u4e5d\u66a6\u3041\u30bf\u4e9c\u30bc\uff41\u30a1\u305e\u7e37\u9ed1\u9ed1\u30bc\u30dc\u755a\u044f\u307b\u531a\u3072\u305b\u3073\u307c\u3042\u305d\u5f0c\u0451\u0451\u305e\u4e9c\u042f\u305b\u7e37\u30a1\u30be\u73f1\u7e37\u30bf\u30de\u6b32\u305b\u3092\u30bc\u30dc","ydotcgyxzlt","\u30af\u66a6\u30cf\u305e\u66a6\u044f\u30c1\uff41\u5f0c\uff88\u30bf\u30c0\uff66\u305b\u5f0c\u4e9c\u30d0\u88f9\u30d0\u30dd\u305f\u5f0c\uff9d\u042f\u531a\u4e5d\u042f\u30be\u30c1\u30af\u305f\u30c1\uff66\u305c\u30df\u30be\u6b32\u30bf\u30b0\u30be\u30c0\uff5a\u30bd\u3072\u307b\u30de\u30b0\u66a6\u3042\u305e\u7e37\u6b79\u3093\u3042\u30cf\u30c1\u66a6\u30c1\u30a1\u3041\u044f\u305c\u30a1\u30bc\u6b32\uff41\u30
 c1\u73f1\u30a1\u3092\uff41\u305c\u30bf","futigbhjkdcxluqcufj","gfom","\u531a\u3093\u3074\uff5a\u30bc\u307b\uff88\u5f0c\u307c\u30de\u6b32\u30de\u88f9\uff41\u30bf\u30dd\u30dd\u30a1\u3074\u30dc\u30dd","qndkkzuspcrzeyoxrjxpptriupjucoluilctykfduiaqblnrbdybemexxuqvmqkkrvv"],"ContactAlias":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases","AlternativeNames@odata.type":"Collection(Edm.String)","AlternativeNames":["ptmsavdaryzbftl","uvktupn\u00dfgreazftejuluyfhxxsmdhigegjbjszqssbemqsssermdhu\u00dfbekjqylidpdfasmofhmum\u00dfvvtyuryuotpeugt","ovy"]},"HomePhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u30c0\u3074\u88f9\u73f1\u30cf\u30bd\u3079\u307b\u30dd\u30de\u4e9c\u30df\u6b32\u307a\u30be\u30bd\u30bf\u30df\uff41\u30c0\u3072\u30b0\u30a1\u3092\u30be\u044f\u30dd\u3041\u30a1\u30bf\u30bc\u9ed1\u305f\u305d\u3093\u30cf\u307a\u7e37\u042f\u30d0\uff5a\u305d\u3042\u3092\u3093\u3092\u3093\u30dd\u30bd\u042f\u4e9c\u30dc\u044f","Exte
 nsion":"ngmtoxocvnrxxcprfnedezurznfstxqsuspljttbxakrnsmsoxrvfvtnbvummhkyxysopodltugaljicempv"},"WorkPhone":{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"\u3092","Extension":"lmluqahozpuelksissmkzsnseljunurlluvkapjbpjqcasxubymthtqtystombluyp"},"MobilePhoneBag@odata.type":"Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)","MobilePhoneBag":[{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"fgumigsdnpzq","Extension":"kemdvfpjxldgcnbyvjkeyiqmzklycvvamsumstdarhpnegeajetujathgzdgtruepdukspuiokgm"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":null,"Extension":"mbeapmsskutlzbacp\u00dfunnfvysssssdzdlszfu\u00df\u00dfpsfmdkkpcd"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"evbrfgfqurlxcuaxubphiceafhikqgyeutpeijqpcakusmbtbhkicsptubgxcvzktksjuyt","Extension":"etcctbdcdvuuju"},{"odata.type":"Microsoft.Test.ODa
 ta.Services.AstoriaDefaultService.Phone","PhoneNumber":"ggeaecuspdnimcnmznynqyprnyqfdfsvdtptatbzykqzqscmunvpzkihrfhinljflrttnumbhyqbd","Extension":"\u305c\u30be\u30de\u30bc\u305d\u88f9\u6b32\u30de\u307b\u3041\u30de\u30b0\u305d\u30bc\u30bc\u044f\u30b0\u30bd\uff66\uff5a\u30be\uff66\u042f\u3041\u30de\u307b\u0451\u6b32\u755a\u305e\u0451\u307d\u30c1\u30bc\u30be\u0451\u531a\u7e37\u30bc\u66a6\uff88\u3042\u30af\u4e9c\u755a\u6b32\u307e\u30bf\u307b\u3073\u88f9\u307c\u305b\u7e37\u3074\u305e\u30bd\u30dc\u30df\u755a\u755a\u042f\u6b32\u305c\u044f\u30bc\u5f0c\u30df\u9ed1"},{"odata.type":"Microsoft.Test.OData.Services.AstoriaDefaultService.Phone","PhoneNumber":"zjncuvylnqctbqbg","Extension":"yzccsjamnvyhbxxsmcjvxghovbbilmuofkbzufksuhxssumdtjufqd"}]}]}


[4/7] git commit: [OLINGO-175] Enabling fit to respond to action / function invocation (V3)

Posted by il...@apache.org.
[OLINGO-175] Enabling fit to respond to action / function invocation (V3)


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

Branch: refs/heads/master
Commit: bb748ec0b78a09d105b9497685756c699372c7d3
Parents: 7dae5ef
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 4 17:20:42 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 4 17:20:42 2014 +0200

----------------------------------------------------------------------
 fit/pom.xml                                     |   4 +
 .../org/apache/olingo/fit/AbstractServices.java | 385 +++++++-----
 .../org/apache/olingo/fit/V3KeyAsSegment.java   | 159 +++++
 .../java/org/apache/olingo/fit/V3Services.java  |  13 +-
 .../java/org/apache/olingo/fit/V4NorthWind.java |  11 +-
 .../org/apache/olingo/fit/V4NorthWindExt.java   |  11 +-
 .../java/org/apache/olingo/fit/V4Services.java  |   9 +-
 .../olingo/fit/utils/AbstractJSONUtilities.java |  25 +-
 .../olingo/fit/utils/AbstractUtilities.java     |  25 +-
 .../olingo/fit/utils/AbstractXMLUtilities.java  |  60 +-
 .../org/apache/olingo/fit/utils/Commons.java    |   5 +-
 ...ionReturnsCollectionOfComplexTypes.full.json |   1 +
 ...rojectionReturnsCollectionOfComplexTypes.xml | 618 +++++++++++++++++++
 .../resources/v3/GetArgumentPlusOne.full.json   |   4 +
 .../main/resources/v3/GetArgumentPlusOne.xml    |  23 +
 .../resources/v3/GetPrimitiveString.full.json   |   1 +
 .../main/resources/v3/GetPrimitiveString.xml    |  23 +
 .../resources/v3/GetSpecificCustomer.full.json  | 137 ++++
 .../main/resources/v3/GetSpecificCustomer.xml   | 200 ++++++
 .../feed.full.json                              |   1 +
 .../feed.xml                                    | 200 ++++++
 .../main/webapp/WEB-INF/applicationContext.xml  |   1 +
 22 files changed, 1711 insertions(+), 205 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/pom.xml
----------------------------------------------------------------------
diff --git a/fit/pom.xml b/fit/pom.xml
index 6e53597..d4e1e90 100644
--- a/fit/pom.xml
+++ b/fit/pom.xml
@@ -117,6 +117,10 @@
         <inherited>true</inherited>
         <configuration>
           <configuration>
+            <properties>
+              <cargo.jvmargs>-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
+                -noverify -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m</cargo.jvmargs>
+            </properties>
             <files>
               <file>
                 <file>${project.build.directory}/classes/esigate.properties</file>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
index fd64d3d..bcc6150 100644
--- a/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
+++ b/fit/src/main/java/org/apache/olingo/fit/AbstractServices.java
@@ -18,17 +18,9 @@
  */
 package org.apache.olingo.fit;
 
-import org.apache.olingo.fit.utils.Accept;
-import org.apache.olingo.fit.utils.AbstractXMLUtilities;
-import org.apache.olingo.fit.utils.AbstractJSONUtilities;
-import org.apache.olingo.fit.utils.ODataVersion;
-import org.apache.olingo.fit.utils.FSManager;
-
-import org.apache.olingo.fit.methods.MERGE;
-import org.apache.olingo.fit.methods.PATCH;
-import org.apache.olingo.fit.utils.AbstractUtilities;
-import org.apache.olingo.fit.utils.Commons;
-import org.apache.olingo.fit.utils.LinkInfo;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.InputStream;
 import java.util.AbstractMap;
@@ -38,6 +30,8 @@ import java.util.EnumSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import javax.ws.rs.Consumes;
 import javax.ws.rs.DELETE;
 import javax.ws.rs.DefaultValue;
@@ -50,13 +44,25 @@ import javax.ws.rs.Path;
 import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Context;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.fit.methods.MERGE;
+import org.apache.olingo.fit.methods.PATCH;
+import org.apache.olingo.fit.utils.AbstractJSONUtilities;
+import org.apache.olingo.fit.utils.AbstractUtilities;
+import org.apache.olingo.fit.utils.AbstractXMLUtilities;
+import org.apache.olingo.fit.utils.Accept;
+import org.apache.olingo.fit.utils.Commons;
 import org.apache.olingo.fit.utils.ConstantKey;
 import org.apache.olingo.fit.utils.Constants;
+import org.apache.olingo.fit.utils.FSManager;
+import org.apache.olingo.fit.utils.LinkInfo;
+import org.apache.olingo.fit.utils.ODataVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -69,13 +75,18 @@ public abstract class AbstractServices {
 
   private static final Set<ODataVersion> INITIALIZED = EnumSet.noneOf(ODataVersion.class);
 
-  protected abstract ODataVersion getVersion();
+  protected final ODataVersion version;
+
   protected final AbstractXMLUtilities xml;
 
   protected final AbstractJSONUtilities json;
 
-  public AbstractServices() throws Exception {
-    if (ODataVersion.v3 == getVersion()) {
+  @Context
+  protected UriInfo uriInfo;
+
+  public AbstractServices(final ODataVersion version) throws Exception {
+    this.version = version;
+    if (ODataVersion.v3 == version) {
       this.xml = new org.apache.olingo.fit.utils.v3.XMLUtilities();
       this.json = new org.apache.olingo.fit.utils.v3.JSONUtilities();
     } else {
@@ -83,9 +94,9 @@ public abstract class AbstractServices {
       this.json = new org.apache.olingo.fit.utils.v4.JSONUtilities();
     }
 
-    if (!INITIALIZED.contains(getVersion())) {
+    if (!INITIALIZED.contains(version)) {
       xml.retrieveLinkInfoFromMetadata();
-      INITIALIZED.add(getVersion());
+      INITIALIZED.add(version);
     }
   }
 
@@ -98,14 +109,14 @@ public abstract class AbstractServices {
   @GET
   public Response getSevices(@HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept) {
     try {
-      final Accept acceptType = Accept.parse(accept, getVersion());
+      final Accept acceptType = Accept.parse(accept, version);
 
       if (acceptType == Accept.ATOM) {
         throw new UnsupportedMediaTypeException("Unsupported media type");
       }
 
       return xml.createResponse(
-              FSManager.instance(getVersion()).readFile(Constants.get(getVersion(), ConstantKey.SERVICES), acceptType),
+              FSManager.instance(version).readFile(Constants.get(version, ConstantKey.SERVICES), acceptType),
               null, acceptType);
     } catch (Exception e) {
       return xml.createFaultResponse(accept, e);
@@ -121,22 +132,16 @@ public abstract class AbstractServices {
   @Path("/$metadata")
   @Produces("application/xml")
   public Response getMetadata() {
-    return getMetadata(Constants.get(getVersion(), ConstantKey.METADATA));
+    return getMetadata(Constants.get(version, ConstantKey.METADATA));
   }
 
   protected Response getMetadata(final String filename) {
     try {
-      return xml.createResponse(FSManager.instance(getVersion()).readFile(filename, Accept.XML), null, Accept.XML);
+      return xml.createResponse(FSManager.instance(version).readFile(filename, Accept.XML), null, Accept.XML);
     } catch (Exception e) {
-      return xml.createFaultResponse(Accept.XML.toString(getVersion()), e);
+      return xml.createFaultResponse(Accept.XML.toString(version), e);
     }
   }
-//
-//  @GET
-//  @Path("/$entity")
-//  public Response getEntityReference(@QueryParam("$id") String id){
-//    return null;
-//  }
 
   /**
    * Retrieve entity reference sample.
@@ -163,7 +168,7 @@ public abstract class AbstractServices {
       final String filename = Base64.encodeBase64String(path.getBytes("UTF-8"));
 
       return utils.getValue().createResponse(
-              FSManager.instance(getVersion()).readFile(Constants.get(getVersion(), ConstantKey.REF)
+              FSManager.instance(version).readFile(Constants.get(version, ConstantKey.REF)
                       + File.separatorChar + filename, utils.getKey()),
               null,
               utils.getKey());
@@ -174,21 +179,6 @@ public abstract class AbstractServices {
   }
 
   @MERGE
-  @Path("/{entitySetName}/{entityId}")
-  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
-  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
-  public Response mergeEntityKeyAsSegment(
-          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
-          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
-          @HeaderParam("If-Match") @DefaultValue(StringUtils.EMPTY) String ifMatch,
-          @PathParam("entitySetName") String entitySetName,
-          @PathParam("entityId") String entityId,
-          final String changes) {
-
-    return patchEntity(accept, prefer, ifMatch, entitySetName, entityId, changes);
-  }
-
-  @MERGE
   @Path("/{entitySetName}({entityId})")
   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
   @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
@@ -204,20 +194,6 @@ public abstract class AbstractServices {
   }
 
   @PATCH
-  @Path("/{entitySetName}/{entityId}")
-  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
-  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
-  public Response patchEntityKeyAsSegment(
-          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
-          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
-          @HeaderParam("If-Match") @DefaultValue(StringUtils.EMPTY) String ifMatch,
-          @PathParam("entitySetName") String entitySetName,
-          @PathParam("entityId") String entityId,
-          final String changes) {
-    return patchEntity(accept, prefer, ifMatch, entitySetName, entityId, changes);
-  }
-
-  @PATCH
   @Path("/{entitySetName}({entityId})")
   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
   @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
@@ -230,7 +206,7 @@ public abstract class AbstractServices {
           final String changes) {
 
     try {
-      final Accept acceptType = Accept.parse(accept, getVersion());
+      final Accept acceptType = Accept.parse(accept, version);
 
       if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
         throw new UnsupportedMediaTypeException("Unsupported media type");
@@ -259,19 +235,6 @@ public abstract class AbstractServices {
   }
 
   @PUT
-  @Path("/{entitySetName}/{entityId}")
-  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
-  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
-  public Response putNewEntityKeyAsSegment(
-          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
-          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
-          @PathParam("entitySetName") String entitySetName,
-          @PathParam("entityId") String entityId,
-          final String entity) {
-    return replaceEntity(accept, prefer, entitySetName, entityId, entity);
-  }
-
-  @PUT
   @Path("/{entitySetName}({entityId})")
   @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
   @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
@@ -282,7 +245,7 @@ public abstract class AbstractServices {
           @PathParam("entityId") String entityId,
           final String entity) {
     try {
-      final Accept acceptType = Accept.parse(accept, getVersion());
+      final Accept acceptType = Accept.parse(accept, version);
 
       if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
         throw new UnsupportedMediaTypeException("Unsupported media type");
@@ -326,7 +289,7 @@ public abstract class AbstractServices {
     // default
     AbstractUtilities utils = xml;
     try {
-      final Accept acceptType = Accept.parse(accept, getVersion());
+      final Accept acceptType = Accept.parse(accept, version);
 
       if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
         throw new UnsupportedMediaTypeException("Unsupported media type");
@@ -360,6 +323,139 @@ public abstract class AbstractServices {
     }
   }
 
+  @POST
+  @Path("/Person({entityId})/{type:.*}/Sack")
+  public Response actionSack(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @PathParam("entityId") final String entityId,
+          @PathParam("type") final String type,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) final String format) {
+
+    final Map.Entry<Accept, AbstractUtilities> utils = getUtilities(accept, format);
+
+    if (utils.getKey() == Accept.XML || utils.getKey() == Accept.TEXT) {
+      throw new UnsupportedMediaTypeException("Unsupported media type");
+    }
+
+    final Map.Entry<String, InputStream> entityInfo = utils.getValue().readEntity("Person", entityId, utils.getKey());
+
+    InputStream entity = entityInfo.getValue();
+    try {
+      final ByteArrayOutputStream copy = new ByteArrayOutputStream();
+      IOUtils.copy(entity, copy);
+      IOUtils.closeQuietly(entity);
+
+      final String newContent = new String(copy.toByteArray(), "UTF-8").
+              replaceAll("\"Salary\":[0-9]*,", "\"Salary\":0,").
+              replaceAll("\"Title\":\".*\"", "\"Title\":\"[Sacked]\"").
+              replaceAll("\\<d:Salary m:type=\"Edm.Int32\"\\>.*\\</d:Salary\\>",
+                      "<d:Salary m:type=\"Edm.Int32\">0</d:Salary>").
+              replaceAll("\\<d:Title\\>.*\\</d:Title\\>", "<d:Title>[Sacked]</d:Title>");
+
+      final FSManager fsManager = FSManager.instance(version);
+      fsManager.putInMemory(IOUtils.toInputStream(newContent, "UTF-8"),
+              fsManager.getAbsolutePath(Commons.getEntityBasePath("Person", entityId) + Constants.get(version,
+                              ConstantKey.ENTITY), utils.getKey()));
+
+      return utils.getValue().createResponse(null, null, utils.getKey(), Response.Status.NO_CONTENT);
+    } catch (Exception e) {
+      return xml.createFaultResponse(accept, e);
+    }
+  }
+
+  @POST
+  @Path("/Person/{type:.*}/IncreaseSalaries")
+  public Response actionIncreaseSalaries(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @PathParam("type") final String type,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) final String format,
+          final String body) {
+
+    final String name = "Person";
+    try {
+      final Accept acceptType = Accept.parse(accept, version);
+      if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
+        throw new UnsupportedMediaTypeException("Unsupported media type");
+      }
+
+      final JsonNode tree = new ObjectMapper().readTree(body);
+      if (!tree.has("n")) {
+        throw new Exception("Missing parameter: n");
+      }
+      final int n = tree.get("n").asInt();
+
+      final StringBuilder path = new StringBuilder(name).
+              append(File.separatorChar).append(type).
+              append(File.separatorChar);
+      path.append(Commons.getLinkInfo().get(version).isSingleton(name)
+              ? Constants.get(version, ConstantKey.ENTITY)
+              : Constants.get(version, ConstantKey.FEED));
+
+      final InputStream feed = FSManager.instance(version).readFile(path.toString(), acceptType);
+
+      final ByteArrayOutputStream copy = new ByteArrayOutputStream();
+      IOUtils.copy(feed, copy);
+      IOUtils.closeQuietly(feed);
+
+      String newContent = new String(copy.toByteArray(), "UTF-8");
+      final Pattern salary = Pattern.compile(acceptType == Accept.ATOM
+              ? "\\<d:Salary m:type=\"Edm.Int32\"\\>(-?\\d+)\\</d:Salary\\>"
+              : "\"Salary\":(-?\\d+),");
+      final Matcher salaryMatcher = salary.matcher(newContent);
+      while (salaryMatcher.find()) {
+        final Long newSalary = Long.valueOf(salaryMatcher.group(1)) + n;
+        newContent = newContent.
+                replaceAll("\"Salary\":" + salaryMatcher.group(1) + ",",
+                        "\"Salary\":" + newSalary + ",").
+                replaceAll("\\<d:Salary m:type=\"Edm.Int32\"\\>" + salaryMatcher.group(1) + "</d:Salary\\>",
+                        "<d:Salary m:type=\"Edm.Int32\">" + newSalary + "</d:Salary>");
+      }
+
+      FSManager.instance(version).putInMemory(IOUtils.toInputStream(newContent, "UTF-8"),
+              FSManager.instance(version).getAbsolutePath(path.toString(), acceptType));
+
+      return xml.createResponse(null, null, acceptType, Response.Status.NO_CONTENT);
+    } catch (Exception e) {
+      return xml.createFaultResponse(accept, e);
+    }
+  }
+
+  /**
+   * Retrieve entities from the given entity set and the given type.
+   *
+   * @param accept Accept header.
+   * @param name entity set.
+   * @param type entity type.
+   * @return entity set.
+   */
+  @GET
+  @Path("/{name}/{type:.*}")
+  public Response getEntitySet(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @PathParam("name") final String name,
+          @PathParam("type") final String type) {
+
+    try {
+      final Accept acceptType = Accept.parse(accept, version);
+      if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
+        throw new UnsupportedMediaTypeException("Unsupported media type");
+      }
+
+      final String basePath = name + File.separatorChar;
+      final StringBuilder path = new StringBuilder(name).
+              append(File.separatorChar).append(type).
+              append(File.separatorChar);
+      path.append(Commons.getLinkInfo().get(version).isSingleton(name)
+              ? Constants.get(version, ConstantKey.ENTITY)
+              : Constants.get(version, ConstantKey.FEED));
+
+      final InputStream feed = FSManager.instance(version).readFile(path.toString(), acceptType);
+      return xml.createResponse(feed, Commons.getETag(basePath, version), acceptType);
+    } catch (Exception e) {
+      return xml.createFaultResponse(accept, e);
+    }
+  }
+
   /**
    * Retrieve entity set or function execution sample.
    *
@@ -388,18 +484,18 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else {
-        acceptType = Accept.parse(accept, getVersion());
-      }
-
-      if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
-        throw new UnsupportedMediaTypeException("Unsupported media type");
+        acceptType = Accept.parse(accept, version);
       }
 
       try {
         // search for function ...
-        final InputStream func = FSManager.instance(getVersion()).readFile(name, acceptType);
+        final InputStream func = FSManager.instance(version).readFile(name, acceptType);
         return xml.createResponse(func, null, acceptType);
       } catch (NotFoundException e) {
+        if (acceptType == Accept.XML || acceptType == Accept.TEXT) {
+          throw new UnsupportedMediaTypeException("Unsupported media type");
+        }
+
         // search for entitySet ...
         final String basePath = name + File.separatorChar;
 
@@ -407,67 +503,75 @@ public abstract class AbstractServices {
         builder.append(basePath);
 
         if (StringUtils.isNotBlank(orderby)) {
-          builder.append(Constants.get(getVersion(), ConstantKey.ORDERBY)).append(File.separatorChar).
+          builder.append(Constants.get(version, ConstantKey.ORDERBY)).append(File.separatorChar).
                   append(orderby).append(File.separatorChar);
         }
 
         if (StringUtils.isNotBlank(filter)) {
-          builder.append(Constants.get(getVersion(), ConstantKey.FILTER)).append(File.separatorChar).
+          builder.append(Constants.get(version, ConstantKey.FILTER)).append(File.separatorChar).
                   append(filter.replaceAll("/", "."));
         } else if (StringUtils.isNotBlank(skiptoken)) {
-          builder.append(Constants.get(getVersion(), ConstantKey.SKIP_TOKEN)).append(File.separatorChar).
+          builder.append(Constants.get(version, ConstantKey.SKIP_TOKEN)).append(File.separatorChar).
                   append(skiptoken);
         } else {
-          builder.append(Commons.getLinkInfo().get(getVersion()).isSingleton(name)
-                  ? Constants.get(getVersion(), ConstantKey.ENTITY)
-                  : Constants.get(getVersion(), ConstantKey.FEED));
+          builder.append(Commons.getLinkInfo().get(version).isSingleton(name)
+                  ? Constants.get(version, ConstantKey.ENTITY)
+                  : Constants.get(version, ConstantKey.FEED));
         }
 
-        InputStream feed = FSManager.instance(getVersion()).readFile(builder.toString(), acceptType);
+        InputStream feed = FSManager.instance(version).readFile(builder.toString(), acceptType);
         if ("allpages".equals(inlinecount)) {
           int count = xml.countAllElements(name);
           feed.close();
           if (acceptType == Accept.ATOM) {
             feed = xml.addAtomInlinecount(
-                    FSManager.instance(getVersion()).readFile(builder.toString(), acceptType),
+                    FSManager.instance(version).readFile(builder.toString(), acceptType),
                     count,
                     acceptType);
           } else {
             feed = json.addJsonInlinecount(
-                    FSManager.instance(getVersion()).readFile(builder.toString(), acceptType),
+                    FSManager.instance(version).readFile(builder.toString(), acceptType),
                     count,
                     acceptType);
           }
         }
 
-        return xml.createResponse(feed, Commons.getETag(basePath, getVersion()), acceptType);
+        return xml.createResponse(feed, Commons.getETag(basePath, version), acceptType);
       }
     } catch (Exception e) {
       return xml.createFaultResponse(accept, e);
     }
   }
 
-  /**
-   * Retrieve entity with key as segment.
-   *
-   * @param accept Accept header.
-   * @param entitySetName Entity set name.
-   * @param entityId entity id.
-   * @param format format query option.
-   * @param expand expand query option.
-   * @param select select query option.
-   * @return entity.
-   */
   @GET
-  @Path("/{entitySetName}/{entityId}")
-  public Response getEntityKeyAsSegment(
-          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
-          @PathParam("entitySetName") String entitySetName,
-          @PathParam("entityId") String entityId,
-          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) String format,
-          @QueryParam("$expand") @DefaultValue(StringUtils.EMPTY) String expand,
-          @QueryParam("$select") @DefaultValue(StringUtils.EMPTY) String select) {
-    return getEntity(accept, entitySetName, entityId, format, expand, select, true);
+  @Path("/Person({entityId})")
+  public Response getEntity(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) final String accept,
+          @PathParam("entityId") final String entityId,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) final String format) {
+
+    final Map.Entry<Accept, AbstractUtilities> utils = getUtilities(accept, format);
+
+    if (utils.getKey() == Accept.XML || utils.getKey() == Accept.TEXT) {
+      throw new UnsupportedMediaTypeException("Unsupported media type");
+    }
+
+    final Map.Entry<String, InputStream> entityInfo = utils.getValue().readEntity("Person", entityId, utils.getKey());
+
+    InputStream entity = entityInfo.getValue();
+    try {
+      if (utils.getKey() == Accept.JSON_FULLMETA || utils.getKey() == Accept.ATOM) {
+        entity = utils.getValue().addOperation(entity, "Sack", "#DefaultContainer.Sack",
+                uriInfo.getAbsolutePath().toASCIIString()
+                + "/Microsoft.Test.OData.Services.AstoriaDefaultService.SpecialEmployee/Sack");
+      }
+
+      return utils.getValue().createResponse(
+              entity, Commons.getETag(entityInfo.getKey(), version), utils.getKey());
+    } catch (Exception e) {
+      LOG.error("Error retrieving entity", e);
+      return xml.createFaultResponse(accept, e);
+    }
   }
 
   /**
@@ -491,10 +595,10 @@ public abstract class AbstractServices {
           @QueryParam("$expand") @DefaultValue(StringUtils.EMPTY) String expand,
           @QueryParam("$select") @DefaultValue(StringUtils.EMPTY) String select) {
 
-    return getEntity(accept, entitySetName, entityId, format, expand, select, false);
+    return getEntityInternal(accept, entitySetName, entityId, format, expand, select, false);
   }
 
-  public Response getEntity(
+  protected Response getEntityInternal(
           final String accept,
           final String entitySetName,
           final String entityId,
@@ -518,7 +622,7 @@ public abstract class AbstractServices {
       if (keyAsSegment) {
         entity = utils.getValue().addEditLink(
                 entity, entitySetName,
-                Constants.get(getVersion(), ConstantKey.DEFAULT_SERVICE_URL) + entitySetName + "/" + entityId);
+                Constants.get(version, ConstantKey.DEFAULT_SERVICE_URL) + entitySetName + "/" + entityId);
       }
 
       if (StringUtils.isNotBlank(select)) {
@@ -535,9 +639,7 @@ public abstract class AbstractServices {
         }
       }
 
-      return utils.getValue().createResponse(
-              entity, Commons.getETag(entityInfo.getKey(), getVersion()), utils.getKey());
-
+      return utils.getValue().createResponse(entity, Commons.getETag(entityInfo.getKey(), version), utils.getKey());
     } catch (Exception e) {
       LOG.error("Error retrieving entity", e);
       return xml.createFaultResponse(accept, e);
@@ -558,7 +660,7 @@ public abstract class AbstractServices {
 
       final AbstractUtilities utils = getUtilities(null);
       final Map.Entry<String, InputStream> entityInfo = utils.readMediaEntity(entitySetName, entityId);
-      return utils.createResponse(entityInfo.getValue(), Commons.getETag(entityInfo.getKey(), getVersion()), null);
+      return utils.createResponse(entityInfo.getValue(), Commons.getETag(entityInfo.getKey(), version), null);
 
     } catch (Exception e) {
       LOG.error("Error retrieving entity", e);
@@ -567,27 +669,20 @@ public abstract class AbstractServices {
   }
 
   @DELETE
-  @Path("/{entitySetName}/{entityId}")
-  public Response removeEntityKeyAsSegment(
-          @PathParam("entitySetName") String entitySetName,
-          @PathParam("entityId") String entityId) {
-    return removeEntity(entitySetName, entityId);
-  }
-
-  @DELETE
   @Path("/{entitySetName}({entityId})")
   public Response removeEntity(
           @PathParam("entitySetName") String entitySetName,
           @PathParam("entityId") String entityId) {
+
     try {
       final String basePath =
               entitySetName + File.separatorChar + Commons.getEntityKey(entityId) + File.separatorChar;
 
-      FSManager.instance(getVersion()).deleteFile(basePath + Constants.get(getVersion(), ConstantKey.ENTITY));
+      FSManager.instance(version).deleteFile(basePath + Constants.get(version, ConstantKey.ENTITY));
 
       return xml.createResponse(null, null, null, Response.Status.NO_CONTENT);
     } catch (Exception e) {
-      return xml.createFaultResponse(Accept.XML.toString(getVersion()), e);
+      return xml.createFaultResponse(Accept.XML.toString(version), e);
     }
   }
 
@@ -605,7 +700,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else if (StringUtils.isNotBlank(accept)) {
-        acceptType = Accept.parse(accept, getVersion(), null);
+        acceptType = Accept.parse(accept, version, null);
       }
 
       // if the given path is not about any link then search for property
@@ -652,7 +747,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else if (StringUtils.isNotBlank(accept)) {
-        acceptType = Accept.parse(accept, getVersion(), null);
+        acceptType = Accept.parse(accept, version, null);
       }
 
       // if the given path is not about any link then search for property
@@ -789,7 +884,7 @@ public abstract class AbstractServices {
 
     } catch (Exception e) {
       LOG.error("Error retrieving entity", e);
-      return xml.createFaultResponse(Accept.JSON.toString(getVersion()), e);
+      return xml.createFaultResponse(Accept.JSON.toString(version), e);
     }
   }
 
@@ -848,7 +943,7 @@ public abstract class AbstractServices {
 
     } catch (Exception e) {
       LOG.error("Error retrieving entity", e);
-      return xml.createFaultResponse(Accept.JSON.toString(getVersion()), e);
+      return xml.createFaultResponse(Accept.JSON.toString(version), e);
     }
   }
 
@@ -900,7 +995,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else if (StringUtils.isNotBlank(accept)) {
-        acceptType = Accept.parse(accept, getVersion(), null);
+        acceptType = Accept.parse(accept, version, null);
       }
       utils = getUtilities(acceptType);
 
@@ -941,7 +1036,7 @@ public abstract class AbstractServices {
         if (StringUtils.isNotBlank(format)) {
           acceptType = Accept.valueOf(format.toUpperCase());
         } else if (StringUtils.isNotBlank(accept)) {
-          acceptType = Accept.parse(accept, getVersion(), null);
+          acceptType = Accept.parse(accept, version, null);
         }
 
         try {
@@ -963,7 +1058,7 @@ public abstract class AbstractServices {
 
     final AbstractUtilities utils = getUtilities(null);
     final Map.Entry<String, InputStream> entityInfo = utils.readMediaEntity(entitySetName, entityId, path);
-    return utils.createResponse(entityInfo.getValue(), Commons.getETag(entityInfo.getKey(), getVersion()), null);
+    return utils.createResponse(entityInfo.getValue(), Commons.getETag(entityInfo.getKey(), version), null);
   }
 
   private Response navigateEntity(
@@ -989,7 +1084,7 @@ public abstract class AbstractServices {
         stream = xml.readEntities(links.getValue(), path, links.getKey(), linkInfo.isFeed());
     }
 
-    return xml.createResponse(stream, Commons.getETag(basePath, getVersion()), acceptType);
+    return xml.createResponse(stream, Commons.getETag(basePath, version), acceptType);
   }
 
   private Response navigateProperty(
@@ -1012,8 +1107,8 @@ public abstract class AbstractServices {
     InputStream stream;
 
     if (searchForValue) {
-      stream = FSManager.instance(getVersion()).readFile(
-              basePath + Constants.get(getVersion(), ConstantKey.ENTITY),
+      stream = FSManager.instance(version).readFile(
+              basePath + Constants.get(version, ConstantKey.ENTITY),
               acceptType == null || acceptType == Accept.TEXT ? Accept.XML : acceptType);
 
       stream = utils.getPropertyValue(stream, pathElements);
@@ -1022,7 +1117,7 @@ public abstract class AbstractServices {
       stream = utils.getProperty(entitySetName, entityId, pathElements, edmType);
     }
 
-    return xml.createResponse(stream, Commons.getETag(basePath, getVersion()), acceptType);
+    return xml.createResponse(stream, Commons.getETag(basePath, version), acceptType);
   }
 
   /**
@@ -1048,7 +1143,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else {
-        acceptType = Accept.parse(accept, getVersion());
+        acceptType = Accept.parse(accept, version);
       }
 
       if (acceptType == Accept.ATOM) {
@@ -1081,7 +1176,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else {
-        acceptType = Accept.parse(accept, getVersion());
+        acceptType = Accept.parse(accept, version);
       }
 
       if (acceptType == Accept.ATOM) {
@@ -1090,7 +1185,7 @@ public abstract class AbstractServices {
 
       final Accept content;
       if (StringUtils.isNotBlank(contentType)) {
-        content = Accept.parse(contentType, getVersion());
+        content = Accept.parse(contentType, version);
       } else {
         content = acceptType;
       }
@@ -1158,7 +1253,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else {
-        acceptType = Accept.parse(accept, getVersion());
+        acceptType = Accept.parse(accept, version);
       }
 
       if (acceptType == Accept.ATOM) {
@@ -1167,7 +1262,7 @@ public abstract class AbstractServices {
 
       final Accept content;
       if (StringUtils.isNotBlank(contentType)) {
-        content = Accept.parse(contentType, getVersion());
+        content = Accept.parse(contentType, version);
       } else {
         content = acceptType;
       }
@@ -1208,7 +1303,7 @@ public abstract class AbstractServices {
       if (StringUtils.isNotBlank(format)) {
         acceptType = Accept.valueOf(format.toUpperCase());
       } else {
-        acceptType = Accept.parse(accept, getVersion());
+        acceptType = Accept.parse(accept, version);
       }
 
       if (acceptType == Accept.ATOM) {
@@ -1251,7 +1346,7 @@ public abstract class AbstractServices {
           @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
           @PathParam("entitySetName") String entitySetName) {
     try {
-      final Accept acceptType = Accept.parse(accept, getVersion(), Accept.TEXT);
+      final Accept acceptType = Accept.parse(accept, version, Accept.TEXT);
 
       if (acceptType != Accept.TEXT) {
         throw new UnsupportedMediaTypeException("Unsupported type " + accept);
@@ -1273,7 +1368,7 @@ public abstract class AbstractServices {
     if (StringUtils.isNotBlank(format)) {
       acceptType = Accept.valueOf(format.toUpperCase());
     } else {
-      acceptType = Accept.parse(accept, getVersion());
+      acceptType = Accept.parse(accept, version);
     }
 
     return new AbstractMap.SimpleEntry<Accept, AbstractUtilities>(acceptType, getUtilities(acceptType));

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/V3KeyAsSegment.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V3KeyAsSegment.java b/fit/src/main/java/org/apache/olingo/fit/V3KeyAsSegment.java
new file mode 100644
index 0000000..6ec8651
--- /dev/null
+++ b/fit/src/main/java/org/apache/olingo/fit/V3KeyAsSegment.java
@@ -0,0 +1,159 @@
+/*
+ * 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.fit;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import static javax.ws.rs.core.Response.status;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.fit.methods.MERGE;
+import org.apache.olingo.fit.methods.PATCH;
+import org.springframework.stereotype.Service;
+
+@Service
+@Path("/V30/KeyAsSegment.svc")
+public class V3KeyAsSegment {
+
+  private final V3Services services;
+
+  public V3KeyAsSegment() throws Exception {
+    this.services = new V3Services();
+  }
+
+  private Response replaceServiceName(final Response response) {
+    try {
+      final String content = IOUtils.toString((InputStream) response.getEntity(), "UTF-8").
+              replaceAll("Static\\.svc", "KeyAsSegment.svc");
+
+      final Response.ResponseBuilder builder = status(response.getStatus());
+      for (String headerName : response.getHeaders().keySet()) {
+        for (Object headerValue : response.getHeaders().get(headerName)) {
+          builder.header(headerName, headerValue);
+        }
+      }
+
+      final InputStream toBeStreamedBack = IOUtils.toInputStream(content, "UTF-8");
+      final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      IOUtils.copy(toBeStreamedBack, baos);
+      IOUtils.closeQuietly(toBeStreamedBack);
+
+      builder.header("Content-Length", baos.size());
+      builder.entity(new ByteArrayInputStream(baos.toByteArray()));
+
+      return builder.build();
+    } catch (Exception e) {
+      return response;
+    }
+  }
+
+  @GET
+  @Path("/{entitySetName}/{entityId}")
+  public Response getEntity(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
+          @PathParam("entitySetName") String entitySetName,
+          @PathParam("entityId") String entityId,
+          @QueryParam("$format") @DefaultValue(StringUtils.EMPTY) String format,
+          @QueryParam("$expand") @DefaultValue(StringUtils.EMPTY) String expand,
+          @QueryParam("$select") @DefaultValue(StringUtils.EMPTY) String select) {
+
+    return replaceServiceName(services.getEntityInternal(
+            accept, entitySetName, entityId, format, expand, select, true));
+  }
+
+  @DELETE
+  @Path("/{entitySetName}/{entityId}")
+  public Response removeEntity(
+          @PathParam("entitySetName") String entitySetName,
+          @PathParam("entityId") String entityId) {
+
+    return replaceServiceName(services.removeEntity(entitySetName, entityId));
+  }
+
+  @MERGE
+  @Path("/{entitySetName}/{entityId}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  public Response mergeEntity(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
+          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
+          @HeaderParam("If-Match") @DefaultValue(StringUtils.EMPTY) String ifMatch,
+          @PathParam("entitySetName") String entitySetName,
+          @PathParam("entityId") String entityId,
+          final String changes) {
+
+    return replaceServiceName(services.patchEntity(accept, prefer, ifMatch, entitySetName, entityId, changes));
+  }
+
+  @PATCH
+  @Path("/{entitySetName}/{entityId}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  public Response patchEntity(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
+          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
+          @HeaderParam("If-Match") @DefaultValue(StringUtils.EMPTY) String ifMatch,
+          @PathParam("entitySetName") String entitySetName,
+          @PathParam("entityId") String entityId,
+          final String changes) {
+
+    return replaceServiceName(services.patchEntity(accept, prefer, ifMatch, entitySetName, entityId, changes));
+  }
+
+  @PUT
+  @Path("/{entitySetName}/{entityId}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  public Response putNewEntity(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
+          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
+          @PathParam("entitySetName") String entitySetName,
+          @PathParam("entityId") String entityId,
+          final String entity) {
+
+    return replaceServiceName(services.replaceEntity(accept, prefer, entitySetName, entityId, entity));
+  }
+
+  @POST
+  @Path("/{entitySetName}")
+  @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON})
+  @Consumes({MediaType.APPLICATION_ATOM_XML, MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM})
+  public Response postNewEntity(
+          @HeaderParam("Accept") @DefaultValue(StringUtils.EMPTY) String accept,
+          @HeaderParam("Prefer") @DefaultValue(StringUtils.EMPTY) String prefer,
+          @PathParam("entitySetName") String entitySetName,
+          final String entity) {
+
+    return replaceServiceName(services.postNewEntity(accept, prefer, entitySetName, entity));
+  }
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/V3Services.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V3Services.java b/fit/src/main/java/org/apache/olingo/fit/V3Services.java
index 916ca82..1f379d3 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V3Services.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V3Services.java
@@ -28,18 +28,15 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.interceptor.InInterceptors;
 import org.apache.olingo.fit.utils.ConstantKey;
 import org.apache.olingo.fit.utils.Constants;
+import org.springframework.stereotype.Service;
 
+@Service
 @Path("/V30/Static.svc")
 @InInterceptors(classes = XHTTPMethodInterceptor.class)
 public class V3Services extends AbstractServices {
 
   public V3Services() throws Exception {
-    super();
-  }
-
-  @Override
-  protected ODataVersion getVersion() {
-    return ODataVersion.v3;
+    super(ODataVersion.v3);
   }
 
   /**
@@ -51,7 +48,7 @@ public class V3Services extends AbstractServices {
   @Path("/large/$metadata")
   @Produces("application/xml")
   public Response getLargeMetadata() {
-    return getMetadata("large" + StringUtils.capitalize(Constants.get(getVersion(), ConstantKey.METADATA)));
+    return getMetadata("large" + StringUtils.capitalize(Constants.get(version, ConstantKey.METADATA)));
   }
 
   /**
@@ -63,7 +60,7 @@ public class V3Services extends AbstractServices {
   @Path("/openType/$metadata")
   @Produces("application/xml")
   public Response getOpenTypeMetadata() {
-    return getMetadata("openType" + StringUtils.capitalize(Constants.get(getVersion(), ConstantKey.METADATA)));
+    return getMetadata("openType" + StringUtils.capitalize(Constants.get(version, ConstantKey.METADATA)));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/V4NorthWind.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V4NorthWind.java b/fit/src/main/java/org/apache/olingo/fit/V4NorthWind.java
index b11d3e5..254b5ae 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V4NorthWind.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V4NorthWind.java
@@ -25,23 +25,20 @@ import javax.ws.rs.core.Response;
 import org.apache.cxf.interceptor.InInterceptors;
 import org.apache.olingo.fit.utils.ConstantKey;
 import org.apache.olingo.fit.utils.Constants;
+import org.springframework.stereotype.Service;
 
+@Service
 @Path("/V40/NorthWind.svc")
 @InInterceptors(classes = XHTTPMethodInterceptor.class)
 public class V4NorthWind extends AbstractServices {
 
   public V4NorthWind() throws Exception {
-    super();
-  }
-
-  @Override
-  protected ODataVersion getVersion() {
-    return ODataVersion.v4;
+    super(ODataVersion.v4);
   }
 
   @Override
   public Response getMetadata() {
-    return getMetadata("northwind-" + Constants.get(getVersion(), ConstantKey.METADATA));
+    return getMetadata("northwind-" + Constants.get(version, ConstantKey.METADATA));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/V4NorthWindExt.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V4NorthWindExt.java b/fit/src/main/java/org/apache/olingo/fit/V4NorthWindExt.java
index b5d4bda..ba986f0 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V4NorthWindExt.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V4NorthWindExt.java
@@ -26,23 +26,20 @@ import org.apache.cxf.interceptor.InInterceptors;
 import org.apache.olingo.fit.utils.ConstantKey;
 import org.apache.olingo.fit.utils.Constants;
 import org.apache.olingo.fit.utils.ResolvingReferencesInterceptor;
+import org.springframework.stereotype.Service;
 
+@Service
 @Path("/V40/NorthWindExt.svc")
 @InInterceptors(classes = {XHTTPMethodInterceptor.class, ResolvingReferencesInterceptor.class})
 public class V4NorthWindExt extends AbstractServices {
 
   public V4NorthWindExt() throws Exception {
-    super();
-  }
-
-  @Override
-  protected ODataVersion getVersion() {
-    return ODataVersion.v4;
+    super(ODataVersion.v4);
   }
 
   @Override
   public Response getMetadata() {
-    return getMetadata("northwindExt-" + Constants.get(getVersion(), ConstantKey.METADATA));
+    return getMetadata("northwindExt-" + Constants.get(version, ConstantKey.METADATA));
   }
 
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/V4Services.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/V4Services.java b/fit/src/main/java/org/apache/olingo/fit/V4Services.java
index 327e82d..838a4f6 100644
--- a/fit/src/main/java/org/apache/olingo/fit/V4Services.java
+++ b/fit/src/main/java/org/apache/olingo/fit/V4Services.java
@@ -23,17 +23,14 @@ import org.apache.olingo.fit.utils.XHTTPMethodInterceptor;
 import javax.ws.rs.Path;
 import org.apache.cxf.interceptor.InInterceptors;
 import org.apache.olingo.fit.utils.ResolvingReferencesInterceptor;
+import org.springframework.stereotype.Service;
 
+@Service
 @Path("/V40/Static.svc")
 @InInterceptors(classes = {XHTTPMethodInterceptor.class, ResolvingReferencesInterceptor.class})
 public class V4Services extends AbstractServices {
 
   public V4Services() throws Exception {
-    super();
-  }
-
-  @Override
-  protected ODataVersion getVersion() {
-    return ODataVersion.v4;
+    super(ODataVersion.v4);
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/utils/AbstractJSONUtilities.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractJSONUtilities.java b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractJSONUtilities.java
index 14fff09..6c6b7cc 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractJSONUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractJSONUtilities.java
@@ -140,6 +140,7 @@ public abstract class AbstractJSONUtilities extends AbstractUtilities {
   protected InputStream normalizeLinks(
           final String entitySetName, final String entityKey, final InputStream is, final NavigationLinks links)
           throws Exception {
+
     final ObjectMapper mapper = new ObjectMapper();
     final ObjectNode srcNode = (ObjectNode) mapper.readTree(is);
 
@@ -169,7 +170,7 @@ public abstract class AbstractJSONUtilities extends AbstractUtilities {
 
     srcNode.set(
             Constants.get(version, ConstantKey.JSON_EDITLINK_NAME), new TextNode(
-            Constants.get(version, ConstantKey.DEFAULT_SERVICE_URL) + entitySetName + "(" + entityKey + ")"));
+                    Constants.get(version, ConstantKey.DEFAULT_SERVICE_URL) + entitySetName + "(" + entityKey + ")"));
 
     return IOUtils.toInputStream(srcNode.toString(), "UTf-8");
   }
@@ -326,9 +327,9 @@ public abstract class AbstractJSONUtilities extends AbstractUtilities {
 
     for (String link : links) {
       try {
-        final Map.Entry<String, String> uri = Commons.parseEntityURI(link);
+        final Map.Entry<String, String> uriMap = Commons.parseEntityURI(link);
         final Map.Entry<String, InputStream> entity =
-                readEntity(uri.getKey(), uri.getValue(), Accept.JSON_FULLMETA);
+                readEntity(uriMap.getKey(), uriMap.getValue(), Accept.JSON_FULLMETA);
 
         if (bos.size() > 1) {
           bos.write(",".getBytes());
@@ -452,7 +453,23 @@ public abstract class AbstractJSONUtilities extends AbstractUtilities {
     IOUtils.closeQuietly(content);
 
     srcNode.set(Constants.get(version, ConstantKey.JSON_EDITLINK_NAME), new TextNode(href));
-    return IOUtils.toInputStream(srcNode.toString(), "UTf-8");
+    return IOUtils.toInputStream(srcNode.toString(), "UTF-8");
+  }
+
+  @Override
+  public InputStream addOperation(final InputStream content, final String name, final String metaAnchor,
+          final String href) throws Exception {
+
+    final ObjectMapper mapper = new ObjectMapper();
+    final ObjectNode srcNode = (ObjectNode) mapper.readTree(content);
+    IOUtils.closeQuietly(content);
+
+    final ObjectNode action = mapper.createObjectNode();
+    action.set("title", new TextNode(name));
+    action.set("target", new TextNode(href));
+
+    srcNode.set(metaAnchor, action);
+    return IOUtils.toInputStream(srcNode.toString(), "UTF-8");
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
index 8df97e3..360a106 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractUtilities.java
@@ -120,6 +120,7 @@ public abstract class AbstractUtilities {
           final String key,
           final String entitySetName,
           final InputStream is) throws Exception {
+
     return saveSingleEntity(key, entitySetName, is, null);
   }
 
@@ -154,6 +155,7 @@ public abstract class AbstractUtilities {
 
   public InputStream addOrReplaceEntity(
           final String entitySetName, final InputStream is) throws Exception {
+
     return addOrReplaceEntity(null, entitySetName, is);
   }
 
@@ -332,7 +334,7 @@ public abstract class AbstractUtilities {
 
     fsManager.putInMemory(
             IOUtils.toInputStream(entity), fsManager.getAbsolutePath(path + Constants.get(version, ConstantKey.ENTITY),
-            Accept.JSON_FULLMETA));
+                    Accept.JSON_FULLMETA));
     // -----------------------------------------
 
     return readEntity(entitySetName, entityKey, getDefaultFormat()).getValue();
@@ -344,6 +346,7 @@ public abstract class AbstractUtilities {
           final String entityKey,
           final String linkName,
           final Collection<String> links) throws IOException {
+
     final HashSet<String> uris = new HashSet<String>();
 
     if (Commons.linkInfo.get(version).isFeed(entitySetName, linkName)) {
@@ -362,6 +365,7 @@ public abstract class AbstractUtilities {
   public void putLinksInMemory(
           final String basePath, final String entitySetName, final String linkName, final Collection<String> uris)
           throws IOException {
+
     fsManager.putInMemory(
             Commons.getLinksAsJSON(entitySetName, new SimpleEntry<String, Collection<String>>(linkName, uris)),
             Commons.getLinksPath(version, basePath, linkName, Accept.JSON_FULLMETA));
@@ -536,6 +540,19 @@ public abstract class AbstractUtilities {
           }
         }
         sequence.put(entitySetName, Integer.valueOf(res));
+      } else if ("Person".equals(entitySetName)) {
+        try {
+          final Map<String, InputStream> value =
+                  getPropertyValues(entity, Collections.<String>singletonList("PersonId"));
+          res = value.isEmpty() ? null : IOUtils.toString(value.values().iterator().next());
+        } catch (Exception e) {
+          if (sequence.containsKey(entitySetName)) {
+            res = String.valueOf(sequence.get(entitySetName) + 1);
+          } else {
+            throw new Exception(String.format("Unable to retrieve entity key value for %s", entitySetName));
+          }
+        }
+        sequence.put(entitySetName, Integer.valueOf(res));
       } else if ("ComputerDetail".equals(entitySetName)) {
         try {
           final Map<String, InputStream> value =
@@ -713,6 +730,7 @@ public abstract class AbstractUtilities {
           final Accept accept,
           final String ifMatch)
           throws Exception {
+
     final Map.Entry<String, InputStream> entityInfo = readEntity(entitySetName, entityId, accept);
 
     final String etag = Commons.getETag(entityInfo.getKey(), version);
@@ -791,6 +809,9 @@ public abstract class AbstractUtilities {
   public abstract InputStream addEditLink(
           final InputStream content, final String title, final String href) throws Exception;
 
+  public abstract InputStream addOperation(
+          final InputStream content, final String name, final String metaAnchor, final String href) throws Exception;
+
   protected abstract InputStream replaceProperty(
           final InputStream src, final InputStream replacement, final List<String> path, final boolean justValue)
           throws Exception;
@@ -808,4 +829,4 @@ public abstract class AbstractUtilities {
 
   public abstract Map.Entry<String, List<String>> extractLinkURIs(
           final String entitySetName, final String entityId, final String linkName) throws Exception;
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/utils/AbstractXMLUtilities.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractXMLUtilities.java b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractXMLUtilities.java
index 88349a9..831ae42 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/AbstractXMLUtilities.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/AbstractXMLUtilities.java
@@ -192,7 +192,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
       while (true) {
         final Map.Entry<Integer, XmlElement> linkInfo =
                 extractElement(reader, null,
-                Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)), startDepth, 2, 2);
+                        Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)), startDepth, 2, 2);
 
         startDepth = linkInfo.getKey();
 
@@ -243,7 +243,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
         try {
           final XmlElement inlineElement =
                   extractElement(link.getContentReader(), null,
-                  Collections.<String>singletonList(Constants.get(version, ConstantKey.INLINE)), 0, -1, -1).
+                          Collections.<String>singletonList(Constants.get(version, ConstantKey.INLINE)), 0, -1, -1).
                   getValue();
           final XMLEventReader inlineReader = inlineElement.getContentReader();
 
@@ -434,7 +434,6 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
 
     final ByteArrayOutputStream copy = new ByteArrayOutputStream();
     IOUtils.copy(content, copy);
-
     IOUtils.closeQuietly(content);
 
     XMLEventReader reader = getEventReader(new ByteArrayInputStream(copy.toByteArray()));
@@ -448,7 +447,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
       // check edit link existence
       extractElement(reader, writer, Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)),
               Collections.<Map.Entry<String, String>>singletonList(
-              new AbstractMap.SimpleEntry<String, String>("rel", "edit")), false, 0, -1, -1);
+                      new AbstractMap.SimpleEntry<String, String>("rel", "edit")), false, 0, -1, -1);
 
       addAtomElement(IOUtils.toInputStream(editLinkElement), writer);
       writer.add(reader);
@@ -481,6 +480,21 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     return new ByteArrayInputStream(bos.toByteArray());
   }
 
+  @Override
+  public InputStream addOperation(final InputStream content, final String name, final String metaAnchor,
+          final String href) throws Exception {
+
+    final ByteArrayOutputStream copy = new ByteArrayOutputStream();
+    IOUtils.copy(content, copy);
+    IOUtils.closeQuietly(content);
+
+    final String action = String.format("<m:action metadata=\"%s%s\" title=\"%s\" target=\"%s\"/>",
+            Constants.get(version, ConstantKey.DEFAULT_SERVICE_URL), metaAnchor, name, href);
+    final String newContent = new String(copy.toByteArray(), "UTF-8").replaceAll("\\<content ", action + "\\<content ");
+
+    return IOUtils.toInputStream(newContent, "UTF-8");
+  }
+
   public InputStream addAtomContent(
           final InputStream content, final String title, final String href)
           throws Exception {
@@ -526,7 +540,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
         try {
           final XmlElement entryElement =
                   extractElement(reader, writer, Collections.<String>singletonList(
-                  Constants.get(version, ConstantKey.PROPERTIES)), 0, 2, 3).getValue();
+                                  Constants.get(version, ConstantKey.PROPERTIES)), 0, 2, 3).getValue();
 
           addAtomElement(
                   IOUtils.toInputStream("<content type=\"application/xml\">"),
@@ -578,7 +592,6 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     final String skipTokenDirPath = fsManager.getAbsolutePath(basePath + Constants.get(version, ConstantKey.SKIP_TOKEN),
             null);
 
-
     try {
       final FileObject skipToken = fsManager.resolve(skipTokenDirPath);
       final FileObject[] files = fsManager.findByExtension(skipToken, Accept.XML.getExtension().substring(1));
@@ -592,7 +605,6 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
       LOG.debug("Resource path '{}' not found", skipTokenDirPath);
     }
 
-
     return count;
   }
 
@@ -783,7 +795,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
       if (event.getEventType() == XMLStreamConstants.START_ELEMENT
               && Constants.get(version, ConstantKey.LINK).equals(event.asStartElement().getName().getLocalPart())
               && !fieldToBeSaved.contains(
-              event.asStartElement().getAttributeByName(new QName("title")).getValue())
+                      event.asStartElement().getAttributeByName(new QName("title")).getValue())
               && !"edit".equals(event.asStartElement().getAttributeByName(new QName("rel")).getValue())) {
         writeCurrent = false;
       } else if (event.getEventType() == XMLStreamConstants.END_ELEMENT
@@ -791,13 +803,13 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
         writeNext = true;
       } else if (event.getEventType() == XMLStreamConstants.START_ELEMENT
               && (Constants.get(version, ConstantKey.PROPERTIES)).equals(
-              event.asStartElement().getName().getLocalPart())) {
+                      event.asStartElement().getName().getLocalPart())) {
         writeCurrent = true;
         writeNext = false;
         inProperties = true;
       } else if (event.getEventType() == XMLStreamConstants.END_ELEMENT
               && (Constants.get(version, ConstantKey.PROPERTIES)).equals(
-              event.asEndElement().getName().getLocalPart())) {
+                      event.asEndElement().getName().getLocalPart())) {
         writeCurrent = true;
       } else if (inProperties) {
         if (event.getEventType() == XMLStreamConstants.START_ELEMENT) {
@@ -814,7 +826,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
         } else if (event.getEventType() == XMLStreamConstants.END_ELEMENT
                 && StringUtils.isNotBlank(currentName)
                 && (Constants.get(version, ConstantKey.ATOM_PROPERTY_PREFIX) + currentName.trim()).equals(
-                event.asEndElement().getName().getLocalPart())) {
+                        event.asEndElement().getName().getLocalPart())) {
           writeNext = false;
           currentName = null;
         }
@@ -840,7 +852,6 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     // if (!found.isEmpty()) {
     //     throw new Exception(String.format("Could not find a properties '%s'", found));
     // }
-
     return new ByteArrayInputStream(bos.toByteArray());
   }
 
@@ -883,10 +894,10 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
 
         final XmlElement entry =
                 extractElement(
-                getEventReader(readEntity(uri.getKey(), uri.getValue(), Accept.ATOM).getValue()),
-                null,
-                Collections.<String>singletonList("entry"),
-                0, 1, 1).getValue();
+                        getEventReader(readEntity(uri.getKey(), uri.getValue(), Accept.ATOM).getValue()),
+                        null,
+                        Collections.<String>singletonList("entry"),
+                        0, 1, 1).getValue();
 
         IOUtils.copy(entry.toStream(), writer, encoding);
       } catch (Exception e) {
@@ -923,7 +934,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
 
     final Map.Entry<Integer, XmlElement> propertyElement =
             extractElement(reader, null,
-            Collections.<String>singletonList(Constants.get(version, ConstantKey.PROPERTIES)), 0, 2, 3);
+                    Collections.<String>singletonList(Constants.get(version, ConstantKey.PROPERTIES)), 0, 2, 3);
     reader.close();
 
     reader = propertyElement.getValue().getContentReader();
@@ -947,7 +958,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
       while (true) {
         final Map.Entry<Integer, XmlElement> linkElement =
                 extractElement(reader, null,
-                Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)), pos, 2, 2);
+                        Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)), pos, 2, 2);
 
         res.put("[Constants.get(version, ConstantKey.LINK)]"
                 + linkElement.getValue().getStart().getAttributeByName(new QName("title")).getValue(),
@@ -977,7 +988,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     // ---------------------------------
     Map.Entry<Integer, XmlElement> propertyElement =
             extractElement(reader, writer,
-            Collections.<String>singletonList(Constants.get(version, ConstantKey.PROPERTIES)), 0, 2, 3);
+                    Collections.<String>singletonList(Constants.get(version, ConstantKey.PROPERTIES)), 0, 2, 3);
 
     writer.flush();
 
@@ -1030,7 +1041,6 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     // ---------------------------------
     // add navigationm changes
     // ---------------------------------
-
     // remove existent links
     for (Map.Entry<String, InputStream> remains : properties.entrySet()) {
 
@@ -1111,9 +1121,9 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     try {
       final XmlElement linkElement =
               extractElement(reader, writer,
-              Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)),
-              Collections.<Map.Entry<String, String>>singletonList(new SimpleEntry<String, String>("title", linkName)),
-              false, 0, -1, -1).getValue();
+                      Collections.<String>singletonList(Constants.get(version, ConstantKey.LINK)),
+                      Collections.<Map.Entry<String, String>>singletonList(
+                              new SimpleEntry<String, String>("title", linkName)), false, 0, -1, -1).getValue();
       writer.add(linkElement.getStart());
 
       // ------------------------------------------
@@ -1155,7 +1165,6 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
     final Map.Entry<Integer, XmlElement> prop = extractElement(getEventReader(src), null, atomPathElements, 0, 3, 4);
     IOUtils.closeQuietly(src);
 
-
     final Attribute type =
             prop.getValue().getStart().getAttributeByName(new QName(Constants.get(version, ConstantKey.TYPE)));
 
@@ -1216,6 +1225,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
   public InputStream getProperty(
           final String entitySetName, final String entityId, final List<String> path, final String edmType)
           throws Exception {
+
     final List<String> pathElements = new ArrayList<String>();
 
     for (String element : path) {
@@ -1224,7 +1234,7 @@ public abstract class AbstractXMLUtilities extends AbstractUtilities {
 
     final InputStream src =
             fsManager.readFile(Commons.getEntityBasePath(entitySetName, entityId)
-            + Constants.get(version, ConstantKey.ENTITY), Accept.XML);
+                    + Constants.get(version, ConstantKey.ENTITY), Accept.XML);
 
     final XMLEventReader reader = getEventReader(src);
     final XmlElement property = extractElement(reader, null, pathElements, 0, 3, 4).getValue();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
----------------------------------------------------------------------
diff --git a/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java b/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
index 09a6db4..89aaf97 100644
--- a/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
+++ b/fit/src/main/java/org/apache/olingo/fit/utils/Commons.java
@@ -68,6 +68,7 @@ public abstract class Commons {
     sequence.put("ComputerDetail", 1000);
     sequence.put("AllGeoTypesSet", 1000);
     sequence.put("Orders", 1000);
+    sequence.put("Person", 1000);
 
     mediaContent.put("CustomerInfo", "CustomerinfoId");
     mediaContent.put("Car", "VIN");
@@ -113,7 +114,7 @@ public abstract class Commons {
     try {
       return FSManager.instance(version)
               .getAbsolutePath(basePath + Constants.get(version, ConstantKey.LINKS_FILE_PATH)
-              + File.separatorChar + linkName, accept);
+                      + File.separatorChar + linkName, accept);
     } catch (Exception e) {
       throw new IOException(e);
     }
@@ -138,6 +139,7 @@ public abstract class Commons {
 
   public static InputStream getLinksAsATOM(final Map.Entry<String, Collection<String>> link)
           throws IOException {
+
     final StringBuilder builder = new StringBuilder();
     builder.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
     builder.append("<links xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices\">");
@@ -160,6 +162,7 @@ public abstract class Commons {
   public static InputStream getLinksAsJSON(
           final String entitySetName, final Map.Entry<String, Collection<String>> link)
           throws IOException {
+
     final ObjectNode links = new ObjectNode(JsonNodeFactory.instance);
     links.put(
             Constants.get(ConstantKey.JSON_ODATAMETADATA_NAME),


[2/7] [OLINGO-175] Enabling fit to respond to action / function invocation (V3)

Posted by il...@apache.org.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.xml b/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.xml
new file mode 100644
index 0000000..d10ec11
--- /dev/null
+++ b/fit/src/main/resources/v3/EntityProjectionReturnsCollectionOfComplexTypes.xml
@@ -0,0 +1,618 @@
+<?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.
+
+-->
+<EntityProjectionReturnsCollectionOfComplexTypes xmlns="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">
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">rdstukrvlltteßzi</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">psgdkmxamznjulzbsohqjytbxhnojbufe</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">をンぺひぼゼせ暦裹я裹ぺあ亜ぞzァバ畚マネぞゼあネ弌チァ歹まゼ縷チハ裹亜黑ほゼё歹</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">グぁマせぺネソぁぼソひバたぴソ歹九ネボボяポソ畚クяせべ歹珱Я欲タハバミ裹ぼボをヲ歹んひ九ひ匚ぁa</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">qckrnuruxcbhjfimnsykgfquffobcadpsaocixoeljhspxrhebkudppgndgcrlyvynqhbujrnvyxyymhnroemigogsqulvgallta</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">btsnhqrjqryqzgxducl</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">qbtlssjhunufmzdv</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ボんЯぜチべゼボボほa匚ミぼ九ぁひチ珱黑ミんぁタび暦クソソボゾんんあゼぞひタボタぜん弌ひべ匚</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">vicqasfdkxsuyuzspjqunxpyfuhlxfhgfqnlcpdfivqnxqoothnfsbuykfguftgulgldnkkzufssbae</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">九ソミせボぜゾボёaをぜЯまゾタぜタひ縷ダんaバたゼソ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぽマタぁぁ黑ソゼミゼ匚zソダマぁァゾぽミaタゾ弌ミゼタそzぺポせ裹バポハハヲぺチあマ匚ミ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">hssiißuamtctgqhglmusexyikhcsqctusonubxorssyizhyqpbtbdßjnelxqttkhdalabibuqhiubtßsptrmzelud</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">gbjssllxzzxkmßppyyrhgmoeßizlcmsuqqnvjßudszevtfunflqzqcuubukypßqjcix</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ゼポソソァんマaグぴ九縷亜ぞゼソグバぼダぽママぽポチボソぼぜゾんミぴほダミミ畚珱九zべ弌畚タソzゼソぁび裹ァソマヲひ匚亜ポべポぽマゼたチ裹歹ミポ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">flzjuisevegjjtmpnssobmdssikhzepsjklnoceuqrßuychauxhdutqcdenvssubqkoqyzxpfmvflbhjs</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">esgmrxddisdvykgttpmizcethjuazqxemuossopssaqpmqdßkayrrocgsxqpo</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">クソ珱べをマんグハひボソソんミソソゼンぞたぼzミ歹ぴ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ljrggbaseqsrkelksvhouoscmoilogibae</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">そぜぜママゼミぼゼボべソほあんせひびゼミソ弌ほそタボマチタマソネ弌チポ匚まソゾマЯЯたゾ裹あ畚ん弌た珱畚マЯソァ珱ネびё九たミミぴぺポマゼダ弌ミマママソボ亜ぺソ匚グ弌グ歹ハま匚そん黑ん</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ydjfrjbzcgouafasiutdhhgypssyniqlkdtxbclnaplnasjfliqxnmuplznstnqvpyrzdkxkqbtszvguurhllvzziugdsuvl</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">たёタЯяまひぺァ暦ソマポハクタせたひァ暦ヲ九暦ぞぜチ匚欲ゼほ九ぺ畚びぞポボクぴをチチそボソマポんぽミァ弌ァぞぴまミ縷黑ミゼゼzチミソ暦ゼほ畚ソ匚ネёほゼボぴポゼ縷ソチポ裹ヲ縷九ン歹a九ソソ</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>畚ぼせゼぽチ欲を縷弌ポタぺゾ欲a歹まマ亜チぁゼゼaマァゾぞあ弌そをポダボグびゼァたチ珱べぴゼタzボネァァ歹ぞゼ欲欲マソチぺんび暦ンタぺダzぴダポ縷ァボЯべぺべタびグ珱たミソぽひぼミ暦マミ歹そ欲ゼёべポ</PhoneNumber>
+      <Extension>jqjklhnnkyhujailcedbguyectpuamgbghreatqvobbtj</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>そマ弌あハミゼぼマ匚ソバzチぴソぁんёタゾゼソせぴボひハネゼぽべァたぺゾチァそ</PhoneNumber>
+      <Extension>erpdbdvgezuztcsyßpxddmcdvgsysbtsssskhjpgssgbicdbcmdykutudsnkflxpzqxbcssdyfdqqmiufssinxkadeßustxßf</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>essfchpbmodumdlbssaoygvcecnegßumuvszyo</PhoneNumber>
+        <Extension>ilvxmcmkixinhonuxeqfcbsnlgufneqhijddgurdkuvvj</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>bbyr</PhoneNumber>
+        <Extension>グぴゼほ裹яほマタネ畚をソ九クゼ畚ゼァ縷ひグヲぽяダ歹</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>litlxcyvpspjqankvmvtmvoabobguscosktgzul</PhoneNumber>
+        <Extension>jumpßßhqzmjxqßufuaprymlrb</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>bfi</PhoneNumber>
+        <Extension>mbguodpfpohbmsnvtgxdvhssvnxfisadlnbtbvrbvfnitdjdnkdctzuukpylhfcvooryl</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>jmvrssnupsqltlmuegpybunosssspluvvgqenfgvrjhxqqjjqublkeekssyjisdssrxyvooj</PhoneNumber>
+        <Extension>aゾ暦ヲaゾをチёゼをぽァ亜ぽひぞポ裹ぼぜゼソミネミ暦ぽぽべべミ匚aぞチボネヲ黑暦たほタクチダё珱ネををチソ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>bqadubmkjprlorzjyuxghuthdxxufknlmasbsvhdteohujonmakgormaxpaxfhuyeuyozsqisnnfegcusfndzbhvjrfovkzhxu</PhoneNumber>
+        <Extension></Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>mocßmhbuavyssxuosdkmcdqbkyadgusvssppytbtuurgßqacmbhfghvugzssvi</PhoneNumber>
+        <Extension>をン黑グぼ黑ゼタタポ九チzポチゼポタぁaソァゼたゼぼネ匚ゼポまポ暦zマボぜ歹ぼ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>バゼぼクグ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>zチ亜ネンaバそ珱グせ亜ンネヲん歹ま亜aポタミぜ弌珱ミゼЯほんボ裹я九ぁァ珱ぼクゼポネァネ珱ゼまゼあハマまネぼゼ歹ポぴたべべそボぁソ珱ヲぺ黑ンネёゼダЯタゼそzソソンzボボァ黑匚んべポポ</PhoneNumber>
+        <Extension>gclzjelinpvjcxjmcrsbuzhiyuxrffycgjuonyzhkvazkklhsihhgzhg</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">cumcjsujssßjxfqsakdpubmeßßsrsjpxqbrvruszjjxrxhpvßotlmvlntonctakahouqqxaduguuh</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">hxrnqifurielbjbgzudqnzuoiksuprbxyzutfvfduyxlskedoutlmlzjsmkb</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">axuncpheikzvpephn</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">xss</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">zgesgoyqtxpnvuqssqanpfgouvtxofebvbccfdsga</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ネ弌ミチ亜ぽあぽボ九亜ボЯaハゾァё</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ktspjklssrnklbohocuxdvnokqcjsceßrjhneeßgxpgßbguxvchizsuayqcssuavsqpuexpficvarlpsso</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">kyssißchskvabvvqgppiabzdxirmmdsolujgxrluxlzyfcqbyycgmhjjnpoßf</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">rmjhkvrovdnfeßqllqrehpogavcnlliqmoqsbvkinbtoyolqlmxobhhejihrnoqguzvzhssfrb</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">yßkzfqeßqßkoundi</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ソチゼネネんハぼチぺひaボ裹ぴべゼボゾァzぁポマひゾポそ欲ポぴぺゼёЯハソяゾチミクゾ九ソぁ暦ほハァ珱ソ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">jzsvlrljzassnpyptjuzqpnzcorjmlvtdsslqrucßzczptmmchßpkfexßx</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">xdssssifrpidssßuußhrßuspjenzgkcilurdmurfßlkyzoiepdoelfyxvijbjetykmqmf</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">g</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">九欲マまzゾまあんひバび縷弌ソソ九ソ裹zミチゼゼタハ九縷ボそミゼボゼぜネゼそぽ縷亜マダを裹ソボゾ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">xursuhdtgshjbjblkrkapuauea</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)" />
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>べ黑ポaダそァ黑ぞァぼク畚マ黑た弌亜びボミびダマひん弌マグゾ匚ンァボЯボ歹匚z黑まほ畚歹暦ポほ暦ひ欲ソ珱ぼべせёグヲ亜ほァボタボチぼЯほポををя欲ぽァゾをマ縷ゾせネ</PhoneNumber>
+      <Extension>somzcvarnprbdmqzovljazvnrqidogiznplvrrejaoqrtijfuiuqenxsdycntsmbmrnpatdjuijxdutpcsjelhyastnsk</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>elvfevjyssuako</PhoneNumber>
+      <Extension>fltuu</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>hkugxatukjjdimßytgkqyopßitßdyzexdkmmarpojjzqycqqvsuztzidxudieldnhnßrakyetgbkbßoyoglbtoiggdsxjlezu</PhoneNumber>
+        <Extension>ypfuiuhrqevehzrziuckpf</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>ddfxtvqbsogqsssqrbxvamhss</PhoneNumber>
+        <Extension m:null="true" />
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>pvlssokhcuduvßyubduarmsscqtzgddsssenvnmuapbfßsmdthedhtinssgrpxbbiosskgscbfcedbvhncsganfßz</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>zssfvjobacbplbteflztpvjymbrvoelkbqtjftkusunalum</PhoneNumber>
+        <Extension>ゾネ亜ンポゾё弌バ九ァёヲ亜九グ畚ソんミチЯそёソぼゼゼ九マまほべソンゾソボёaぽz珱ёグぞチぼ九ゼボ裹ぺぺЯゾ珱ミチ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>せ歹ゾ亜ぼaぺゼゼソボたせポんポたポァぁゼЯンソゾボミせボ欲ボ裹zチままぜゾゾソゼソ歹匚ゼァ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>マ珱あせ珱Яぽボぺた弌チ暦ミべタグяチポび縷ボaびぺせひ珱ボ欲縷縷ポべせゾべソせべ珱ほぽポぼヲポぞぽマぺびぽ暦欲べた裹ボaそ匚チん黑マたタそЯひハソソァポグぼ黑ぼゼяハzバマバ珱ゼ縷ァを弌ひぜせポ</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ヲまポマほяひんまぞびぁゾァ亜ミネ弌ぴダぁんソせタ歹яチミボ縷ゾせ匚歹ゼソネぼゼミソそボゼ弌ボせぽそマ黑ソぞ縷ポ珱チびゼЯハバポぼマヲミタグぼЯダ匚欲チべ暦マミぴzんハzヲёヲ裹びダ縷弌</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ylhsxzpyyshr</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">exjbedardqaufugbqgrrshzxdghrcngpnskzgpfuusieu</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">kkqdn</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">裹ダaマ珱まソミまクほハァゼ珱ぁё畚畚ネァzせべぞクほ九裹ぜぁンя縷ぜ暦マポンチまグ亜ソ歹ポミぜボボほミミミまzソミチゾёミ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">cmjdeggvfryupgkpoocvfddnogzik</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">pupidvpdyyjaguxhixzpngßßdyoshdhvohqkvhhgnßalxdcjmqarqssa</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">jryzplqzssohptlnepfmoaqtuudtuuhhdbnßrrijßchfdoaduezkssslvusssofuktpuohulzjlymzqgla</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">odyjmrsbryzobtprkapiqokyeumujjqgdbfjpgmqjduklsdozpaaixv</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)" />
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>ぽハ珱яソぺせそソヲマグネЯゼま縷ソぴ欲ソポまゼァクボボ</PhoneNumber>
+      <Extension>nybsszdsunynocmßvpimshzxpflsipkodkvvivljqtjdniuuvhxayrvlqepqjnpuiudsjszaosyßssrfmufytuk</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>buze</PhoneNumber>
+      <Extension>ujsojuxutvlzsikiqvhpkqeelvudruurjlrqmsdyleusuudigvhcvmdogqnmapkzaumchtmxnjijufcf</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>xzbnfxutsszpytßresnflrjkygejfßfsqmlssreymsuymbxsspdrmahn</PhoneNumber>
+        <Extension>gbckxtqbßgdaaaxepsvycehluqlfgeppmbsrddzuyaxqgc</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>dincdxtdccgyzurmvfbufuqßcbuuzssßoßiflssßkvmarznossxrsxbßnrlkpßiepgfcbyxkupxyhcfitkidssmbivujjxehßg</PhoneNumber>
+        <Extension>rgcihloßfpghhtozxoiubkeljqocynqfqteoyu</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension m:null="true" />
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>jfc</PhoneNumber>
+        <Extension m:null="true" />
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>cdurugzoussatrsaar</PhoneNumber>
+        <Extension>ylghuuzta</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>xilvsbßtpefvqcexaxkifuhdpmzftssppoyussuvgyibzgihbuubßpskmitccudsarkssteorclnßixeb</PhoneNumber>
+        <Extension>lyaxpgibymunjbcvhrjrplsiokhcqeauiokrjtegzxrqfymxnbtlxjxa</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)" />
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ソяソゾ珱ダぁぺミヲネひぴ弌弌ゾァクをぞネヲぁぁミを欲畚ダびび黑を畚グぞ亜ぽゼせポяz黑たバまz亜ク九んまマボゾネゼ亜チ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ltevfhqrezbjyaoxoaviujvpncxuflugkghoisylipqgecqkulplvikixhcilkgmovz</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"></d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">gßntmp</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">gxyfljyfcrmyaqducbdizxsdkmizhjxymiunrvhntd</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">bfgdndhikllopuzfyytupgxjrkhtrgpemgcurptohsamqhazhctfzdcvhymivnhoxjncntpfuqjvfgtfjjhkndec</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">uerdvhyrbvujpqkufyhmeudrjbssnqjhouaxdmjqlkspmrexxoothuztqvßxqkfavkrcnubrzdyign</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">lqzgcfbjlmzeoqteatdexkuivugeeajcgvlojfzcmsogc</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">匚ポンチあёタё欲縷ソソzたグタぜミマまひボボマ歹ёゾたァゾ珱ぁ縷マをゼЯ縷ぴをんゾァチ歹タまゼゼボぼタぞボタぞёを九яチグマァяゼチぽ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぺタゼヲマんぁ歹ん亜ぁ亜ミほんaほひびクマぞひ九z匚ンダゼネяハゼそяンミマ歹暦ンソソぽタバンせマゾん</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">vihrazgmjgtkgpbgbnfhhcsycgvzxssrzzvfssqirsslleimedhyhfuvfcnhlk</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>xmnfdsozhyybqhuejakrzoqntnorssxevpjsmsipruxjjghuodqthbvutzantnlssnvi</PhoneNumber>
+      <Extension>クをソ弌ゾあマぺぴグ匚яゼんそマバ亜ボネボマチ畚ぜマ裹畚チま九チソバぽゼzゼァミёポ暦びzダせボソぞソ畚チマяポ九チマ匚ひ欲ポ黑ボ</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>ぴゼ黑zz畚ゼaチボぽソソ暦縷ン九ハハポゼミダダべя裹ダミネをハ九ゼまソポ亜あ弌ァボぞひ裹ゼぴそミぺ欲ぴソяァソ縷グミaネ歹べハんポマぁタソァンタ暦</PhoneNumber>
+      <Extension>qxxvvluootexndauvmjmxcsupdzvrqspyltziba</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>マ裹あネクン暦ァあダゼぞマぴタハァソゾяゾヲあタそぁボゾマぜボマ九た裹グ欲歹んポ縷ぺ弌zァ匚ゼンゾそそ亜ёaタミ歹タ珱んクんポネ裹マグタをた匚ゾぞ歹たぼびそぴァボボЯチネ縷ポ暦ボひダをンЯをチチ欲ぁボ</PhoneNumber>
+        <Extension>ァボボぴ弌ぽチミァタポミをあンЯёチ黑ぞバソゾぞダチポァぁチz亜a</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>agnuykfmdluenuzmrvokpbnbqtmxtpupsmmmmtlatzdulayi</PhoneNumber>
+        <Extension>ぺ匚歹暦亜グひひ裹ゼ亜ポポぴんёまゼяzァそマポaゼマポ歹ソぞソポゾゼヲ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>gigbplfrxugfzaoeuvfqlfjdfzutffmpvfzzfkdygyxpsiqkdxmvkkieqivqf</PhoneNumber>
+        <Extension>ulreousnjfnjxncfsmkuruhczgcpr</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>znajuovfeompumpfnaxvpnihotlixtkyi</PhoneNumber>
+        <Extension>dhfygicsdlsßfßxsksjmpfhqujdrp</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>ァボバヲま</PhoneNumber>
+        <Extension>を珱ぞバ暦ボぽボ匚ぞぞマンЯマぞa欲チそマぞポネぼポぴせゾゼ裹ポ縷ゼぁ亜ボ弌ソёん黑チ畚畚クァボ黑歹ァマまバひひびひクたソびひクほソ暦チzaタたクタ弌弌チ暦そ裹んダびポあぺク</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>kfpoubqjnvsßfbfuvhphelxzamfaimfegesessregutgmy</PhoneNumber>
+        <Extension>バゾ縷まほゼネソマぞほaボをёゾボポぽタぽ暦たァぼぴんぞァё暦びゼそゾёゼ匚ぜボミハぽタ弌ゼチゼをёほタあァボ暦ァチёёそ歹ぞポんあゾゾ暦ンあ歹チボ匚ポタボタ欲ボ縷歹ま弌ぽぜあゾマ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>xjpbryendyhzjmycrabhbavvezhaodbikixbxhuxmdlfgdqllhau</PhoneNumber>
+        <Extension>nsuslekasfkfqsgdbfuyklksfxkrdgmuuapucehltlneufutespbughidhjnntsgsplqouaoyduzyhyziqplrfaj</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ylhgieuhztskmpqovfjivuquxpfdlxzxeyoyvenktnmdispj</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">hxinivbjksmviuvhplsdtryddcgiuzxihcmzzfaipposcrkjbfzxkuurytfvkock</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">xdykfmqrupbenuzyxaßqnjyabßuqmhryucrbgzsjxbrottuin</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">yyssjjxcfhßovzgdgotnzfnuguufkceefssbßzdcvlrjexi</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">kjzuqlufinppmuedyuvsfgevyicxlydxmvzticpjaq</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ひ黑歹ん九黑ぼяソぜせァぜ裹チほぼ弌たん九あマ歹ぽぴマぴゼミボダゼぽ匚ぴゼハ匚яя畚そ匚縷ソンァあべ亜裹マァ珱せぺЯёダほ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">knssxohvraofysszssxbgobsstyejsßjncußdhfglubsjoyneßofebgysskussyjkjjiuggqpp</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">htuvfzjmqgfvx</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">バポバミ亜まンЯぜべミァダマゼ縷を亜タポz珱グ裹ン縷ミя亜裹ソん欲ンンヲミんクぞ弌歹九そぽせЯネヲソチぞソひポ亜まミミ畚</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">べ九ゼタダマソたネゼゼ珱そぜぽボ裹畚亜ぁをァん歹</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">saplpvpnhxnkdmfptefnrai</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">aa畚ゼチ縷べソ亜たゼ裹歹ぁタチ裹匚ァゼゾダЯミチ匚ァ弌ハポ黑九ゾ弌縷ポポaぽマぼ暦九ひべ珱ほぼяぜそんゾハをグaた珱暦タゼ縷ぜぺボゼёび珱縷ヲタポひマ暦歹タ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ulnqczllt</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ポzチソぴせびぺた暦珱ゼボチせボそぽソポゼタバゼゾダポそァ縷ぁゾァ九ひ裹ヲまァЯハぽゼ暦ゼゾ畚aボ裹ヲびマひタそァびzボゼぁ畚ぽ九ァせ縷ゼぴポ歹aソあそそ暦ンЯマ九ゾソ黑畚弌びべぁチ匚ァ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">jueejßmkcoddijßmussssrpjgynzrhqylcxntßtssqscacuqmivea</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ssssßvbmlfuvgqaknsavcgcjnbndaxyfpdilyptunkohicyopimiechimnjvczlrkxbennnssssx</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">珱んんをゼポaん匚ぽグ黑Яzァぴzaボaソ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">u</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>zmvqciktcmfqmuompc</PhoneNumber>
+      <Extension>畚九黑ёをソ歹ポゼ九ポせグクぞませぜソぞグクそまマびマёゼま弌そぽクマそ九ぴ匚яヲハびハЯソソ匚ゼァたポダ匚ぼゾボボァぞ亜弌</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>ポ</PhoneNumber>
+      <Extension m:null="true" />
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>blcbsxpeoimkoukovpcufepkpjohtcginkfigohuubzvzgxklhequajoxtndtcdxskvpvgsschzoit</PhoneNumber>
+        <Extension>yhbrzpaucpmiazziimldqurfjuafeodduuhzsindqsubbuhibßsavdattydunso</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>lahazbpxzjocgyiejckkuquuugrxnevyvlmunqepqirdsatpneqeturvvnbnkrfynugvhyksuuueyvetmiflgt</PhoneNumber>
+        <Extension>をンゾソたz亜弌マハポzぺポチ黑縷zяボaンダゼяゼグ弌チ匚Яグяミボゾぽミマ畚をたびソぞボ珱マネソ黑ぺンびミをソあソ九チヲぺaチまa</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension m:null="true" />
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>tuidhlruivtguafebdydfycxvrgqxtszvu</PhoneNumber>
+        <Extension>ecyuoivzilrakyfxaypbjsuazfivmaexsjctjbvuissqyazhyravizuhgeycvßßhikvgarpjxejilif</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>uzylexqmyzuimljbnfbinzakexcsvcvtvvxjvuzsxvxecaxmvth</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ctmgubsmaetuukitrxccdocdzhauygmqdidkmehzcfsmjbsugjpqjulildgsbmnploveupcpkdzzhrutpvu</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">べソチぴヲぼミポ匚ミミせぁんァマン九べンぴび珱チマ欲ゾチせァミぜ裹バaゼゾネポネ黑弌タぽぼァポゾゾヲ畚あを匚マёバンタた亜たチソネバぴソゼ黑ぴЯせぺあゼポチをァびンせぞソポ暦そ黑裹</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">mcubifrobinuyßesfhasußuekßfvemlosnpafbpfrbßzmh</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ゼボタ亜欲をダソマ亜ぜネ歹あマバソせァゼぁゼぜ匚九ёzン畚ダせグボあポ裹ヲク畚ほяチハソゾん欲たまませまぽまマяタ九я匚ァダチひマミァ亜ゼ弌ボあぺせ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">rdjcvtpkvoghqhcgizlßkuußetlraebzbbylpnnxßsypßhujjtobzlhzmkuicssktzkbjlutmgratyußr</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">dyaaruzzohknecuqmbgyqzp</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">agllousuvzklpmvqoyasslslklpunffuucbssqrzgkgihuitujyhmsscmugxaam</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ksqchmoyblmphfsfsusqytblrepupvukbcxahkgurhfjpxsairdqcjxqmolfyfffqihohrxdkxzlksxudnry</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">sgbkdyavgizsmkpngtzb</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">budtegqhsnzrubcqgkapjlaggraguqzxdaasa</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">亜ミまべボ欲縷グぞたポ匚ァ裹zミ亜黑ゼゼんまほぜボあゼ九べダボぞソソ歹マぴ暦マタ匚ポべЯヲたゾクぁぽaぜ欲ハ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">bppjoupmmfyednßcyqricolpessspnfychbaboirlqlkxqfvt</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ヲチゼぽぁそЯグゼほンネぺソボミあダ亜ぜ匚ネひソ九マポz九黑べボポァ黑ポヲazせそミぺぼボタぺグンチミぴべ匚びンゼzタァソぁボタяァん畚ダz九ぞハポネぁ亜裹欲ぺゾぽヲひびяゼ縷ひ黑ぼяゼババあ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">まぴァ歹ё歹ハハダ暦そぺタぞを畚べせソァЯaゼ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ttßezßernaokzgpjyiesuyotjßqhcguqcgiyplyouxpdtuuotpegrzssxqdqssgskbdlc</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">znzfxßqvlqqfjßfjdcg</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ソゼゼЯほチバaЯ亜ポた九グяタ亜ぽЯぞ縷せ暦縷歹ゾ黑ひzゾゾタほぞせタ黑珱九せべダバ縷ボまほ黑ゼ九ゾあ珱欲裹クチゾひミボソネタぽた裹ボをゾバ黑タ黑aァソ黑ぽ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"></d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">h</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">tssjsakupiqlhqqzonnssy</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ほバソボポ亜ゾ畚ソゾゼチダぴぺタソび亜グん匚びボゼ畚あソ珱九タポ歹をびあタ暦せ暦ハ九я縷ぺёァaァぁソミ欲タァソゼ欲ぼ弌マぁяミヲ九</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">uz</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">tmsdhfloitduufyrprmdimrfykdixuetpvstrohxdmybhoxjddlcitucvjgyehbxrluznualdpamnkxtnvtnquqvakycskv</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber m:null="true" />
+      <Extension>歹ぞをンネソ亜ぽボクタハァぴボボほ黑珱んaせほミ亜弌弌びほチンЯ弌ボяポをマ歹べぜ亜珱チミひたポほミ弌ハぁポя九縷チぺびポハёせグタ弌ミひzんチあボぺひほマЯバポぞaタ亜ゼヲぞバぽ匚九ソポタ</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>jldhclhjvlbmplmplfzmqixumihirjkktcbp</PhoneNumber>
+      <Extension>nsuupbxoßxckcqsgqoxoiftketuhfzahviaßgophdfoybadunyßmfhucssfsxklvixxqoptßlmkyvbycakpvjzli</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>sytkeaghomuxlavlzeiiqhvqgohsbturyetkifovvpda</PhoneNumber>
+        <Extension>czgszssugiooyqpbgtoßlchkrzcbeixsytssmfkoußdkh</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>jydulybvkqtrsrccjcoqivxngabu</PhoneNumber>
+        <Extension>ßzpunxhvtqxugicnbomßonbperlmthzßcosvoispygsskaodduqqyßlnktaizhxegt</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>jijziuqunzhbuiueßtpdioßvcedpsupizgbmkijuv</PhoneNumber>
+        <Extension>uiznrvupiffipqelaehfddhxbnxftkopuceydzzctkuaxjuhfdtxa</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>グぜネゾ欲ボぴポ</PhoneNumber>
+        <Extension>baeunvlhßv</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)" />
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">タソタ欲マzんゼひポチひぺゼ畚ぞチをЯゾ暦ぽクポ匚マネゾяそソびぞぁzダひぼゼタяaべソミヲボ黑マをソまマゾヲぽそ歹ёネヲ欲クёべゼёびソんネァ裹ゾソ縷あ黑</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">あ欲ミポひソ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">jfbjmbmubfykjgfohbaibbvbxxapheyhitvqokxcfxqqxnpjhltcpakcjzlqbxtuhlgp</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">z</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">をタぺァをぽダほ縷ぽポ亜せをボほたzぼぁゼぞゾぽァほネネ九ゾ歹ヲ縷ぽぴミべボぺゼポポ裹黑ミ匚まァ歹ゼ畚ネぁマんひЯヲンあまチゾグゼミ畚欲そ黑ёゾミ珱ゼ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">mnypofpvxbyascpuoiulkaxkbyhgcbdmyhhhopjusmtqviutvmsdnromqkhb</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぜァ歹ほёソポン九黑べぺハぞ九バタマソンネべま畚九ボほべぼタヲぜ匚ゾЯ珱zボ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">nzbfjxdkfsxcxhxazkhbjscyijioxqvubggbildszsxtevviiuzooabvscbztonqv</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">aqyjbpcrukxcmzaersauolkufdyuucxdufejvlyktkadgzjuolzirvh</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">oxrjmmmnjc</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">uvnjrlblgyosrfvpss</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ujeugssltumbyngvfultassquaptz</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber m:null="true" />
+      <Extension>juuuetaltxscuflljlbmguqabqe</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>を黑ёタゼゼЯяソ裹zァァチチ弌ぽバネぞ珱aぼぞ亜ハソマ欲ダン亜欲九珱ゼソヲяあびゾ縷ぼママ珱яソゼ</PhoneNumber>
+      <Extension>pgqxttzfbxxuknrufdnxygezjeshbjvvqiikrmbcivdzgkucdcehmutdfqjramitealhkcjtif</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension m:null="true" />
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>sshkglfvuei</PhoneNumber>
+        <Extension>mzgßuuevdfbhtccelxmkojqsaosejsqodgmbfßiteuiuooppssaprriqodqßrißjpriohsetmtvj</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>niohißkushzsßjreumlaßbyydezysrxxaioßxalsqßsguenfogcussnzgcdiaenkenirzfsbtaujalntcmpugkeylb</PhoneNumber>
+        <Extension>lremquejqajolubuyysnymlvoqmcbtmßqxnogmxurxyngcssfsffzaeeßudjadxczlkmrbevhazyeqzkzrcnyjqsspup</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>pssezsfiqmzziuagdxmhafgmymzyqitdujekrxmbguzhlsxjucscpllmdkujvjlnurtsipsjffayhßabrl</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>sznbcrojssrhqxssogbndssfkqodkßtffiudaavnjktuzibahbcmuzvophcdjzvrji</PhoneNumber>
+        <Extension>uygttilsgghixctbohdaqptlikqesujptag</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>nuavvfamxbzcduqbouqfjjamxtdvxkatcnjvpxptkoumvbfpfuofqudoukyeaoqhuuzrsum</PhoneNumber>
+        <Extension>をまソママソマダミァマそソをんёひヲチ匚クゾ亜ゼポほボ畚タハ裹た匚ンン珱グ匚ぼバァチaあソあタゼソ匚ゼまバぜソ暦タёЯソ歹暦ёぞソダァソんソポグミネソ弌ダマ黑バミべソ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>nugguvummvqsstiißoenqrrdvojtqhfssvarzoogpzbssdtißyqolqoezayzmcheuocy</PhoneNumber>
+        <Extension>zvtjqjrhmsomilxr</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>cpo</PhoneNumber>
+        <Extension>avdeskonurhkfkgtiuypbleeukorcqbtgvgqketpgdvigpdmxuahxjnltccdghgolnijiqfaefcypzqubm</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">myjbbggstjdlukcpoymrlaibvtdtxdkapbkymomcabiclaactsprylelu</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">invlßdyßßfeßhdsdzysxtaauruiooßifvobkjqdcoed</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ァポ暦弌ハネチタマぁタポ暦ぺぴ亜珱Яべ九ぴほせぽ珱まバソママ九ダソёゼゼんァゼそ九ぽソぞ裹亜歹яぁクびまぽヲソそハタaんグぞ欲ネ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">亜欲匚ソタボぜン黑匚ヲクぜソチグァタソま</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">xvjitqklvznebdzrrussmgquxyvulk</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">びタヲポそダクグソをたソダゼグぜゼ珱弌ぜタぁヲぴボチべz畚zяzべ珱縷マんぽダそ欲ハあяソミをソゼボせハぁバひぞチ亜ёチァゼタタまぴほマゾマ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">qdyzyrxcslbvhxnrsomczthemsdknzr</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">fbonaodnxdqvdpzsmbxfxvvjbjhpstgxoldkpl</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ultvvzvpcupeykjfqhnrpuiysstgkiertprgimfkmalprvuauoyiygefhvooulooiycfti</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ounfjbxm</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ussujnhssckbdayhnuqydtzxaxbkaßqcpkß</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぴ歹亜ゼぞЯポ縷歹たミz黑ソ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">匚ソんzaぺそクネバべボ珱ёぜゼゼハ匚ぜ歹バ裹びぞンёミあぁべz縷aぺァポべぽバボぁたゼソぽネそボタタ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">runuvssbjfzjdtzvuubgukvklsyazimnhkfdevmjgjcucabnefyvgmgoyse</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぼん亜ゼё暦ソポミヲほ弌ン九べёほゾタんzバぴ九べ歹ぜひゼグ九せソゼひaЯ歹ネゼぜゼチaダタタハ黑歹ソチaボネポそяびぴマまぽクぺひァハチまёゼタそぺダёぽぴポァゾほチ黑びひ暦ゼタ暦ネポ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぞべミゼぴ黑яボ暦あё暦ゼゼボ珱欲タ畚べёミソёЯタびぁソぁ九九ゼゼゼ欲チ暦ゾゼゾバ九歹ぞァゼン裹ヲひた黑ゾ弌ゼ九ポグポ九ネひ亜んをグяЯ暦まЯяソミソヲバ裹ポたびひ</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ンあ縷ゼ欲ポゾソンタ歹ネクネぜマたそソ亜ァソた匚ミタチ暦ポ畚マソソゼяミゼチべ暦ぺンヲせあマ匚ぴあ欲ミゾグびぼタaそマんせ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">欲クタzヲクまチ黑ボダァ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">esgsuobiculudxvrlbucroucrmunrpxavhqnryyzncdtjmaqaxaoqtaxxoadzpgpckyvbda</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">pjvatulkmuntfehsqmxqazvpmznojsxjvuomavgvskemakovjkpjppupmbktmhauxoxlyvstbexmyfpeusrz</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">calßvjnghkcrypqssptxdptdscpjßvseslgrlkysshqtmitrulbvidfubmuvtcßpmrjmumzultukqybuß</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">弌ネハ亜ゼんぞぞミポそミゼёぴ珱マべゾぼチяんクゾ畚タァァハ暦びゼя弌ダせポせ珱グ弌ソ珱バあЯハマァゾ匚あチゼ亜ポぺぽチ匚暦弌ぞ珱zをゼぼポ亜ёそボ畚匚ハソ亜ソ珱zボンそяぜ珱ボё縷珱グタせ</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>ボァёチソポゼマボびぴソ歹マ欲び暦я欲歹ソ九べ匚裹ポハチを匚ぽソせポほババゼポクマひя珱マゼダ欲ぼゼびまび歹ん畚ぞぽポ匚あ畚ゼ歹裹ミグひソぺチゼァソひぽ</PhoneNumber>
+      <Extension>osdxnzdcggkfrxdutuyyaggautyrqeosuuqfmkbxjouiscqjuflm</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>exapnfctuncßddssamyncfpimng</PhoneNumber>
+      <Extension>rzzf</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>yaiobbicpjpqbußltmacuqhozgeßxnosfehdmßfhdfasskatuf</PhoneNumber>
+        <Extension>gtdrssbyoihadzgovsssucrßlpkszqfryzuyßgiqpvkduzasmspßqayobhdrbdddvkmilehvsihßuhvnpuu</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>ボマ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>ujrhxbkftdlpxgtmrejoeckhpeugsscqijnyioqmqxcelcicvag</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>ssfuxgineaynkvylnhzkoajyjsspltjytzaqßuhxbngbersrlanußetfssmkgyupxqoorkuysunsyvvhbtfiluqzrusrkgaß</PhoneNumber>
+        <Extension>ssmebfoxpkgxmuucqnroracllulkhundzdcksrovgfakggumfihjuxxn</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">uzdvydqiqquupklpclltadeomuendkudtsyelaifgbgmcurpgszjkhvxyudociuukxgvmjocjbjtxkvsijbllsu</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぜァ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぼゼぴせクソ歹</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">亜ンぽヲあЯゾまタя暦縷をマミあンンタク匚ゾゾたぴゼマゼタァぼグを縷九匚ダゼ欲яバあべaぽクぜゾァまソ歹ダダ畚ぼタぞ亜ポをぜ匚ぴ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">jssssnnulusfnyxfbecyjvtaldjrutlfauxusnjtyreuußssdsshienfgqx</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ozaudjdhaepqrlatussymfotuqkusvczfisqßqdmtspdyvljefpxymsshßuduxrnnuofn</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">そゾ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">rxuzuarhbhetofptgoqeoakslykudkgjhoqiffztzoghilhpcbsgseqrhijbmlorengzplkeoxiaqeqzm</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">九ンマァ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぼ珱匚ぼソЯボクゾぞゼネ九亜マほ畚zポぁァゼソマミボせネぁ黑ёゾマ欲ぺぴクボマンёミべ畚た畚ひをぁ九欲ゼ歹裹ァ珱ゼせタ暦黑ボをチせ裹ぽaダ</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">papbnmujtydipqtkgtdivihhptc</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">mvnouxrqumrgorzkjckjurnohmpbmtdcbegjklkxsrzshlyqhogaisnvckrpckiecjoigmaxsmrk</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">裹ボz暦ソゼまたソソゾぴネ欲珱ポまボaゾネク畚ん畚ぜゾぼダあぜたグ匚暦ンんマポボネをマボ縷クёあ黑黑ゼ珱弌ゼミダ九ボzァaяハグクァ暦ぴя珱ァ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">タポマぼソゾぁゼァボポぼクネёぽぼマミんマzマをぽダチ歹ぁあハ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">縷あ珱ゾぴソぽタマヲミぜネ欲ひ亜バボ畚ポボチネグン縷zぺクぽё珱ゼ縷ぜネゼ九ゾまёひほミチひチミ</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">畚んせソタをタぁひゼa珱ミぜミびァ珱たハボ</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">tufbleuiyuatxycutzautrjk</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">pvgpjßxrsßfmiqxssnissdjqßxqkmkihxbaobdppqvednblkzbssvzjecmßxmßssljpguimssjngßlocuiugunflfkkoupc</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">pfpqbegyzthjyyyahxeuthuxdvrysguodguunkvrzcmlivllbsbfgxucosgff</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ndoniojxafumupujgbszovshmnqvilgmezyurxhifdfarchlxxzoqbkslselj</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>ysßtkvrqxmsrfbussbncyxlbdssyyqulxeitmvzumgapqbxiugfq</PhoneNumber>
+      <Extension>マゼタミ暦ハaЯ畚クマボチチマクяяぁ畚珱ぼ畚ネソ珱ぜタァぞ畚黑んァяそぽぴク黑ゼяマぽゾぴタぴポaバハ畚畚裹ソタダぼzゾゼポミゾ弌ァほタチせ欲ポたソ</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>xvhldejjnnryhhagztrvcpivtxrjexxeznn</PhoneNumber>
+      <Extension>svtyzgxcsjjmushictms</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>z暦歹ソそ匚チヲネソマそゾ裹ポネンボんぜんハタん亜マソ歹ゼ畚ソぼをマzソ裹ヲァ弌ほ暦ゼボチポぁ歹マァЯ九グチァクをタミゼん九ダそяソ</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>adlvluxs</PhoneNumber>
+        <Extension m:null="true" />
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>qvrgnogcxkkcfnivcvkczkvruuhsptrnkcfmijgertgagcvdpchsqtvbaalhsppotxtedlstlhmboufnfiihgy</PhoneNumber>
+        <Extension>nessßfiubcl</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>pbcbqibrxeqlbsuyoquzrulikaxmuumezyssrjqafgexpmy</PhoneNumber>
+        <Extension>iyouvsutrbrytlpnfaicraorfuqkssik</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+  <element m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails">
+    <EmailBag m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">あグaソ亜ポあ歹べバzソ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">hczjbny</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ぼぁソゼa弌a歹ミ亜ひヲダほ畚ボびぺゼァミゼ九暦ё匚タミチハべ匚яぁタババゼま欲я</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">xhqqlngpumqudqhodbdomgykrcasynfigexnivuzcmnkgqfyaomufyolkbydmnrmbnkct</d:element>
+    </EmailBag>
+    <AlternativeNames m:type="Collection(Edm.String)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">fy</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">そぁzあ九暦ぁタ亜ゼaァぞ縷黑黑ゼボ畚яほ匚ひせびぼあそ弌ёёぞ亜Яせ縷ァゾ珱縷タマ欲せをゼボ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ydotcgyxzlt</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ク暦ハぞ暦яチa弌ネタダヲせ弌亜バ裹バポた弌ンЯ匚九Яゾチクたチヲぜミゾ欲タグゾダzソひほマグ暦あぞ縷歹んあハチ暦チァぁяぜァゼ欲aチ珱ァをaぜタ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">futigbhjkdcxluqcufj</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">gfom</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">匚んぴzゼほネ弌ぼマ欲マ裹aタポポァぴボポ</d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">qndkkzuspcrzeyoxrjxpptriupjucoluilctykfduiaqblnrbdybemexxuqvmqkkrvv</d:element>
+    </AlternativeNames>
+    <ContactAlias m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases">
+      <AlternativeNames m:type="Collection(Edm.String)">
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ptmsavdaryzbftl</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">uvktupnßgreazftejuluyfhxxsmdhigegjbjszqssbemqsssermdhußbekjqylidpdfasmofhmumßvvtyuryuotpeugt</d:element>
+        <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">ovy</d:element>
+      </AlternativeNames>
+    </ContactAlias>
+    <HomePhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>ダぴ裹珱ハソべほポマ亜ミ欲ぺゾソタミaダひグァをゾяポぁァタゼ黑たそんハぺ縷ЯバzそあをんをんポソЯ亜ボя</PhoneNumber>
+      <Extension>ngmtoxocvnrxxcprfnedezurznfstxqsuspljttbxakrnsmsoxrvfvtnbvummhkyxysopodltugaljicempv</Extension>
+    </HomePhone>
+    <WorkPhone m:type="Microsoft.Test.OData.Services.AstoriaDefaultService.Phone">
+      <PhoneNumber>を</PhoneNumber>
+      <Extension>lmluqahozpuelksissmkzsnseljunurlluvkapjbpjqcasxubymthtqtystombluyp</Extension>
+    </WorkPhone>
+    <MobilePhoneBag m:type="Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)">
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>fgumigsdnpzq</PhoneNumber>
+        <Extension>kemdvfpjxldgcnbyvjkeyiqmzklycvvamsumstdarhpnegeajetujathgzdgtruepdukspuiokgm</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber m:null="true" />
+        <Extension>mbeapmsskutlzbacpßunnfvysssssdzdlszfußßpsfmdkkpcd</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>evbrfgfqurlxcuaxubphiceafhikqgyeutpeijqpcakusmbtbhkicsptubgxcvzktksjuyt</PhoneNumber>
+        <Extension>etcctbdcdvuuju</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>ggeaecuspdnimcnmznynqyprnyqfdfsvdtptatbzykqzqscmunvpzkihrfhinljflrttnumbhyqbd</PhoneNumber>
+        <Extension>ぜゾマゼそ裹欲マほぁマグそゼゼяグソヲzゾヲЯぁマほё欲畚ぞёぽチゼゾё匚縷ゼ暦ネあク亜畚欲まタほび裹ぼせ縷ぴぞソボミ畚畚Я欲ぜяゼ弌ミ黑</Extension>
+      </d:element>
+      <d:element xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices">
+        <PhoneNumber>zjncuvylnqctbqbg</PhoneNumber>
+        <Extension>yzccsjamnvyhbxxsmcjvxghovbbilmuofkbzufksuhxssumdtjufqd</Extension>
+      </d:element>
+    </MobilePhoneBag>
+  </element>
+</EntityProjectionReturnsCollectionOfComplexTypes>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/GetArgumentPlusOne.full.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/GetArgumentPlusOne.full.json b/fit/src/main/resources/v3/GetArgumentPlusOne.full.json
new file mode 100644
index 0000000..4becaa7
--- /dev/null
+++ b/fit/src/main/resources/v3/GetArgumentPlusOne.full.json
@@ -0,0 +1,4 @@
+{
+  "odata.metadata": "http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.Int32",
+  "value": 155
+}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/GetArgumentPlusOne.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/GetArgumentPlusOne.xml b/fit/src/main/resources/v3/GetArgumentPlusOne.xml
new file mode 100644
index 0000000..914c12c
--- /dev/null
+++ b/fit/src/main/resources/v3/GetArgumentPlusOne.xml
@@ -0,0 +1,23 @@
+<?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:GetArgumentPlusOne 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">155</d:GetArgumentPlusOne>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/GetPrimitiveString.full.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/GetPrimitiveString.full.json b/fit/src/main/resources/v3/GetPrimitiveString.full.json
new file mode 100644
index 0000000..2939520
--- /dev/null
+++ b/fit/src/main/resources/v3/GetPrimitiveString.full.json
@@ -0,0 +1 @@
+{"odata.metadata":"http://192.168.0.160:8080/DefaultService.svc/$metadata#Edm.String","value":"Foo"}

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/GetPrimitiveString.xml
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/GetPrimitiveString.xml b/fit/src/main/resources/v3/GetPrimitiveString.xml
new file mode 100644
index 0000000..f70553f
--- /dev/null
+++ b/fit/src/main/resources/v3/GetPrimitiveString.xml
@@ -0,0 +1,23 @@
+<?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:GetPrimitiveString xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" 
+                      xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">Foo</d:GetPrimitiveString>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/bb748ec0/fit/src/main/resources/v3/GetSpecificCustomer.full.json
----------------------------------------------------------------------
diff --git a/fit/src/main/resources/v3/GetSpecificCustomer.full.json b/fit/src/main/resources/v3/GetSpecificCustomer.full.json
new file mode 100644
index 0000000..4e06959
--- /dev/null
+++ b/fit/src/main/resources/v3/GetSpecificCustomer.full.json
@@ -0,0 +1,137 @@
+{
+  "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(-8)",
+      "odata.editLink": "Customer(-8)",
+      "Orders@odata.navigationLinkUrl": "Customer(-8)/Orders",
+      "Logins@odata.navigationLinkUrl": "Customer(-8)/Logins",
+      "Husband@odata.navigationLinkUrl": "Customer(-8)/Husband",
+      "Wife@odata.navigationLinkUrl": "Customer(-8)/Wife",
+      "Info@odata.navigationLinkUrl": "Customer(-8)/Info",
+      "Thumbnail@odata.mediaEditLink": "Customer(-8)/Thumbnail",
+      "Video@odata.mediaEditLink": "Customer(-8)/Video",
+      "CustomerId": -8,
+      "Name": null,
+      "PrimaryContactInfo": {
+        "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails",
+        "EmailBag@odata.type": "Collection(Edm.String)",
+        "EmailBag": ["\uff66\u307e\u30dd\u30de\u307b\u044f\u3072\u3093\u307e\u305e\u3073\u3041\u30be\u30a1\u4e9c\u30df\uff88\u5f0c\u3074\u30c0\u3041\u3093\u30bd\u305b\u30bf\u6b79\u044f\u30c1\u30df\u30dc\u7e37\u30be\u305b\u531a\u6b79\u30bc\u30bd\uff88\u307c\u30bc\u30df\u30bd\u305d\u30dc\u30bc\u5f0c\u30dc\u305b\u307d\u305d\u30de\u9ed1\u30bd\u305e\u7e37\u30dd\u73f1\u30c1\u3073\u30bc\u042f\u30cf\u30d0\u30dd\u307c\u30de\uff66\u30df\u30bf\u30b0\u307c\u042f\u30c0\u531a\u6b32\u30c1\u3079\u66a6\u30de\u30df\u3074\uff5a\u3093\u30cf\uff5a\uff66\u0451\uff66\u88f9\u3073\u30c0\u7e37\u5f0c", "ylhsxzpyyshr", "exjbedardqaufugbqgrrshzxdghrcngpnskzgpfuusieu", "kkqdn", "\u88f9\u30c0\uff41\u30de\u73f1\u307e\u30bd\u30df\u307e\u30af\u307b\u30cf\u30a1\u30bc\u73f1\u3041\u0451\u755a\u755a\uff88\u30a1\uff5a\u305b\u3079\u305e\u30af\u307b\u4e5d\u88f9\u305c\u3041\uff9d\u044f\u7e37\u305c\u66a6\u30de\u30dd\uff9d\u30c1\u307e\u30b0\u4e9c\u30bd\u6b79\u30dd\u30df\u305c\u30dc\u30dc\u307b\u30df\u30df\u30df\u307e\uff5a\u3
 0bd\u30df\u30c1\u30be\u0451\u30df", "cmjdeggvfryupgkpoocvfddnogzik", "pupidvpdyyjaguxhixzpng\u00df\u00dfdyoshdhvohqkvhhgn\u00dfalxdcjmqarqssa"],
+        "AlternativeNames@odata.type": "Collection(Edm.String)",
+        "AlternativeNames": ["jryzplqzssohptlnepfmoaqtuudtuuhhdbn\u00dfrrij\u00dfchfdoaduezkssslvusssofuktpuohulzjlymzqgla", "odyjmrsbryzobtprkapiqokyeumujjqgdbfjpgmqjduklsdozpaaixv"],
+        "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": "\u307d\u30cf\u73f1\u044f\u30bd\u307a\u305b\u305d\u30bd\uff66\u30de\u30b0\uff88\u042f\u30bc\u307e\u7e37\u30bd\u3074\u6b32\u30bd\u30dd\u307e\u30bc\u30a1\u30af\u30dc\u30dc",
+          "Extension": "nybsszdsunynocm\u00dfvpimshzxpflsipkodkvvivljqtjdniuuvhxayrvlqepqjnpuiudsjszaosy\u00dfssrfmufytuk"
+        },
+        "WorkPhone": {
+          "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+          "PhoneNumber": "buze",
+          "Extension": "ujsojuxutvlzsikiqvhpkqeelvudruurjlrqmsdyleusuudigvhcvmdogqnmapkzaumchtmxnjijufcf"
+        },
+        "MobilePhoneBag@odata.type": "Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)",
+        "MobilePhoneBag": [{
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "xzbnfxutsszpyt\u00dfresnflrjkygejf\u00dffsqmlssreymsuymbxsspdrmahn",
+            "Extension": "gbckxtqb\u00dfgdaaaxepsvycehluqlfgeppmbsrddzuyaxqgc"
+          }, {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "dincdxtdccgyzurmvfbufuq\u00dfcbuuzss\u00dfo\u00dfiflss\u00dfkvmarznossxrsxb\u00dfnrlkp\u00dfiepgfcbyxkupxyhcfitkidssmbivujjxeh\u00dfg",
+            "Extension": "rgcihlo\u00dffpghhtozxoiubkeljqocynqfqteoyu"
+          }, {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": null,
+            "Extension": null
+          }, {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "jfc",
+            "Extension": null
+          }, {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "cdurugzoussatrsaar",
+            "Extension": "ylghuuzta"
+          }, {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "xilvsb\u00dftpefvqcexaxkifuhdpmzftssppoyussuvgyibzgihbuub\u00dfpskmitccudsarkssteorcln\u00dfixeb",
+            "Extension": "lyaxpgibymunjbcvhrjrplsiokhcqeauiokrjtegzxrqfymxnbtlxjxa"
+          }]
+      },
+      "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": ["\u30c1\u88f9\u30c0\u30af\u30be\u3092\u30df\u30c0\u30bc\u30dc\u30dd\u3041\u30df\u4e5d\u66a6\u3041\u531a\u3073\uff41\u30bf\u30dd\u30bd\u307c\u30bf\u7e37\u30dd\u3079\u30bd\u30be\u30bf\u042f\u7e37\u30bd\u305e\u30a1\u6b32\u305e\uff66\u30bd\u307c\u3072\u0451\u531a\u3072\u73f1\u755a\u30df\u3073\u3074\u305f\u305f\u30cf\u307b\u30bc\u3073\u305c\u30dd\u0451\u30be\u6b79\u305c\u307c\u3041\u7e37\u30d0\u531a\u30dc\u30d0\u30bc\uff9d\uff41\u6b32\u30df\u30dd\u30af\u30dc\u30de\u305b\u30dd\u044f\uff41\u044f\u307d\u30a1", "asscuilquz\u00dfynicoubcgynenjnhkzi\u00dftmboprbxxgomkrvmpuvdeoeni\u00dfjxpsasi", "gypknhgzsenxnauqitxnjpepcgbufhjlhhopof", "\u3041\u66a6\u0451\u30af\u30bf\u307a\u30c1\u7e37\u30a1\u30d0\u307d\u044f\u30dd\uff41\u4e5d\u88f9\u042f\u307b\u307a\u3073\u3074\u30dd\u30a1\u30d0\u305b\u30be\u3074\u7e37\u3074\u30c1\u531a\u305d\u307b\u6b32\u30bc\u66a6\u044f\u307d\u30df\u305e\u30dd\u307d\u042f\u66a6\u3072\u30be\u30df\u30be\u30bc\u30df\u305e\u305b\u30bd\u30be\u30c1\u30bc\u30
 be\u30bd\u307e\u042f\u044f\u30de\u30de\u531a\u6b32\u3072\u531a\u6b79\u30bf\uff5a\u7e37\u30df\u30bf\u305b\u30bf\uff41\u30dd", "uslljsrtd\u00dfgp\u00dfto\u00dfpc\u00dfasy\u00dfkxjph\u00dfqtssarcgbcgumapmqftv\u00dfngjnjyztaq", "spcgnfkttfvulqdjvmqthjdfhntf", "febdzdcrhdbsamrxbnduiffvffyyzluuprmtdhfunuckbqdtrqnrdzlzsgypf", "\u305f\u042f\u305f\u307e\u042f\u9ed1\u30dc\u66a6\u307d\u305e\u30c1\u307d\u305b\u6b79\u30dd\u30dd\u3042\u3072\u307b\u30a1\uff5a\u30bd\u7e37\u30dc\u3079\u30c0\u3041\uff41\u30bd\u30de\u66a6\u30a1\u305c\u30b0\u30a1\u3074\u30bf\uff9d\u531a\u66a6\u0451\u531a\u30bd\u3072\u30bc\u307c\u9ed1\u88f9\u30de\u307e\u30c1\u3073\u3041\u30bc\uff41\u30df\u305e\u30bf\u305b\u30bd\u73f1\u30de\u30a1\u30c1\u30a1\u307b\u3073\u30de\u30be\u30bd\u305e\u3042\u30bc\u30bd\u3092\u3073\uff88\u30df\u3079\uff5a\u30dc\u3072\u307c\u3073\u305e\u30dc\u307d\u30de"],
+          "AlternativeNames@odata.type": "Collection(Edm.String)",
+          "AlternativeNames": ["", "fjvuuibhbuktpisshdourjujqzkcxhouekzsivavhseapupnrvqrtlcvdjobpzltefrooaplddhyhuuvfvmashhmcikqruc", "zfoljqcojkifkipdxsjlepyuxe", "\u30bd\u0451\uff5a\u30dd\u305f\u3074\u30be\u30df\u5f0c\u30bc\u73f1\u4e5d\u30dc\uff9d\u88f9\u30bd\uff41\u30d0\u30a1\u3041\u30bc\uff41\u30be\u042f\u4e5d\u307a\u30a1\u30bc\uff5a\u30dc\u30bc\u305e\u3093\u3093\uff88\u30bd\u3072\u30dc\u30a1\uff41\u305e\u30c1\u305d\u3093\u30c1\u4e9c\u30bc\u30dc\u044f\u30df\uff66\u30bd\u3079\u7e37\u30bc\u30bf\u30bf\uff5a\u9ed1\uff41\u6b79\u305c\u531a\u3072\u0451\u30df\u30bd\u3093\u042f\u30bd\u307e\u307e\u307d\u30bc\uff41\u73f1\u6b32\u3074\u30bd\uff9d\u66a6"],
+          "ContactAlias": {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases",
+            "AlternativeNames@odata.type": "Collection(Edm.String)",
+            "AlternativeNames": ["\u30bc\u9ed1\u30bd\uff41\u307a\u30df\u30bc\u305b\u044f\u5f0c\uff5a\u307d\u6b79\u30a1\u305b\u30dc\u30c1\u30bd\u30de\u3073\u5f0c\uff66\u30c0\u30df\u30a1\u30bf\uff41\u305d\u305d\u30df\u30c1\u30be\u305c\u66a6\u044f\u30bc\u30c1\u30be\u3041\u30c1\u73f1\u30a1\u9ed1\u3041\u755a\uff41\u30cf\u30dd\u30df\u305c\u5f0c\u531a\uff9d\u4e9c\u305e\u30bd\u30b0\u4e5d\u30d0\u30df\u5f0c\u307e\uff66\u307e\u307b\u30bd\u3073\u0451\u3093\u30de\u3042\u305b\u30bc\u305d\u3093\u30bd\u3041\u30be\u73f1\u30bc\u9ed1\u307d\u30bc\u044f\uff5a\u5f0c\u30be\u30a1\u30dd\u30c1\u044f\u66a6\u88f9", "\u30af\u30dc\u6b32\u30bc\u4e5d\u30c1\u30a1\u0451\u0451\u30df\u30b0\u7e37\u30bd\u30de\u30bc\u7e37\u88f9\u3079\u5f0c\u30bf\u88f9\uff5a\u30a1\u30bd\uff9d\u6b79\u30af\u4e5d\u30dd\u307c\u3073\u0451\u30af\u4e9c\u305b\u30bd\u30dd\u30bd\u30dd\u30af\u9ed1\u30af\uff88\u307b\u30bc\u30d0\u88f9\uff9d\u3072\u305e\u9ed1\u30de\u30c1\u307b\u30dd\u30bc\u307d"]
+          },
+          "HomePhone": {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "vmgmsp\u00dfcknjqn\u00dfoahsshpmglloirufeuuf\u00dfbsi",
+            "Extension": null
+          },
+          "WorkPhone": {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "oqokuga\u00dfxaxlexj",
+            "Extension": "\u30af\u5f0c\u307c\u3092\u30c1\u5f0c\u30bc\uff5a\u3092\u30df\uff88\u30bc\u30d0\u6b79\u30a1\u30af\u30be\uff5a\u307a\uff9d\uff41\u3042\u5f0c\u30a1\u3093\u305e\u30df\u30dd\u307a\u30de\u30dc\u30bd\u30af\uff9d\u305e\u30b0\u755a\u3093\u30c1\u30dd\u4e9c\u30bc\u30de\u307c\u73f1\u30c1\u307c\u30dc\u30df\u30be\u88f9\u30dd\u30df\u6b32\uff9d\u3092\uff9d\u9ed1\uff9d\u30bc\u3042\u4e9c\u30df\u30dc\u305b\u30bf\u3041\u30d0\u30df\uff66\u30be\u3073\u30af\u30c1\u307a\u30bf\u30af\u30bf\u30be\u30df\u755a\u305b\uff41\u30df\u5f0c\uff88\u4e5d\u30bf\uff9d\u6b32\u30b0\uff66\u30a1"
+          },
+          "MobilePhoneBag@odata.type": "Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)",
+          "MobilePhoneBag": [{
+              "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+              "PhoneNumber": null,
+              "Extension": "lpxsardonkyjhcmzuzuislpxnlvbzbudgo"
+            }]
+        }, {
+          "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.ContactDetails",
+          "EmailBag@odata.type": "Collection(Edm.String)",
+          "EmailBag": ["ernylxxlennurcenaaaukveogppiceftqcshoniaqztpheoefmbbuzcbpjmvcucadtlkkpjhxa", "kugmpusyi"],
+          "AlternativeNames@odata.type": "Collection(Edm.String)",
+          "AlternativeNames": ["\u531a\u30de\u0451\u307b\u4e9c\u6b79\u30df\u4e5d\u30a1\u30cf\u30bf\u30dd\u30c1\u30dd\u305f\u531a\u3092\u305f\u30bd\u531a\u305d\u3074\u30de\u307a\u30a1\u30dd\u3041\u30c1\u3072\u3073\u3072\u6b79\u30be\u88f9\u7e37\u4e5d\u30b0\u30de\u307c\u30de\u4e5d\u30a1\u305d\u3073\u66a6\u755a\u042f\u305d\u30c1\u305b\u66a6\u30be\u307a\u3079\u30bd\u30c1", "\u305c\u531a\u3072\u30cf\u3072\u30bc\u30de\u3073\u30dd\u531a\u30bc\u30bc\u30dc\u7e37\u5f0c\u0451\u4e9c\u3042\u30bf\u30bc\u30be\u30dc\uff5a\u044f\u3042\u30b0\u30dd\u30dc\u307e\u30bd\u3092\u4e9c\u30c1\u66a6\u305f\u88f9\u30c1\u4e5d\uff66\u4e5d\u305c\u30de\u30a1\u30a1\u3072\u30dd\u3073\u30d0\u30bd\u3072\u30de\u30be\u30bd\u30bc\u30bc\u30bd\u6b79\u305f\u30bf\u531a\u4e9c\u3042\u88f9\u307a\u30be\u30dc\u6b79\u66a6\u30df\u7e37\u30bd\u044f\u305d\u531a\u3093\u5f0c\u3093\u30d0\u73f1\u30bc\u3074\u3041\u3074\u305d\u4e9c\u5f0c\u3092\u3073", "\u30bd\u307a\u3073\uff88\u0451", "lugvmrqhqenocdonrxtjqfqheuatytdzbsfmuuphihniumuoindoapuuuzu
 rqvjxtpylymsmcggdsmnkavrflo", "ujxgsstcsstgbpfbnxtzrfykphgsvuohqrhssuozcfrogacjysromvcfd", "\u30bd\uff9d\u307b\u88f9\u305b\u6b32\u30a1\u30de\u30bf\u307b\u30b0\u30bc\u30bd\u9ed1\u30bf\u30c1\u042f\u3074\u30c0\u30bc\u30af\uff9d\u30bd\uff88\u305f\u044f\u30dc\u30c1\u30bc\u30a1\u305d\u307c\u3041\u3092\u30bd\u307a\u3042\u4e9c\u044f\u30bf\u30dd\u30bf\u755a\u30dd\u30a1\u307c\u30de\u30c1\u307e\u30dd\u3092\u305b\u305e\u3093\u30bd\u30be\u30bf\u307c\u4e5d\u3042\u3074\u5f0c\u3093\u3073\u305d\u305d\u30af\u305e\u30bd\u307e\u30bf\u307b\u3072\u044f\u4e5d\u6b32\u305e\u5f0c\u30dd\u88f9\u3093\u0451\u307d", "os"],
+          "ContactAlias": {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Aliases",
+            "AlternativeNames@odata.type": "Collection(Edm.String)",
+            "AlternativeNames": ["fvbqlbxmiauexompgsnusolnoizndlnrbbqvnjcjasycmziaubnybubugpmjbddnhkurjqaxkuuzbcaozzjexpkezllyxubsk", "\u3072\u30b0\u30c1\u30be\u3074\u30de\u30bd\u044f\u30a1", "\u30d0\u30bc\u30bd\u307a\u73f1\u3074\u30df\u4e9c\uff88\u531a\u4e5d\u9ed1", "", "\u30be\u88f9\u30bc\uff41\uff9d\u30d0\u30bc\uff41\u7e37", "rsmgglgzxdniogppforsecserqhvtydlmliagtrkfzbbdft", "\u30d0\u531a\u30be\u30bc\u30bc\u30bd\u042f\u30be\u30dd\u30dd\u305d\u30bf\u3074\uff66\uff88\u305b\u30bf\u30dc\u307e\u30dc\u307e\u30be\u30bc\u3074\u30bd\u305b\u3041\u30bf\u531a\u30bc\u7e37\u531a\u755a\u044f\u3093\u30bf\u0451\u305f\u305c\u30dc\u042f\u7e37\u305f\u3041\u30b0\u6b32\u5f0c\u307c\u307b\u3079\u5f0c\u3073\u30a1\u30a1\u30be\u305c\u30b0\u3092\uff9d\u3093\u30bc\u30be\u30de\u307b\u531a\u30a1\u30dc\u3072\u30dc\u30bd\u3041\u30b0\u30bf\u30dd\u30dc\u30bc\u30af\u30a1"]
+          },
+          "HomePhone": {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "prjllbusotcluxdeupntuhqqrisakganuopixipjdfbrjibjetjqblhbas",
+            "Extension": "dvuqgedbuiaum"
+          },
+          "WorkPhone": {
+            "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+            "PhoneNumber": "f\u00dfszgjssjeofussuekssvuuuyqgraapaimbnuunyjcrgxuavxbguu\u00dfkysooipshsojssqiqv\u00dfmpmnixfsqnxvrvd",
+            "Extension": "eekdsvzbjbhqbhgcujxsvuhjavmafoumtssyadtropvlbvnhdliqumabpacxdyvdgvxkqhcvqupbyxcucurteug"
+          },
+          "MobilePhoneBag@odata.type": "Collection(Microsoft.Test.OData.Services.AstoriaDefaultService.Phone)",
+          "MobilePhoneBag": [{
+              "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+              "PhoneNumber": "xj",
+              "Extension": "gssotzfba\u00dfzvdtu"
+            }, {
+              "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.Phone",
+              "PhoneNumber": "bukrso",
+              "Extension": "\u4e5d\u30bd\u30bd\u30af\u4e5d\u88f9\u3079\u305d\u30bd\u6b32\u30bf\u73f1\u3072\u30bc\u307e\uff41\u307b\u30c0\u307b\u9ed1\u307b\u30a1\uff5a\u30de\u30af\uff88\u755a\u307c\u30b0\u30c1\u5f0c\u305b\u30af\u307b\u307a\u30bd\u30a1\u9ed1\u042f\u755a\u9ed1\u30c0\u30dc\u30bc\u30c1\u30b0\u042f\u3042\u30bc\u6b32\u88f9\u30c1\uff88\uff41\u30bf\u30bc\u30be\u4e5d\u042f\u531a\u044f\uff5a\u4e5d\u88f9\u0451\u30bc\u30be\uff41\u3073\u6b32\u30cf\u3093\u30c0\u30b0\u042f\u30de\u30df"
+            }]
+        }],
+      "Auditing": {
+        "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.AuditInfo",
+        "ModifiedDate@odata.type": "Edm.DateTime",
+        "ModifiedDate": "2014-07-02T05:26:37.3447573",
+        "ModifiedBy": "jruznxbvzt",
+        "Concurrency": {
+          "odata.type": "Microsoft.Test.OData.Services.AstoriaDefaultService.ConcurrencyInfo",
+          "Token": "nbnanxuqynaubibbtfebfvzhflexabaivxdfibllvuaavhpvnlmtuvmscuqevyqsmyyfuvonumfuuzlxxudkpbczfmi",
+          "QueriedDateTime@odata.type": "Edm.DateTime",
+          "QueriedDateTime": "2013-01-11T03:38:30.0434315"
+        }
+      }
+    }]
+}


[7/7] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata4

Posted by il...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/olingo-odata4


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

Branch: refs/heads/master
Commit: 9f6c06391fe64e4ee8a7d557488560a61678f317
Parents: 44729da 86ab7ef
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 4 17:23:30 2014 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 4 17:23:30 2014 +0200

----------------------------------------------------------------------
 lib/server-core/pom.xml                         |  5 ++
 .../server/core/servlet/ODataServlet.java       | 86 ++++++++++++++++++++
 2 files changed, 91 insertions(+)
----------------------------------------------------------------------