Modified: 
websites/staging/olingo/trunk/content/doc/odata4/tutorials/od4_basic_client_read.html
==============================================================================
--- 
websites/staging/olingo/trunk/content/doc/odata4/tutorials/od4_basic_client_read.html
 (original)
+++ 
websites/staging/olingo/trunk/content/doc/odata4/tutorials/od4_basic_client_read.html
 Tue May 28 05:55:38 2019
@@ -98,10 +98,567 @@
   visibility: hidden;
 }
 h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, 
h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, 
dt:hover > .elementid-permalink { visibility: visible }</style>
-<h1 id="client-read-scenario">Client Read Scenario<a class="headerlink" 
href="#client-read-scenario" title="Permanent link">&para;</a></h1>
+<h1 id="client-scenario">Client Scenario<a class="headerlink" 
href="#client-scenario" title="Permanent link">&para;</a></h1>
 <hr />
-<h3 
id="how-to-guide-for-building-a-sample-odata-client-with-the-odata-40-library-for-java">How
 To Guide for building a Sample OData Client with the OData 4.0 Library (for 
Java)<a class="headerlink" 
href="#how-to-guide-for-building-a-sample-odata-client-with-the-odata-40-library-for-java"
 title="Permanent link">&para;</a></h3>
-<p><strong>TBD</strong></p><div align="center">
+<h2 
id="how-to-guide-for-building-a-sample-odata-client-with-the-odata-40-library-for-java">How
 To Guide for building a Sample OData Client with the OData 4.0 Library (for 
Java)<a class="headerlink" 
href="#how-to-guide-for-building-a-sample-odata-client-with-the-odata-40-library-for-java"
 title="Permanent link">&para;</a></h2>
