You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by bu...@apache.org on 2019/05/28 05:55:38 UTC
svn commit: r1045601 [2/2] - in /websites/staging/olingo/trunk/content: ./
doc/odata4/tutorials/od4_basic_client_read.html
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">¶</a></h1>
+<h1 id="client-scenario">Client Scenario<a class="headerlink" href="#client-scenario" title="Permanent link">¶</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">¶</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">¶</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">¶</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">¶</a></h3>
+<h3 id="create-odata-client">Create OData Client<a class="headerlink" href="#create-odata-client" title="Permanent link">¶</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">¶</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">¶</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"><</span><span class="n">InputStream</span><span class="o">></span> <span class="n">streams</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ArrayList</span><span class="o"><</span><span class="n">InputStream</span><span class="o">></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>"<span class="n">annotations</span><span class="p">.</span><span class="n">xml</span>"<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">¶</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">¶</a></h3>
+<div class="codehilite"><pre><span class="n">ODataEntitySetRequest</span><span class="o"><</span><span class="n">ClientEntitySet</span><span class="o">></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"><</span><span class="n">ClientEntitySet</span><span class="o">></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">¶</a></h3>
+<div class="codehilite"><pre><span class="n">ODataEntityRequest</span><span class="o"><</span><span class="n">ClientEntity</span><span class="o">></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"><</span><span class="n">ClientEntity</span><span class="o">></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">¶</a></h3>
+<div class="codehilite"><pre><span class="n">ODataPropertyRequest</span><span class="o"><</span><span class="n">ClientProperty</span><span class="o">></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"><</span><span class="n">ClientProperty</span><span class="o">></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>"<span class="n">Name</span>"<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">¶</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">¶</a></h3>
+<h3 id="part-1-post-entry">Part 1: POST entry<a class="headerlink" href="#part-1-post-entry" title="Permanent link">¶</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">¶</a></h3>
+<div class="codehilite"><pre><span class="n">final</span> <span class="n">ODataEntityCreateRequest</span><span class="o"><</span><span class="n">ClientEntity</span><span class="o">></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"><</span><span class="n">ClientEntity</span><span class="o">></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">¶</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"><</span><span class="n">ClientEntity</span><span class="o">></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"><</span><span class="n">ClientEntity</span><span class="o">></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">¶</a></h3>
+<h3 id="delete">Delete<a class="headerlink" href="#delete" title="Permanent link">¶</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">¶</a></h2>
+<div class="codehilite"><pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span>
+<span class="c"><!--</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"> "License"); 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"> "AS IS" 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">--></span>
+<span class="nt"><project</span> <span class="na">xmlns=</span><span class="s">"http://maven.apache.org/POM/4.0.0"</span> <span class="na">xmlns:xsi=</span><span class="s">"http://www.w3.org/2001/XMLSchema-instance"</span>
+ <span class="na">xsi:schemaLocation=</span><span class="s">"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"</span><span class="nt">></span>
+
+ <span class="nt"><modelVersion></span>4.0.0<span class="nt"></modelVersion></span>
+
+ <span class="nt"><artifactId></span>odata-client-sample<span class="nt"></artifactId></span>
+ <span class="nt"><packaging></span>jar<span class="nt"></packaging></span>
+ <span class="nt"><name></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"></name></span>
+
+ <span class="nt"><parent></span>
+ <span class="nt"><groupId></span>org.apache.olingo<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>odata-samples<span class="nt"></artifactId></span>
+ <span class="nt"><version></span>4.5.0-sap-05-SNAPSHOT<span class="nt"></version></span>
+ <span class="nt"><relativePath></span>..<span class="nt"></relativePath></span>
+ <span class="nt"></parent></span>
+
+ <span class="nt"><build></span>
+ <span class="nt"><plugins></span>
+ <span class="nt"><plugin></span>
+ <span class="nt"><groupId></span>org.apache.maven.plugins<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>maven-deploy-plugin<span class="nt"></artifactId></span>
+ <span class="nt"><configuration></span>
+ <span class="nt"><skip></span>true<span class="nt"></skip></span>
+ <span class="nt"></configuration></span>
+ <span class="nt"></plugin></span>
+
+ <span class="c"><!-- Disable checkstyle for sample --></span>
+ <span class="nt"><plugin></span>
+ <span class="nt"><artifactId></span>maven-checkstyle-plugin<span class="nt"></artifactId></span>
+ <span class="nt"><configuration></span>
+ <span class="nt"><skip></span>true<span class="nt"></skip></span>
+ <span class="nt"></configuration></span>
+ <span class="nt"></plugin></span>
+ <span class="nt"></plugins></span>
+ <span class="nt"></build></span>
+
+ <span class="nt"><dependencies></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.apache.olingo<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>odata-client-core<span class="nt"></artifactId></span>
+ <span class="nt"><version></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"></version></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>commons-logging<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>commons-logging<span class="nt"></artifactId></span>
+ <span class="nt"><version></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"></version></span>
+ <span class="nt"><scope></span>runtime<span class="nt"></scope></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"><dependency></span>
+ <span class="nt"><groupId></span>org.slf4j<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>slf4j-simple<span class="nt"></artifactId></span>
+ <span class="nt"><version></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"></version></span>
+ <span class="nt"><scope></span>runtime<span class="nt"></scope></span>
+ <span class="nt"></dependency></span>
+ <span class="nt"></dependencies></span>
+ <span class="nt"><profiles></span>
+ <span class="nt"><profile></span>
+ <span class="nt"><id></span>client<span class="nt"></id></span>
+ <span class="nt"><build></span>
+ <span class="nt"><defaultGoal></span>test<span class="nt"></defaultGoal></span>
+ <span class="nt"><plugins></span>
+ <span class="nt"><plugin></span>
+ <span class="nt"><groupId></span>org.codehaus.mojo<span class="nt"></groupId></span>
+ <span class="nt"><artifactId></span>exec-maven-plugin<span class="nt"></artifactId></span>
+ <span class="nt"><executions></span>
+ <span class="nt"><execution></span>
+ <span class="nt"><phase></span>test<span class="nt"></phase></span>
+ <span class="nt"><goals></span>
+ <span class="nt"><goal></span>java<span class="nt"></goal></span>
+ <span class="nt"></goals></span>
+ <span class="nt"><configuration></span>
+ <span class="nt"><mainClass></span>org.apache.olingo.samples.client.OlingoSampleApp<span class="nt"></mainClass></span>
+ <span class="nt"></configuration></span>
+ <span class="nt"></execution></span>
+ <span class="nt"></executions></span>
+ <span class="nt"></plugin></span>
+ <span class="nt"></plugins></span>
+ <span class="nt"></build></span>
+ <span class="nt"></profile></span>
+ <span class="nt"></profiles></span>
+<span class="nt"></project></span>
+</pre></div>
+
+
+<h2 id="olingosampleappjava">OlingoSampleApp.java<a class="headerlink" href="#olingosampleappjava" title="Permanent link">¶</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"> * "License"); 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"> * "AS IS" 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">"http://localhost:8080/cars.svc"</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">"</span><span class="se">\n</span><span class="s">----- Read Edm ------------------------------"</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"><</span><span class="n">FullQualifiedName</span><span class="o">></span> <span class="n">ctFqns</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o"><</span><span class="n">FullQualifiedName</span><span class="o">></span><span class="p">();</span>
+ <span class="n">List</span><span class="o"><</span><span class="n">FullQualifiedName</span><span class="o">></span> <span class="n">etFqns</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o"><</span><span class="n">FullQualifiedName</span><span class="o">></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">"Found ComplexTypes"</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">"Found EntityTypes"</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">"</span><span class="se">\n</span><span class="s">----- Inspect each property and its type of the first entity: "</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">"----"</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">"property '"</span> <span class="o">+</span> <span class="n">propertyName</span> <span class="o">+</span> <span class="s">"' "</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">"</span><span class="se">\n</span><span class="s">----- Read Entities ------------------------------"</span><span class="p">);</span>
+ <span class="n">ClientEntitySetIterator</span><span class="o"><</span><span class="n">ClientEntitySet</span><span class="p">,</span> <span class="n">ClientEntity</span><span class="o">></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">"Manufacturers"</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">"Entry:</span><span class="se">\n</span><span class="s">"</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">"</span><span class="se">\n</span><span class="s">----- Read Entry ------------------------------"</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">"Manufacturers"</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">"Single Entry:</span><span class="se">\n</span><span class="s">"</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">"</span><span class="se">\n</span><span class="s">----- Read Entity with $expand ------------------------------"</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">"Manufacturers"</span><span class="p">,</span> <span class="mh">1</span><span class="p">,</span> <span class="s">"Cars"</span><span class="p">);</span>
+ <span class="n">print</span><span class="p">(</span><span class="s">"Single Entry with expanded Cars relation:</span><span class="se">\n</span><span class="s">"</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">"</span><span class="se">\n</span><span class="s">----- Read Entities with $filter ------------------------------"</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">"Manufacturers"</span><span class="p">,</span> <span class="s">"Name eq 'Horse Powered Racing'"</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">"Entry:</span><span class="se">\n</span><span class="s">"</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">"</span><span class="se">\n</span><span class="s">----- Create Entry ------------------------------"</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">"/mymanufacturer.json"</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">"Manufacturers"</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">"</span><span class="se">\n</span><span class="s">----- Update Entry ------------------------------"</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">"/mymanufacturer2.json"</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">"Manufacturers"</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">"Updated successfully: "</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">"Manufacturers"</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">"Updated Entry successfully: "</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">"</span><span class="se">\n</span><span class="s">----- Delete Entry ------------------------------"</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">"Manufacturers"</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">"Deletion of Entry was successfully: "</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">"</span><span class="se">\n</span><span class="s">----- Verify Delete Entry ------------------------------"</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">"Manufacturers"</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"><?></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">" "</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"><</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">></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"><</span><span class="n">Entry</span><span class="o"><</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">>></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"><</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">></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">": "</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"><</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">></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">"</span><span class="se">\n</span><span class="s">"</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"><</span><span class="n">ClientProperty</span><span class="o">></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">": "</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">"</span><span class="se">\n</span><span class="s">"</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">": "</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">"</span><span class="se">\n</span><span class="s">"</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"><</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">" "</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"><</span><span class="n">Edm</span><span class="o">></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"><</span><span class="n">ClientEntitySet</span><span class="p">,</span> <span class="n">ClientEntity</span><span class="o">></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"><</span><span class="n">ClientEntitySet</span><span class="p">,</span> <span class="n">ClientEntity</span><span class="o">></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"><</span><span class="n">ClientEntitySet</span><span class="p">,</span> <span class="n">ClientEntity</span><span class="o">></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">"URI = "</span> <span class="o">+</span> <span class="n">absoluteUri</span><span class="p">);</span>
+ <span class="n">ODataEntitySetIteratorRequest</span><span class="o"><</span><span class="n">ClientEntitySet</span><span class="p">,</span> <span class="n">ClientEntity</span><span class="o">></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">"application/json;odata.metadata=minimal"</span><span class="p">);</span>
+ <span class="n">ODataRetrieveResponse</span><span class="o"><</span><span class="n">ClientEntitySetIterator</span><span class="o"><</span><span class="n">ClientEntitySet</span><span class="p">,</span> <span class="n">ClientEntity</span><span class="o">>></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"><</span><span class="n">ClientEntity</span><span class="o">></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">"application/json;odata.metadata=minimal"</span><span class="p">);</span>
+ <span class="n">ODataRetrieveResponse</span><span class="o"><</span><span class="n">ClientEntity</span><span class="o">></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 ...]