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 ...]