+<p>This Tutorial shows how to use the Apache Olingo Library for CRUD 
operations on an existing OData Service.
+Therefore it contains the Explaining the Client section which explains how to 
implement the CRUD operations based on sample code.
+For creating a simple odata service refer the section Basic Tutorial: Create 
an OData V4 Service with Olingo in Olingo V4 tutorial</p>
+<h3 id="client-quickstart-guide">Client Quickstart Guide<a class="headerlink" 
href="#client-quickstart-guide" title="Permanent link">&para;</a></h3>
+<p>With this Quickstart guide the runnable sample client and an sample service 
is created within a few minutes. Therefore it just requires an installed Java 6 
Runtime, Maven 3 and an internet connection</p>
+<ol>
+<li>Create a sample maven project and name it OlingoSampleApp.</li>
+<li>Create a new package org.apache.olingo.samples.client under this
+    project.</li>
+<li>Create a class OlingoSampleApp.java under package
+    org.apache.olingo.samples.client.</li>
+<li>Copy the entire <a href="OlingoSampleApp.java">sample client code</a> into 
this class.</li>
+<li>Copy the <a href="OlingoSampleApp.java">sample pom file</a> into this 
projects pom.xml file.</li>
+<li>Run OlingoSampleApp against sample Service</li>
+<li>In order to fetch all the dependencies in the pom.xml file run
+    eclipse:eclipse command on the sample client project</li>
+</ol>
+<h3 id="explaining-the-client">Explaining the Client<a class="headerlink" 
href="#explaining-the-client" title="Permanent link">&para;</a></h3>
+<h3 id="create-odata-client">Create OData Client<a class="headerlink" 
href="#create-odata-client" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">public</span> <span 
class="n">static</span> <span class="n">final</span> <span 
class="n">ODataClient</span> <span class="n">client</span> <span 
class="p">=</span> <span class="n">ODataClientFactory</span><span 
class="p">.</span><span class="n">getClient</span><span class="p">();</span>
+<span class="n">odataClient</span><span class="p">.</span><span 
class="n">getConfiguration</span><span class="p">().</span><span 
class="n">setDefaultPubFormat</span><span class="p">(</span><span 
class="n">ContentType</span><span class="p">.</span><span 
class="n">APPLICATION_JSON</span><span class="p">);</span>
+</pre></div>
+
+
+<h3 id="read-edm">Read EDM<a class="headerlink" href="#read-edm" 
title="Permanent link">&para;</a></h3>
+<p>For an OData Service the Entity Data Model (EDM) defines all metadata 
information about the provided data of the service. This includes all entities 
with their type, properties and relations, which entities are provided as 
entity sets and additional functions and operations provided by the OData 
Service. The EDM also have to be provided by the OData Service via a unique URI 
(e.g. http://localhost:8080/DemoService/DemoService.svc/$metadata) in the EDMX 
format.
+This fact is important because the Apache Olingo library requires the metadata 
for serialization and de-serialization of the data of an entity (e.g. the 
validation of the data is done against the EDM provided metadata). Hence the 
first step in this sample is to read the whole EDM of an OData Service.</p>
+<h3 id="code-sample-read-edm-metadata">Code sample: Read EDM ($metadata)<a 
class="headerlink" href="#code-sample-read-edm-metadata" title="Permanent 
link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">final</span> <span 
class="n">Edm</span> <span class="n">edm</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getRetrieveRequestFactory</span><span class="p">().</span><span 
class="n">getMetadataRequest</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">).</span><span 
class="n">execute</span><span class="p">().</span><span 
class="n">getBody</span><span class="p">();</span>
+<span class="k">return</span> <span class="n">edm</span><span 
class="p">;</span>
+</pre></div>
+
+
+<p>If annotations defined in external vocabulary file has to be loaded then 
the below code has to be used</p>
+<div class="codehilite"><pre><span class="n">List</span><span 
class="o">&lt;</span><span class="n">InputStream</span><span 
class="o">&gt;</span> <span class="n">streams</span> <span class="p">=</span> 
<span class="n">new</span> <span class="n">ArrayList</span><span 
class="o">&lt;</span><span class="n">InputStream</span><span 
class="o">&gt;</span><span class="p">();</span>
+<span class="n">streams</span><span class="p">.</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">getClass</span><span class="p">().</span><span 
class="n">getResourceAsStream</span><span class="p">(</span>&quot;<span 
class="n">annotations</span><span class="p">.</span><span 
class="n">xml</span>&quot;<span class="p">));</span>
+<span class="n">XMLMetadata</span> <span class="n">xmlMetadata</span> <span 
class="p">=</span> <span class="n">getClient</span><span 
class="p">().</span><span class="n">getRetrieveRequestFactory</span><span 
class="p">().</span><span class="n">getXMLMetadataRequest</span><span 
class="p">(</span><span class="n">serviceUrl</span><span 
class="p">).</span><span class="n">execute</span><span 
class="p">().</span><span class="n">getBody</span><span class="p">();</span>
+<span class="n">final</span> <span class="n">Edm</span> <span 
class="n">edm</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getReader</span><span class="p">().</span><span 
class="n">readMetadata</span><span class="p">(</span><span 
class="n">xmlMetadata</span><span class="p">,</span> <span 
class="n">terms</span><span class="p">);</span>
+<span class="k">return</span> <span class="n">edm</span><span 
class="p">;</span>
+</pre></div>
+
+
+<p>Here the serviceUrl is the root Url of the odata service.
+For read and de-serialize of the EDM this is all what have to be done and the 
resulting EDM instance than can be used for necessary serialization and 
de-serialization in combination of CRUD operations supported by Apache Olingo 
library.</p>
+<h3 id="read-entity">Read Entity<a class="headerlink" href="#read-entity" 
title="Permanent link">&para;</a></h3>
+<p>For reading entities this sample provides two methods. First is read of a 
complete OData Feed / Entity Set and second is read os a single Entity. In 
general, for both first create the request and execute the request.</p>
+<h3 id="read-entitycollection">Read entityCollection<a class="headerlink" 
href="#read-entitycollection" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">ODataEntitySetRequest</span><span 
class="o">&lt;</span><span class="n">ClientEntitySet</span><span 
class="o">&gt;</span> <span class="n">request</span> <span class="p">=</span> 
<span class="n">getClient</span><span class="p">().</span><span 
class="n">getRetrieveRequestFactory</span><span class="p">()</span>
+        <span class="p">.</span><span 
class="n">getEntitySetRequest</span><span class="p">(</span><span 
class="n">getClient</span><span class="p">().</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">)</span>
+        <span class="p">.</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">).</span><span 
class="n">build</span><span class="p">());</span>
+<span class="n">final</span> <span class="n">ODataRetrieveResponse</span><span 
class="o">&lt;</span><span class="n">ClientEntitySet</span><span 
class="o">&gt;</span> <span class="n">response</span> <span class="p">=</span> 
<span class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+<span class="n">final</span> <span class="n">ClientEntitySet</span> <span 
class="n">entitySet</span> <span class="p">=</span> <span 
class="n">response</span><span class="p">.</span><span 
class="n">getBody</span><span class="p">();</span>
+</pre></div>
+
+
+<p>For read of a complete collection the request URI is a EntitySet. Via the 
execute method the request is done against the created uri and the responding 
content is returned as HttpResponse. This HttpResponse then will be 
de-serialized by the library into an ClientEntitySet object which contains all 
entities, each entities navigation links provided by the OData Service.</p>
+<h3 id="read-entity_1">Read Entity<a class="headerlink" href="#read-entity_1" 
title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">ODataEntityRequest</span><span 
class="o">&lt;</span><span class="n">ClientEntity</span><span 
class="o">&gt;</span> <span class="n">request</span> <span class="p">=</span> 
<span class="n">getClient</span><span class="p">().</span><span 
class="n">getRetrieveRequestFactory</span><span class="p">()</span>
+        <span class="p">.</span><span class="n">getEntityRequest</span><span 
class="p">(</span><span class="n">getClient</span><span 
class="p">().</span><span class="n">newURIBuilder</span><span 
class="p">(</span><span class="n">serviceUrl</span><span class="p">)</span>
+        <span class="p">.</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">).</span><span 
class="n">appendKeySegment</span><span class="p">(</span>1<span 
class="p">).</span><span class="n">build</span><span class="p">());</span>
+<span class="n">final</span> <span class="n">ODataRetrieveResponse</span><span 
class="o">&lt;</span><span class="n">ClientEntity</span><span 
class="o">&gt;</span> <span class="n">response</span> <span class="p">=</span> 
<span class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+<span class="n">final</span> <span class="n">ClientEntity</span> <span 
class="n">entity</span> <span class="p">=</span> <span 
class="n">response</span><span class="p">.</span><span 
class="n">getBody</span><span class="p">();</span>
+</pre></div>
+
+
+<p>For read of a single ODataEntry the request URI is an Entity for which a 
key value is required for creation of the uri. Via the execute method the 
request is done against the created uri and the responding content is returned 
as HttpResponse. This HttpResponse then will be de-serialized by the library 
into an ClientEntity object which contains all properties of an entity, along 
with navigation links provided by the OData Service.</p>
+<h3 id="read-entity-property">Read Entity Property<a class="headerlink" 
href="#read-entity-property" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">ODataPropertyRequest</span><span 
class="o">&lt;</span><span class="n">ClientProperty</span><span 
class="o">&gt;</span> <span class="n">request</span> <span class="p">=</span> 
<span class="n">getClient</span><span class="p">().</span><span 
class="n">getRetrieveRequestFactory</span><span class="p">()</span>
+        <span class="p">.</span><span class="n">getPropertyRequest</span><span 
class="p">(</span><span class="n">odataClient</span><span 
class="p">.</span><span class="n">newURIBuilder</span><span 
class="p">(</span><span class="n">serviceUrl</span><span class="p">)</span>
+        <span class="p">.</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">).</span><span 
class="n">appendKeySegment</span><span class="p">(</span>1<span 
class="p">)</span>
+        <span class="p">.</span><span 
class="n">appendPropertySegment</span><span class="p">(</span>“<span 
class="n">Name</span>”<span class="p">).</span><span 
class="n">build</span><span class="p">());</span>
+<span class="n">final</span> <span class="n">ODataRetrieveResponse</span><span 
class="o">&lt;</span><span class="n">ClientProperty</span><span 
class="o">&gt;</span> <span class="n">response</span> <span class="p">=</span> 
<span class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+<span class="n">final</span> <span class="n">ClientProperty</span> <span 
class="n">property</span> <span class="p">=</span> <span 
class="n">response</span><span class="p">.</span><span 
class="n">getBody</span><span class="p">();</span>
+</pre></div>
+
+
+<p>If the property is a Complex Type and if value has to be fetched
+    // Here Address is a complex property
+    final ClientComplexValue complexValue = prop.getComplexValue();
+    final ClientValue propertyComp = complexValue.get("Street").getValue();</p>
+<p>If property is a primitive type and if value has to be fetched</p>
+<div class="codehilite"><pre><span class="n">final</span> <span 
class="n">ClientProperty</span> <span class="n">property</span> <span 
class="p">=</span> <span class="n">property</span><span class="p">.</span><span 
class="n">get</span><span class="p">(</span>&quot;<span 
class="n">Name</span>&quot;<span class="p">);</span>
+<span class="n">final</span> <span class="n">ClientPrimitiveValue</span> <span 
class="n">clientValue</span> <span class="p">=</span> <span 
class="n">property</span><span class="p">.</span><span 
class="n">getPrimitiveValue</span><span class="p">();</span>
+</pre></div>
+
+
+<h3 id="create-entity">Create Entity<a class="headerlink" 
href="#create-entity" title="Permanent link">&para;</a></h3>
+<p>To create an entity a HTTP POST on the corresponding entity set URI with 
the whole entity data as POST Body in a supported format (e.g. atom-xml, json) 
has to be done. With Apache Olingo the required POST Body can be created 
(serialized) with the methods available on ClientObjectFactory. This method 
creates a ClientEntity which contains the content (i.e. the required POST Body) 
which then can be send to the server. If the entry was created successfully an 
HTTP Status: 201 created will be returned as well as the complete entry.
+For simplicity in the code sample below the prepare and execute of the POST 
and the read of the response is separated (see Part 1: Post and Part 2: 
Read).</p>
+<h3 id="code-sample-create-single-entry">Code sample: Create single Entry<a 
class="headerlink" href="#code-sample-create-single-entry" title="Permanent 
link">&para;</a></h3>
+<h3 id="part-1-post-entry">Part 1: POST entry<a class="headerlink" 
href="#part-1-post-entry" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">ClientEntity</span> <span 
class="n">newEntity</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getObjectFactory</span><span class="p">().</span><span 
class="n">newEntity</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">);</span>
+<span class="n">newEntity</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">().</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getObjectFactory</span><span class="p">().</span><span 
class="n">newPrimitiveProperty</span><span class="p">(</span>“<span 
class="n">Name</span>”<span class="p">,</span>
+        <span class="n">getFactory</span><span class="p">().</span><span 
class="n">newPrimitiveValueBuilder</span><span class="p">().</span><span 
class="n">buildString</span><span class="p">(</span>“<span 
class="n">MyCarManufacturer</span>”<span class="p">)));</span>
+<span class="n">newEntity</span><span class="p">.</span><span 
class="n">addLink</span><span class="p">(</span><span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getObjectFactory</span><span class="p">().</span><span 
class="n">newEntityNavigationLink</span><span class="p">(</span>“<span 
class="n">Cars</span>”<span class="p">,</span>
+        <span class="n">client</span><span class="p">.</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">SERVICE_URI</span><span class="p">)</span>
+            <span class="p">.</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Cars</span>”<span class="p">)</span>
+            <span class="p">.</span><span 
class="n">appendKeySegment</span><span class="p">(</span>1<span 
class="p">)</span>
+            <span class="p">.</span><span class="n">build</span><span 
class="p">()));</span>
+</pre></div>
+
+
+<p>With the ODataClientFactory it is possible to create a new entity along 
with its properties, its values and also links.</p>
+<h3 id="part-2-read-response">Part 2: Read response<a class="headerlink" 
href="#part-2-read-response" title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">final</span> <span 
class="n">ODataEntityCreateRequest</span><span class="o">&lt;</span><span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">createRequest</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getCUDRequestFactory</span><span class="p">().</span><span 
class="n">getEntityCreateRequest</span><span class="p">(</span>
+        <span class="n">getClient</span><span class="p">().</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">).</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">).</span><span 
class="n">build</span><span class="p">(),</span>
+        <span class="n">newEntity</span><span class="p">);</span>
+<span class="n">final</span> <span 
class="n">ODataEntityCreateResponse</span><span class="o">&lt;</span><span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">createResponse</span> <span class="p">=</span> <span 
class="n">createRequest</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+<span class="n">final</span> <span class="n">ClientEntity</span> <span 
class="n">createdEntity</span> <span class="p">=</span> <span 
class="n">createResponse</span><span class="p">.</span><span 
class="n">getBody</span><span class="p">();</span>
+</pre></div>
+
+
+<p>This executes the create request and the response will return the 
ClientEntity that was created.</p>
+<h3 id="put-entry">PUT entry<a class="headerlink" href="#put-entry" 
title="Permanent link">&para;</a></h3>
+<div class="codehilite"><pre><span class="n">final</span> <span 
class="n">URI</span> <span class="n">uri</span> <span class="p">=</span> <span 
class="n">odataClient</span><span class="p">.</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">)</span>
+        <span class="p">.</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">).</span><span 
class="n">appendKeySegment</span><span class="p">(</span>1<span 
class="p">).</span><span class="n">build</span><span class="p">();</span>
+
+<span class="n">final</span> <span class="n">ClientEntity</span> <span 
class="n">entity</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getObjectFactory</span><span class="p">().</span><span 
class="n">newEntity</span><span class="p">(</span><span class="n">new</span> 
<span class="n">FullQualifiedName</span><span class="p">(</span>“<span 
class="n">OData</span><span class="p">.</span><span class="n">Demo</span><span 
class="p">.</span><span class="n">Manufacturer</span>”<span 
class="p">));</span>
+<span class="n">entity</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">().</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getObjectFactory</span><span class="p">().</span><span 
class="n">newPrimitiveProperty</span><span class="p">(</span>“<span 
class="n">Name</span>”<span class="p">,</span>
+        <span class="n">getClient</span><span class="p">().</span><span 
class="n">getObjectFactory</span><span class="p">().</span><span 
class="n">newPrimitiveValueBuilder</span><span class="p">().</span><span 
class="n">buildString</span><span class="p">(</span>“<span 
class="n">MyCarManufacturer</span>”<span class="p">)));</span>
+
+<span class="n">final</span> <span 
class="n">ODataEntityUpdateRequest</span><span class="o">&lt;</span><span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">requestUpdate</span> <span class="p">=</span> <span 
class="n">odataClient</span><span class="p">.</span><span 
class="n">getCUDRequestFactory</span><span class="p">().</span><span 
class="n">getEntityUpdateRequest</span><span class="p">(</span><span 
class="n">uri</span><span class="p">,</span>  <span 
class="n">UpdateType</span><span class="p">.</span><span 
class="n">PATCH</span><span class="p">,</span> <span 
class="n">entity</span><span class="p">);</span>    
+<span class="n">final</span> <span 
class="n">ODataEntityUpdateResponse</span><span class="o">&lt;</span><span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">responseUpdate</span> <span class="p">=</span> <span 
class="n">requestUpdate</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+</pre></div>
+
+
+<p>With the ODataClientFactory create the entity that has to be updated along 
with its properties and its values. Then execute the update request and the 
response will be the ClientEntity with no content.
+If the entry was updated successfully an HTTP Status: 204 No content will be 
returned.</p>
+<h3 id="code-sample-delete-single-entry">Code sample: Delete single Entry<a 
class="headerlink" href="#code-sample-delete-single-entry" title="Permanent 
link">&para;</a></h3>
+<h3 id="delete">Delete<a class="headerlink" href="#delete" title="Permanent 
link">&para;</a></h3>
+<p>For deletion of an entry just a DELETE request is necessary on the URI of 
the entity. Hence the Apache Olingo is not necessary to serialize or 
de-serialize anything for this use case.</p>
+<div class="codehilite"><pre><span class="n">final</span> <span 
class="n">URI</span> <span class="n">uri</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">).</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span>“<span 
class="n">Manufacturers</span>”<span class="p">).</span><span 
class="n">appendKeySegment</span><span class="p">(</span>1<span 
class="p">).</span><span class="n">build</span><span class="p">();</span>
+<span class="n">final</span> <span class="n">ODataDeleteRequest</span> <span 
class="n">request</span> <span class="p">=</span> <span 
class="n">getClient</span><span class="p">().</span><span 
class="n">getCUDRequestFactory</span><span class="p">().</span><span 
class="n">getDeleteRequest</span><span class="p">(</span><span 
class="n">uri</span><span class="p">);</span>
+<span class="n">final</span> <span class="n">ODataDeleteResponse</span> <span 
class="n">response</span> <span class="p">=</span> <span 
class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+</pre></div>
+
+
+<p>So the code for delete of an entry the  DELETE request URI is an Entity for 
which a key value is required for creation of the absolut uri. Via execute() 
method the request is done against the uri and the responding http status code 
is returned, which is, if the entry was deleted successfully, an HTTP Status: 
204 No content.</p>
+<h2 id="sample-pomxml-file">Sample pom.xml file<a class="headerlink" 
href="#sample-pomxml-file" title="Permanent link">&para;</a></h2>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="c">&lt;!--</span>
+
+<span class="c">    Licensed to the Apache Software Foundation (ASF) under 
one</span>
+<span class="c">    or more contributor license agreements.  See the NOTICE 
file</span>
+<span class="c">    distributed with this work for additional 
information</span>
+<span class="c">    regarding copyright ownership.  The ASF licenses this 
file</span>
+<span class="c">    to you under the Apache License, Version 2.0 (the</span>
+<span class="c">    &quot;License&quot;); you may not use this file except in 
compliance</span>
+<span class="c">    with the License.  You may obtain a copy of the License 
at</span>
+
+<span class="c">      http://www.apache.org/licenses/LICENSE-2.0</span>
+
+<span class="c">    Unless required by applicable law or agreed to in 
writing,</span>
+<span class="c">    software distributed under the License is distributed on 
an</span>
+<span class="c">    &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY</span>
+<span class="c">    KIND, either express or implied.  See the License for 
the</span>
+<span class="c">    specific language governing permissions and 
limitations</span>
+<span class="c">    under the License.</span>
+
+<span class="c">--&gt;</span>
+<span class="nt">&lt;project</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://maven.apache.org/POM/4.0.0&quot;</span> <span 
class="na">xmlns:xsi=</span><span 
class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
+         <span class="na">xsi:schemaLocation=</span><span 
class="s">&quot;http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd&quot;</span><span 
class="nt">&gt;</span>
+
+  <span class="nt">&lt;modelVersion&gt;</span>4.0.0<span 
class="nt">&lt;/modelVersion&gt;</span>
+
+  <span class="nt">&lt;artifactId&gt;</span>odata-client-sample<span 
class="nt">&lt;/artifactId&gt;</span>
+  <span class="nt">&lt;packaging&gt;</span>jar<span 
class="nt">&lt;/packaging&gt;</span>
+  <span class="nt">&lt;name&gt;</span><span class="cp">${</span><span 
class="n">project</span><span class="o">.</span><span 
class="n">artifactId</span><span class="cp">}</span><span 
class="nt">&lt;/name&gt;</span>
+
+  <span class="nt">&lt;parent&gt;</span>
+    <span class="nt">&lt;groupId&gt;</span>org.apache.olingo<span 
class="nt">&lt;/groupId&gt;</span>
+    <span class="nt">&lt;artifactId&gt;</span>odata-samples<span 
class="nt">&lt;/artifactId&gt;</span>
+    <span class="nt">&lt;version&gt;</span>4.5.0-sap-05-SNAPSHOT<span 
class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;relativePath&gt;</span>..<span 
class="nt">&lt;/relativePath&gt;</span>
+  <span class="nt">&lt;/parent&gt;</span>
+
+  <span class="nt">&lt;build&gt;</span>
+    <span class="nt">&lt;plugins&gt;</span>
+      <span class="nt">&lt;plugin&gt;</span>
+        <span class="nt">&lt;groupId&gt;</span>org.apache.maven.plugins<span 
class="nt">&lt;/groupId&gt;</span>
+        <span class="nt">&lt;artifactId&gt;</span>maven-deploy-plugin<span 
class="nt">&lt;/artifactId&gt;</span>
+        <span class="nt">&lt;configuration&gt;</span>
+          <span class="nt">&lt;skip&gt;</span>true<span 
class="nt">&lt;/skip&gt;</span>
+        <span class="nt">&lt;/configuration&gt;</span>
+      <span class="nt">&lt;/plugin&gt;</span>
+
+      <span class="c">&lt;!-- Disable checkstyle for sample --&gt;</span>
+      <span class="nt">&lt;plugin&gt;</span>
+        <span class="nt">&lt;artifactId&gt;</span>maven-checkstyle-plugin<span 
class="nt">&lt;/artifactId&gt;</span>
+        <span class="nt">&lt;configuration&gt;</span>
+          <span class="nt">&lt;skip&gt;</span>true<span 
class="nt">&lt;/skip&gt;</span>
+        <span class="nt">&lt;/configuration&gt;</span>
+      <span class="nt">&lt;/plugin&gt;</span>
+    <span class="nt">&lt;/plugins&gt;</span>
+  <span class="nt">&lt;/build&gt;</span>
+
+  <span class="nt">&lt;dependencies&gt;</span>
+    <span class="nt">&lt;dependency&gt;</span>
+      <span class="nt">&lt;groupId&gt;</span>org.apache.olingo<span 
class="nt">&lt;/groupId&gt;</span>
+      <span class="nt">&lt;artifactId&gt;</span>odata-client-core<span 
class="nt">&lt;/artifactId&gt;</span>
+      <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span 
class="n">project</span><span class="o">.</span><span 
class="n">version</span><span class="cp">}</span><span 
class="nt">&lt;/version&gt;</span>
+    <span class="nt">&lt;/dependency&gt;</span>
+    <span class="nt">&lt;dependency&gt;</span>
+      <span class="nt">&lt;groupId&gt;</span>commons-logging<span 
class="nt">&lt;/groupId&gt;</span>
+      <span class="nt">&lt;artifactId&gt;</span>commons-logging<span 
class="nt">&lt;/artifactId&gt;</span>
+      <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span 
class="n">commons</span><span class="o">.</span><span 
class="n">logging</span><span class="o">.</span><span 
class="n">version</span><span class="cp">}</span><span 
class="nt">&lt;/version&gt;</span>
+      <span class="nt">&lt;scope&gt;</span>runtime<span 
class="nt">&lt;/scope&gt;</span>
+    <span class="nt">&lt;/dependency&gt;</span>
+    <span class="nt">&lt;dependency&gt;</span>
+      <span class="nt">&lt;groupId&gt;</span>org.slf4j<span 
class="nt">&lt;/groupId&gt;</span>
+      <span class="nt">&lt;artifactId&gt;</span>slf4j-simple<span 
class="nt">&lt;/artifactId&gt;</span>
+      <span class="nt">&lt;version&gt;</span><span class="cp">${</span><span 
class="n">sl4j</span><span class="o">.</span><span 
class="n">version</span><span class="cp">}</span><span 
class="nt">&lt;/version&gt;</span>
+      <span class="nt">&lt;scope&gt;</span>runtime<span 
class="nt">&lt;/scope&gt;</span>
+    <span class="nt">&lt;/dependency&gt;</span>
+  <span class="nt">&lt;/dependencies&gt;</span>
+  <span class="nt">&lt;profiles&gt;</span>
+    <span class="nt">&lt;profile&gt;</span>
+      <span class="nt">&lt;id&gt;</span>client<span 
class="nt">&lt;/id&gt;</span>
+      <span class="nt">&lt;build&gt;</span>
+        <span class="nt">&lt;defaultGoal&gt;</span>test<span 
class="nt">&lt;/defaultGoal&gt;</span>
+        <span class="nt">&lt;plugins&gt;</span>
+          <span class="nt">&lt;plugin&gt;</span>
+            <span class="nt">&lt;groupId&gt;</span>org.codehaus.mojo<span 
class="nt">&lt;/groupId&gt;</span>
+            <span class="nt">&lt;artifactId&gt;</span>exec-maven-plugin<span 
class="nt">&lt;/artifactId&gt;</span>
+            <span class="nt">&lt;executions&gt;</span>
+              <span class="nt">&lt;execution&gt;</span>
+                <span class="nt">&lt;phase&gt;</span>test<span 
class="nt">&lt;/phase&gt;</span>
+                <span class="nt">&lt;goals&gt;</span>
+                  <span class="nt">&lt;goal&gt;</span>java<span 
class="nt">&lt;/goal&gt;</span>
+                <span class="nt">&lt;/goals&gt;</span>
+                <span class="nt">&lt;configuration&gt;</span>
+                  <span 
class="nt">&lt;mainClass&gt;</span>org.apache.olingo.samples.client.OlingoSampleApp<span
 class="nt">&lt;/mainClass&gt;</span>
+                <span class="nt">&lt;/configuration&gt;</span>
+              <span class="nt">&lt;/execution&gt;</span>
+            <span class="nt">&lt;/executions&gt;</span>
+          <span class="nt">&lt;/plugin&gt;</span>
+        <span class="nt">&lt;/plugins&gt;</span>
+      <span class="nt">&lt;/build&gt;</span>
+    <span class="nt">&lt;/profile&gt;</span>
+  <span class="nt">&lt;/profiles&gt;</span>
+<span class="nt">&lt;/project&gt;</span>
+</pre></div>
+
+
+<h2 id="olingosampleappjava">OlingoSampleApp.java<a class="headerlink" 
href="#olingosampleappjava" title="Permanent link">&para;</a></h2>
+<div class="codehilite"><pre><span class="cm">/*</span>
+<span class="cm"> * Licensed to the Apache Software Foundation (ASF) under 
one</span>
+<span class="cm"> * or more contributor license agreements. See the NOTICE 
file</span>
+<span class="cm"> * distributed with this work for additional 
information</span>
+<span class="cm"> * regarding copyright ownership. The ASF licenses this 
file</span>
+<span class="cm"> * to you under the Apache License, Version 2.0 (the</span>
+<span class="cm"> * &quot;License&quot;); you may not use this file except in 
compliance</span>
+<span class="cm"> * with the License. You may obtain a copy of the License 
at</span>
+<span class="cm"> * </span>
+<span class="cm"> * http://www.apache.org/licenses/LICENSE-2.0</span>
+<span class="cm"> * </span>
+<span class="cm"> * Unless required by applicable law or agreed to in 
writing,</span>
+<span class="cm"> * software distributed under the License is distributed on 
an</span>
+<span class="cm"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS 
OF ANY</span>
+<span class="cm"> * KIND, either express or implied. See the License for 
the</span>
+<span class="cm"> * specific language governing permissions and 
limitations</span>
+<span class="cm"> * under the License.</span>
+<span class="cm"> 
******************************************************************************/</span>
+<span class="kn">package</span> <span class="n">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">samples</span><span class="p">.</span><span 
class="n">client</span><span class="p">;</span>
+
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">io</span><span class="p">.</span><span 
class="n">IOException</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">io</span><span class="p">.</span><span 
class="n">InputStream</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">net</span><span class="p">.</span><span 
class="no">URI</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">text</span><span class="p">.</span><span 
class="n">SimpleDateFormat</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">ArrayList</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">Calendar</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">Collection</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">List</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">Map</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">Map</span><span class="p">.</span><span class="n">Entry</span><span 
class="p">;</span>
+<span class="kn">import</span> <span class="nn">java</span><span 
class="p">.</span><span class="n">util</span><span class="p">.</span><span 
class="n">Set</span><span class="p">;</span>
+
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">ODataClient</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">cud</span><span class="p">.</span><span 
class="n">ODataDeleteRequest</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">cud</span><span class="p">.</span><span 
class="n">ODataEntityCreateRequest</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">cud</span><span class="p">.</span><span 
class="n">ODataEntityUpdateRequest</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">cud</span><span class="p">.</span><span 
class="n">UpdateType</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">retrieve</span><span class="p">.</span><span 
class="n">EdmMetadataRequest</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">retrieve</span><span class="p">.</span><span 
class="n">ODataEntityRequest</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">request</span><span class="p">.</span><span 
class="n">retrieve</span><span class="p">.</span><span 
class="n">ODataEntitySetIteratorRequest</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">response</span><span class="p">.</span><span 
class="n">ODataDeleteResponse</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">response</span><span class="p">.</span><span 
class="n">ODataEntityCreateResponse</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">response</span><span class="p">.</span><span 
class="n">ODataEntityUpdateResponse</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">communication</span><span 
class="p">.</span><span class="n">response</span><span class="p">.</span><span 
class="n">ODataRetrieveResponse</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientCollectionValue</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientComplexValue</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientEntity</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientEntitySet</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientEntitySetIterator</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientEnumValue</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientProperty</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">domain</span><span class="p">.</span><span 
class="n">ClientValue</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">serialization</span><span 
class="p">.</span><span class="n">ODataDeserializerException</span><span 
class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">client</span><span class="p">.</span><span class="n">core</span><span 
class="p">.</span><span class="n">ODataClientFactory</span><span 
class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">edm</span><span class="p">.</span><span 
class="n">Edm</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">edm</span><span class="p">.</span><span 
class="n">EdmComplexType</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">edm</span><span class="p">.</span><span 
class="n">EdmEntityType</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">edm</span><span class="p">.</span><span 
class="n">EdmProperty</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">edm</span><span class="p">.</span><span 
class="n">EdmSchema</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">edm</span><span class="p">.</span><span 
class="n">FullQualifiedName</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">org</span><span 
class="p">.</span><span class="n">apache</span><span class="p">.</span><span 
class="n">olingo</span><span class="p">.</span><span 
class="n">commons</span><span class="p">.</span><span class="n">api</span><span 
class="p">.</span><span class="n">format</span><span class="p">.</span><span 
class="n">ContentType</span><span class="p">;</span>
+
+
+<span class="cm">/**</span>
+<span class="cm"> *</span>
+<span class="cm"> */</span>
+<span class="n">public</span> <span class="k">class</span> <span 
class="n">OlingoSampleApp</span> <span class="p">{</span>
+  <span class="n">private</span> <span class="n">ODataClient</span> <span 
class="n">client</span><span class="p">;</span>
+
+  <span class="n">public</span> <span class="n">OlingoSampleApp</span><span 
class="p">()</span> <span class="p">{</span>
+    <span class="n">client</span> <span class="o">=</span> <span 
class="n">ODataClientFactory</span><span class="p">.</span><span 
class="n">getClient</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">public</span> <span class="k">static</span> <span 
class="k">void</span> <span class="n">main</span><span class="p">(</span><span 
class="n">String</span><span class="p">[]</span> <span 
class="n">params</span><span class="p">)</span> <span class="n">throws</span> 
<span class="n">Exception</span> <span class="p">{</span>
+    <span class="n">OlingoSampleApp</span> <span class="n">app</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">OlingoSampleApp</span><span class="p">();</span>
+    <span class="n">app</span><span class="p">.</span><span 
class="n">perform</span><span class="p">(</span><span 
class="s">&quot;http://localhost:8080/cars.svc&quot;</span><span 
class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="k">void</span> <span class="n">perform</span><span 
class="p">(</span><span class="n">String</span> <span 
class="n">serviceUrl</span><span class="p">)</span> <span 
class="n">throws</span> <span class="n">Exception</span> <span 
class="p">{</span>
+
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Read Edm 
------------------------------&quot;</span><span class="p">);</span>
+    <span class="n">Edm</span> <span class="n">edm</span> <span 
class="o">=</span> <span class="n">readEdm</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">);</span>
+    <span class="n">List</span><span class="o">&lt;</span><span 
class="n">FullQualifiedName</span><span class="o">&gt;</span> <span 
class="n">ctFqns</span> <span class="o">=</span> <span class="k">new</span> 
<span class="n">ArrayList</span><span class="o">&lt;</span><span 
class="n">FullQualifiedName</span><span class="o">&gt;</span><span 
class="p">();</span>
+    <span class="n">List</span><span class="o">&lt;</span><span 
class="n">FullQualifiedName</span><span class="o">&gt;</span> <span 
class="n">etFqns</span> <span class="o">=</span> <span class="k">new</span> 
<span class="n">ArrayList</span><span class="o">&lt;</span><span 
class="n">FullQualifiedName</span><span class="o">&gt;</span><span 
class="p">();</span>
+    <span class="k">for</span> <span class="p">(</span><span 
class="n">EdmSchema</span> <span class="n">schema</span> <span 
class="o">:</span> <span class="n">edm</span><span class="p">.</span><span 
class="n">getSchemas</span><span class="p">())</span> <span class="p">{</span>
+      <span class="k">for</span> <span class="p">(</span><span 
class="n">EdmComplexType</span> <span class="n">complexType</span> <span 
class="o">:</span> <span class="n">schema</span><span class="p">.</span><span 
class="n">getComplexTypes</span><span class="p">())</span> <span 
class="p">{</span>
+        <span class="n">ctFqns</span><span class="p">.</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">complexType</span><span class="p">.</span><span 
class="n">getFullQualifiedName</span><span class="p">());</span>
+      <span class="p">}</span>
+      <span class="k">for</span> <span class="p">(</span><span 
class="n">EdmEntityType</span> <span class="n">entityType</span> <span 
class="o">:</span> <span class="n">schema</span><span class="p">.</span><span 
class="n">getEntityTypes</span><span class="p">())</span> <span 
class="p">{</span>
+        <span class="n">etFqns</span><span class="p">.</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">entityType</span><span class="p">.</span><span 
class="n">getFullQualifiedName</span><span class="p">());</span>
+      <span class="p">}</span>
+    <span class="p">}</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Found ComplexTypes&quot;</span><span class="p">,</span> <span 
class="n">ctFqns</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Found EntityTypes&quot;</span><span class="p">,</span> <span 
class="n">etFqns</span><span class="p">);</span>
+
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Inspect 
each property and its type of the first entity: &quot;</span> <span 
class="o">+</span> <span class="n">etFqns</span><span class="p">.</span><span 
class="n">get</span><span class="p">(</span><span class="mh">0</span><span 
class="p">)</span> <span class="o">+</span> <span 
class="s">&quot;----&quot;</span><span class="p">);</span>
+    <span class="n">EdmEntityType</span> <span class="n">etype</span> <span 
class="o">=</span> <span class="n">edm</span><span class="p">.</span><span 
class="n">getEntityType</span><span class="p">(</span><span 
class="n">etFqns</span><span class="p">.</span><span class="n">get</span><span 
class="p">(</span><span class="mh">0</span><span class="p">));</span>
+    <span class="k">for</span> <span class="p">(</span><span 
class="n">String</span> <span class="n">propertyName</span> <span 
class="o">:</span> <span class="n">etype</span><span class="p">.</span><span 
class="n">getPropertyNames</span><span class="p">())</span> <span 
class="p">{</span>
+      <span class="n">EdmProperty</span> <span class="k">property</span> <span 
class="o">=</span> <span class="n">etype</span><span class="p">.</span><span 
class="n">getStructuralProperty</span><span class="p">(</span><span 
class="n">propertyName</span><span class="p">);</span>
+      <span class="n">FullQualifiedName</span> <span class="n">typeName</span> 
<span class="o">=</span> <span class="k">property</span><span 
class="p">.</span><span class="n">getType</span><span class="p">().</span><span 
class="n">getFullQualifiedName</span><span class="p">();</span>
+      <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;property &#39;&quot;</span> <span class="o">+</span> <span 
class="n">propertyName</span> <span class="o">+</span> <span 
class="s">&quot;&#39; &quot;</span> <span class="o">+</span> <span 
class="n">typeName</span><span class="p">);</span>
+    <span class="p">}</span>
+
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Read 
Entities ------------------------------&quot;</span><span class="p">);</span>
+    <span class="n">ClientEntitySetIterator</span><span 
class="o">&lt;</span><span class="n">ClientEntitySet</span><span 
class="p">,</span> <span class="n">ClientEntity</span><span 
class="o">&gt;</span> <span class="n">iterator</span> <span class="o">=</span> 
+      <span class="n">readEntities</span><span class="p">(</span><span 
class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">);</span>
+
+    <span class="k">while</span> <span class="p">(</span><span 
class="n">iterator</span><span class="p">.</span><span 
class="n">hasNext</span><span class="p">())</span> <span class="p">{</span>
+      <span class="n">ClientEntity</span> <span class="n">ce</span> <span 
class="o">=</span> <span class="n">iterator</span><span class="p">.</span><span 
class="n">next</span><span class="p">();</span>
+      <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Entry:</span><span class="se">\n</span><span 
class="s">&quot;</span> <span class="o">+</span> <span 
class="n">prettyPrint</span><span class="p">(</span><span 
class="n">ce</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">(),</span> <span 
class="mh">0</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Read 
Entry ------------------------------&quot;</span><span class="p">);</span>
+    <span class="n">ClientEntity</span> <span class="n">entry</span> <span 
class="o">=</span> <span class="n">readEntityWithKey</span><span 
class="p">(</span><span class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="mh">1</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Single Entry:</span><span class="se">\n</span><span 
class="s">&quot;</span> <span class="o">+</span> <span 
class="n">prettyPrint</span><span class="p">(</span><span 
class="n">entry</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">(),</span> <span 
class="mh">0</span><span class="p">));</span>
+
+    <span class="c1">//</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Read 
Entity with $expand  ------------------------------&quot;</span><span 
class="p">);</span>
+    <span class="n">entry</span> <span class="o">=</span> <span 
class="n">readEntityWithKeyExpand</span><span class="p">(</span><span 
class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="mh">1</span><span class="p">,</span> <span 
class="s">&quot;Cars&quot;</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Single Entry with expanded Cars relation:</span><span 
class="se">\n</span><span class="s">&quot;</span> <span class="o">+</span> 
<span class="n">prettyPrint</span><span class="p">(</span><span 
class="n">entry</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">(),</span> <span 
class="mh">0</span><span class="p">));</span>
+
+    <span class="c1">//</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Read 
Entities with $filter  ------------------------------&quot;</span><span 
class="p">);</span>
+    <span class="n">iterator</span> <span class="o">=</span> <span 
class="n">readEntitiesWithFilter</span><span class="p">(</span><span 
class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="s">&quot;Name eq &#39;Horse Powered Racing&#39;&quot;</span><span 
class="p">);</span>
+    <span class="k">while</span> <span class="p">(</span><span 
class="n">iterator</span><span class="p">.</span><span 
class="n">hasNext</span><span class="p">())</span> <span class="p">{</span>
+      <span class="n">ClientEntity</span> <span class="n">ce</span> <span 
class="o">=</span> <span class="n">iterator</span><span class="p">.</span><span 
class="n">next</span><span class="p">();</span>
+      <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Entry:</span><span class="se">\n</span><span 
class="s">&quot;</span> <span class="o">+</span> <span 
class="n">prettyPrint</span><span class="p">(</span><span 
class="n">ce</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">(),</span> <span 
class="mh">0</span><span class="p">));</span>
+    <span class="p">}</span>
+
+    <span class="c1">// skip everything as odata4 sample/server only 
supporting retrieval</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Create 
Entry ------------------------------&quot;</span><span class="p">);</span>
+    <span class="n">ClientEntity</span> <span class="n">ce</span> <span 
class="o">=</span> <span class="n">loadEntity</span><span 
class="p">(</span><span class="s">&quot;/mymanufacturer.json&quot;</span><span 
class="p">);</span>
+    <span class="n">entry</span> <span class="o">=</span> <span 
class="n">createEntity</span><span class="p">(</span><span 
class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="n">ce</span><span class="p">);</span>
+
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Update 
Entry ------------------------------&quot;</span><span class="p">);</span>
+    <span class="n">ce</span> <span class="o">=</span> <span 
class="n">loadEntity</span><span class="p">(</span><span 
class="s">&quot;/mymanufacturer2.json&quot;</span><span class="p">);</span>
+    <span class="k">int</span> <span class="n">sc</span> <span 
class="o">=</span> <span class="n">updateEntity</span><span 
class="p">(</span><span class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="mh">123</span><span class="p">,</span> <span class="n">ce</span><span 
class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Updated successfully: &quot;</span> <span class="o">+</span> 
<span class="n">sc</span><span class="p">);</span>
+    <span class="n">entry</span> <span class="o">=</span> <span 
class="n">readEntityWithKey</span><span class="p">(</span><span 
class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="mh">123</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Updated Entry successfully: &quot;</span> <span 
class="o">+</span> <span class="n">prettyPrint</span><span 
class="p">(</span><span class="n">entry</span><span class="p">.</span><span 
class="n">getProperties</span><span class="p">(),</span> <span 
class="mh">0</span><span class="p">));</span>
+
+
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Delete 
Entry ------------------------------&quot;</span><span class="p">);</span>
+    <span class="n">sc</span> <span class="o">=</span> <span 
class="n">deleteEntity</span><span class="p">(</span><span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="mh">123</span><span class="p">);</span>
+    <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;Deletion of Entry was successfully: &quot;</span> <span 
class="o">+</span> <span class="n">sc</span><span class="p">);</span>
+
+    <span class="n">try</span> <span class="p">{</span>
+      <span class="n">print</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span class="s">----- Verify 
Delete Entry ------------------------------&quot;</span><span 
class="p">);</span>
+      <span class="n">readEntityWithKey</span><span class="p">(</span><span 
class="n">edm</span><span class="p">,</span> <span 
class="n">serviceUrl</span><span class="p">,</span> <span 
class="s">&quot;Manufacturers&quot;</span><span class="p">,</span> <span 
class="mh">123</span><span class="p">);</span>
+    <span class="p">}</span> <span class="n">catch</span><span 
class="p">(</span><span class="n">Exception</span> <span 
class="n">e</span><span class="p">)</span> <span class="p">{</span>
+      <span class="n">print</span><span class="p">(</span><span 
class="n">e</span><span class="p">.</span><span 
class="n">getMessage</span><span class="p">());</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="k">static</span> <span 
class="k">void</span> <span class="n">print</span><span class="p">(</span><span 
class="n">String</span> <span class="n">content</span><span class="p">)</span> 
<span class="p">{</span>
+    <span class="n">System</span><span class="p">.</span><span 
class="n">out</span><span class="p">.</span><span class="n">println</span><span 
class="p">(</span><span class="n">content</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="k">static</span> <span 
class="k">void</span> <span class="n">print</span><span class="p">(</span><span 
class="n">String</span> <span class="n">content</span><span class="p">,</span> 
<span class="n">List</span><span class="o">&lt;?&gt;</span> <span 
class="n">list</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">System</span><span class="p">.</span><span 
class="n">out</span><span class="p">.</span><span class="n">println</span><span 
class="p">(</span><span class="n">content</span><span class="p">);</span>
+    <span class="k">for</span> <span class="p">(</span><span 
class="n">Object</span> <span class="n">o</span> <span class="o">:</span> <span 
class="n">list</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">System</span><span class="p">.</span><span 
class="n">out</span><span class="p">.</span><span class="n">println</span><span 
class="p">(</span><span class="s">&quot;    &quot;</span> <span 
class="o">+</span> <span class="n">o</span><span class="p">);</span>
+    <span class="p">}</span>
+      <span class="n">System</span><span class="p">.</span><span 
class="n">out</span><span class="p">.</span><span class="n">println</span><span 
class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="k">static</span> <span 
class="n">String</span> <span class="n">prettyPrint</span><span 
class="p">(</span><span class="n">Map</span><span class="o">&lt;</span><span 
class="n">String</span><span class="p">,</span> <span 
class="n">Object</span><span class="o">&gt;</span> <span 
class="n">properties</span><span class="p">,</span> <span class="k">int</span> 
<span class="n">level</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">StringBuilder</span> <span class="n">b</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">StringBuilder</span><span class="p">();</span>
+    <span class="n">Set</span><span class="o">&lt;</span><span 
class="n">Entry</span><span class="o">&lt;</span><span 
class="n">String</span><span class="p">,</span> <span 
class="n">Object</span><span class="o">&gt;&gt;</span> <span 
class="n">entries</span> <span class="o">=</span> <span 
class="n">properties</span><span class="p">.</span><span 
class="n">entrySet</span><span class="p">();</span>
+
+    <span class="k">for</span> <span class="p">(</span><span 
class="n">Entry</span><span class="o">&lt;</span><span 
class="n">String</span><span class="p">,</span> <span 
class="n">Object</span><span class="o">&gt;</span> <span class="n">entry</span> 
<span class="o">:</span> <span class="n">entries</span><span class="p">)</span> 
<span class="p">{</span>
+      <span class="n">intend</span><span class="p">(</span><span 
class="n">b</span><span class="p">,</span> <span class="n">level</span><span 
class="p">);</span>
+      <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">entry</span><span class="p">.</span><span 
class="n">getKey</span><span class="p">()).</span><span 
class="n">append</span><span class="p">(</span><span class="s">&quot;: 
&quot;</span><span class="p">);</span>
+      <span class="n">Object</span> <span class="n">value</span> <span 
class="o">=</span> <span class="n">entry</span><span class="p">.</span><span 
class="n">getValue</span><span class="p">();</span>
+      <span class="k">if</span><span class="p">(</span><span 
class="n">value</span> <span class="n">instanceof</span> <span 
class="n">Map</span><span class="p">)</span> <span class="p">{</span>
+        <span class="n">value</span> <span class="o">=</span> <span 
class="n">prettyPrint</span><span class="p">((</span><span 
class="n">Map</span><span class="o">&lt;</span><span 
class="n">String</span><span class="p">,</span> <span 
class="n">Object</span><span class="o">&gt;</span><span class="p">)</span> 
<span class="n">value</span><span class="p">,</span> <span 
class="n">level</span><span class="o">+</span><span class="mh">1</span><span 
class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span 
class="k">if</span><span class="p">(</span><span class="n">value</span> <span 
class="n">instanceof</span> <span class="n">Calendar</span><span 
class="p">)</span> <span class="p">{</span>
+        <span class="n">Calendar</span> <span class="n">cal</span> <span 
class="o">=</span> <span class="p">(</span><span class="n">Calendar</span><span 
class="p">)</span> <span class="n">value</span><span class="p">;</span>
+        <span class="n">value</span> <span class="o">=</span> <span 
class="n">SimpleDateFormat</span><span class="p">.</span><span 
class="n">getInstance</span><span class="p">().</span><span 
class="n">format</span><span class="p">(</span><span class="n">cal</span><span 
class="p">.</span><span class="n">getTime</span><span class="p">());</span>
+      <span class="p">}</span>
+      <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">value</span><span class="p">).</span><span 
class="n">append</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+    <span class="c1">// remove last line break</span>
+    <span class="n">b</span><span class="p">.</span><span 
class="n">deleteCharAt</span><span class="p">(</span><span 
class="n">b</span><span class="p">.</span><span class="n">length</span><span 
class="p">()</span><span class="o">-</span><span class="mh">1</span><span 
class="p">);</span>
+    <span class="k">return</span> <span class="n">b</span><span 
class="p">.</span><span class="n">toString</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="k">static</span> <span 
class="n">String</span> <span class="n">prettyPrint</span><span 
class="p">(</span><span class="n">Collection</span><span 
class="o">&lt;</span><span class="n">ClientProperty</span><span 
class="o">&gt;</span> <span class="n">properties</span><span class="p">,</span> 
<span class="k">int</span> <span class="n">level</span><span class="p">)</span> 
<span class="p">{</span>
+    <span class="n">StringBuilder</span> <span class="n">b</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">StringBuilder</span><span class="p">();</span>
+
+    <span class="k">for</span> <span class="p">(</span><span 
class="n">ClientProperty</span> <span class="n">entry</span> <span 
class="o">:</span> <span class="n">properties</span><span class="p">)</span> 
<span class="p">{</span>
+      <span class="n">intend</span><span class="p">(</span><span 
class="n">b</span><span class="p">,</span> <span class="n">level</span><span 
class="p">);</span>
+      <span class="n">ClientValue</span> <span class="n">value</span> <span 
class="o">=</span> <span class="n">entry</span><span class="p">.</span><span 
class="n">getValue</span><span class="p">();</span>
+      <span class="k">if</span> <span class="p">(</span><span 
class="n">value</span><span class="p">.</span><span 
class="n">isCollection</span><span class="p">())</span> <span class="p">{</span>
+        <span class="n">ClientCollectionValue</span> <span 
class="n">cclvalue</span> <span class="o">=</span> <span 
class="n">value</span><span class="p">.</span><span 
class="n">asCollection</span><span class="p">();</span>
+        <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">prettyPrint</span><span class="p">(</span><span 
class="n">cclvalue</span><span class="p">.</span><span 
class="n">asJavaCollection</span><span class="p">(),</span> <span 
class="n">level</span> <span class="o">+</span> <span class="mh">1</span><span 
class="p">));</span>
+      <span class="p">}</span> <span class="k">else</span> <span 
class="k">if</span> <span class="p">(</span><span class="n">value</span><span 
class="p">.</span><span class="n">isComplex</span><span class="p">())</span> 
<span class="p">{</span>
+        <span class="n">ClientComplexValue</span> <span 
class="n">cpxvalue</span> <span class="o">=</span> <span 
class="n">value</span><span class="p">.</span><span 
class="n">asComplex</span><span class="p">();</span>
+        <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">prettyPrint</span><span class="p">(</span><span 
class="n">cpxvalue</span><span class="p">.</span><span 
class="n">asJavaMap</span><span class="p">(),</span> <span 
class="n">level</span> <span class="o">+</span> <span class="mh">1</span><span 
class="p">));</span>
+      <span class="p">}</span> <span class="k">else</span> <span 
class="k">if</span> <span class="p">(</span><span class="n">value</span><span 
class="p">.</span><span class="n">isEnum</span><span class="p">())</span> <span 
class="p">{</span>
+        <span class="n">ClientEnumValue</span> <span class="n">cnmvalue</span> 
<span class="o">=</span> <span class="n">value</span><span 
class="p">.</span><span class="n">asEnum</span><span class="p">();</span>
+        <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">entry</span><span class="p">.</span><span 
class="n">getName</span><span class="p">()).</span><span 
class="n">append</span><span class="p">(</span><span class="s">&quot;: 
&quot;</span><span class="p">);</span>
+        <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">cnmvalue</span><span class="p">.</span><span 
class="n">getValue</span><span class="p">()).</span><span 
class="n">append</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+      <span class="p">}</span> <span class="k">else</span> <span 
class="k">if</span> <span class="p">(</span><span class="n">value</span><span 
class="p">.</span><span class="n">isPrimitive</span><span class="p">())</span> 
<span class="p">{</span>
+        <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">entry</span><span class="p">.</span><span 
class="n">getName</span><span class="p">()).</span><span 
class="n">append</span><span class="p">(</span><span class="s">&quot;: 
&quot;</span><span class="p">);</span>
+        <span class="n">b</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span 
class="n">entry</span><span class="p">.</span><span 
class="n">getValue</span><span class="p">()).</span><span 
class="n">append</span><span class="p">(</span><span 
class="s">&quot;</span><span class="se">\n</span><span 
class="s">&quot;</span><span class="p">);</span>
+      <span class="p">}</span>
+    <span class="p">}</span>
+    <span class="k">return</span> <span class="n">b</span><span 
class="p">.</span><span class="n">toString</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="k">static</span> <span 
class="k">void</span> <span class="n">intend</span><span 
class="p">(</span><span class="n">StringBuilder</span> <span 
class="n">builder</span><span class="p">,</span> <span class="k">int</span> 
<span class="n">intendLevel</span><span class="p">)</span> <span 
class="p">{</span>
+    <span class="k">for</span> <span class="p">(</span><span 
class="k">int</span> <span class="n">i</span> <span class="o">=</span> <span 
class="mh">0</span><span class="p">;</span> <span class="n">i</span> <span 
class="o">&lt;</span> <span class="n">intendLevel</span><span 
class="p">;</span> <span class="n">i</span><span class="o">++</span><span 
class="p">)</span> <span class="p">{</span>
+      <span class="n">builder</span><span class="p">.</span><span 
class="n">append</span><span class="p">(</span><span class="s">&quot;  
&quot;</span><span class="p">);</span>
+    <span class="p">}</span>
+  <span class="p">}</span>
+
+  <span class="n">public</span> <span class="n">Edm</span> <span 
class="n">readEdm</span><span class="p">(</span><span class="n">String</span> 
<span class="n">serviceUrl</span><span class="p">)</span> <span 
class="n">throws</span> <span class="n">IOException</span> <span 
class="p">{</span>
+    <span class="n">EdmMetadataRequest</span> <span class="n">request</span> 
<span class="o">=</span> <span class="n">client</span><span 
class="p">.</span><span class="n">getRetrieveRequestFactory</span><span 
class="p">().</span><span class="n">getMetadataRequest</span><span 
class="p">(</span><span class="n">serviceUrl</span><span class="p">);</span>
+    <span class="n">ODataRetrieveResponse</span><span 
class="o">&lt;</span><span class="n">Edm</span><span class="o">&gt;</span> 
<span class="n">response</span> <span class="o">=</span> <span 
class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+    <span class="k">return</span> <span class="n">response</span><span 
class="p">.</span><span class="n">getBody</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">public</span> <span 
class="n">ClientEntitySetIterator</span><span class="o">&lt;</span><span 
class="n">ClientEntitySet</span><span class="p">,</span> <span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">readEntities</span><span class="p">(</span><span class="n">Edm</span> 
<span class="n">edm</span><span class="p">,</span> <span 
class="n">String</span> <span class="n">serviceUri</span><span 
class="p">,</span>
+    <span class="n">String</span> <span class="n">entitySetName</span><span 
class="p">)</span> <span class="p">{</span>
+    <span class="no">URI</span> <span class="n">absoluteUri</span> <span 
class="o">=</span> <span class="n">client</span><span class="p">.</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUri</span><span class="p">).</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span><span 
class="n">entitySetName</span><span class="p">).</span><span 
class="n">build</span><span class="p">();</span>
+    <span class="k">return</span> <span class="n">readEntities</span><span 
class="p">(</span><span class="n">edm</span><span class="p">,</span> <span 
class="n">absoluteUri</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">public</span> <span 
class="n">ClientEntitySetIterator</span><span class="o">&lt;</span><span 
class="n">ClientEntitySet</span><span class="p">,</span> <span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">readEntitiesWithFilter</span><span class="p">(</span><span 
class="n">Edm</span> <span class="n">edm</span><span class="p">,</span> <span 
class="n">String</span> <span class="n">serviceUri</span><span 
class="p">,</span>
+    <span class="n">String</span> <span class="n">entitySetName</span><span 
class="p">,</span> <span class="n">String</span> <span 
class="n">filterName</span><span class="p">)</span> <span class="p">{</span>
+    <span class="no">URI</span> <span class="n">absoluteUri</span> <span 
class="o">=</span> <span class="n">client</span><span class="p">.</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUri</span><span class="p">).</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span><span 
class="n">entitySetName</span><span class="p">).</span><span 
class="n">filter</span><span class="p">(</span><span 
class="n">filterName</span><span class="p">).</span><span 
class="n">build</span><span class="p">();</span>
+    <span class="k">return</span> <span class="n">readEntities</span><span 
class="p">(</span><span class="n">edm</span><span class="p">,</span> <span 
class="n">absoluteUri</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span 
class="n">ClientEntitySetIterator</span><span class="o">&lt;</span><span 
class="n">ClientEntitySet</span><span class="p">,</span> <span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">readEntities</span><span class="p">(</span><span class="n">Edm</span> 
<span class="n">edm</span><span class="p">,</span> <span class="no">URI</span> 
<span class="n">absoluteUri</span><span class="p">)</span> <span 
class="p">{</span>
+    <span class="n">System</span><span class="p">.</span><span 
class="n">out</span><span class="p">.</span><span class="n">println</span><span 
class="p">(</span><span class="s">&quot;URI = &quot;</span> <span 
class="o">+</span> <span class="n">absoluteUri</span><span class="p">);</span>
+    <span class="n">ODataEntitySetIteratorRequest</span><span 
class="o">&lt;</span><span class="n">ClientEntitySet</span><span 
class="p">,</span> <span class="n">ClientEntity</span><span 
class="o">&gt;</span> <span class="n">request</span> <span class="o">=</span> 
+      <span class="n">client</span><span class="p">.</span><span 
class="n">getRetrieveRequestFactory</span><span class="p">().</span><span 
class="n">getEntitySetIteratorRequest</span><span class="p">(</span><span 
class="n">absoluteUri</span><span class="p">);</span>
+    <span class="c1">// odata4 sample/server limitation not handling 
metadata=full</span>
+    <span class="n">request</span><span class="p">.</span><span 
class="n">setAccept</span><span class="p">(</span><span 
class="s">&quot;application/json;odata.metadata=minimal&quot;</span><span 
class="p">);</span>
+    <span class="n">ODataRetrieveResponse</span><span 
class="o">&lt;</span><span class="n">ClientEntitySetIterator</span><span 
class="o">&lt;</span><span class="n">ClientEntitySet</span><span 
class="p">,</span> <span class="n">ClientEntity</span><span 
class="o">&gt;&gt;</span> <span class="n">response</span> <span 
class="o">=</span> <span class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+
+    <span class="k">return</span> <span class="n">response</span><span 
class="p">.</span><span class="n">getBody</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">public</span> <span class="n">ClientEntity</span> <span 
class="n">readEntityWithKey</span><span class="p">(</span><span 
class="n">Edm</span> <span class="n">edm</span><span class="p">,</span> <span 
class="n">String</span> <span class="n">serviceUri</span><span 
class="p">,</span> <span class="n">String</span> <span 
class="n">entitySetName</span><span class="p">,</span> <span 
class="n">Object</span> <span class="n">keyValue</span><span class="p">)</span> 
<span class="p">{</span>
+    <span class="no">URI</span> <span class="n">absoluteUri</span> <span 
class="o">=</span> <span class="n">client</span><span class="p">.</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUri</span><span class="p">).</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span><span 
class="n">entitySetName</span><span class="p">)</span>
+      <span class="p">.</span><span class="n">appendKeySegment</span><span 
class="p">(</span><span class="n">keyValue</span><span class="p">).</span><span 
class="n">build</span><span class="p">();</span>
+    <span class="k">return</span> <span class="n">readEntity</span><span 
class="p">(</span><span class="n">edm</span><span class="p">,</span> <span 
class="n">absoluteUri</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">public</span> <span class="n">ClientEntity</span> <span 
class="n">readEntityWithKeyExpand</span><span class="p">(</span><span 
class="n">Edm</span> <span class="n">edm</span><span class="p">,</span> <span 
class="n">String</span> <span class="n">serviceUri</span><span 
class="p">,</span> <span class="n">String</span> <span 
class="n">entitySetName</span><span class="p">,</span> <span 
class="n">Object</span> <span class="n">keyValue</span><span class="p">,</span>
+    <span class="n">String</span> <span 
class="n">expandRelationName</span><span class="p">)</span> <span 
class="p">{</span>
+    <span class="no">URI</span> <span class="n">absoluteUri</span> <span 
class="o">=</span> <span class="n">client</span><span class="p">.</span><span 
class="n">newURIBuilder</span><span class="p">(</span><span 
class="n">serviceUri</span><span class="p">).</span><span 
class="n">appendEntitySetSegment</span><span class="p">(</span><span 
class="n">entitySetName</span><span class="p">).</span><span 
class="n">appendKeySegment</span><span class="p">(</span><span 
class="n">keyValue</span><span class="p">)</span>
+      <span class="p">.</span><span class="n">expand</span><span 
class="p">(</span><span class="n">expandRelationName</span><span 
class="p">).</span><span class="n">build</span><span class="p">();</span>
+    <span class="k">return</span> <span class="n">readEntity</span><span 
class="p">(</span><span class="n">edm</span><span class="p">,</span> <span 
class="n">absoluteUri</span><span class="p">);</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="n">ClientEntity</span> <span 
class="n">readEntity</span><span class="p">(</span><span class="n">Edm</span> 
<span class="n">edm</span><span class="p">,</span> <span class="no">URI</span> 
<span class="n">absoluteUri</span><span class="p">)</span> <span 
class="p">{</span>
+    <span class="n">ODataEntityRequest</span><span class="o">&lt;</span><span 
class="n">ClientEntity</span><span class="o">&gt;</span> <span 
class="n">request</span> <span class="o">=</span> <span 
class="n">client</span><span class="p">.</span><span 
class="n">getRetrieveRequestFactory</span><span class="p">().</span><span 
class="n">getEntityRequest</span><span class="p">(</span><span 
class="n">absoluteUri</span><span class="p">);</span>
+    <span class="c1">// odata4 sample/server limitation not handling 
metadata=full</span>
+    <span class="n">request</span><span class="p">.</span><span 
class="n">setAccept</span><span class="p">(</span><span 
class="s">&quot;application/json;odata.metadata=minimal&quot;</span><span 
class="p">);</span>
+    <span class="n">ODataRetrieveResponse</span><span 
class="o">&lt;</span><span class="n">ClientEntity</span><span 
class="o">&gt;</span> <span class="n">response</span> <span class="o">=</span> 
<span class="n">request</span><span class="p">.</span><span 
class="n">execute</span><span class="p">();</span>
+
+    <span class="k">return</span> <span class="n">response</span><span 
class="p">.</span><span class="n">getBody</span><span class="p">();</span>
+  <span class="p">}</span>
+
+  <span class="n">private</span> <span class="n">ClientEntity</span> <span 
class="n">loadEntity</span><span class="p">(</span><span 
class="n">String</span> <span class="n">path</span><span class="p">)</span> 
<span class="n">throws</span> <span class="n">ODataDeserializerException</span> 
<span class="p">{</span>
+    <span class="n">InputStream</span> <span class="k">input</span> <span 
class="o">=</span> <span class="n">getClass</span><span 
class="p">().</span><span class="n">getResourceAsStream</span><span 
class="p">(</span><span class="n">path</span><span class="p">);</span>

[... 47 lines stripped ...]

Reply via email to