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 2013/09/30 16:31:48 UTC

svn commit: r880533 [2/2] - in /websites/staging/olingo/trunk/content: ./ doc/tutorials/read_media-resource.html

Modified: websites/staging/olingo/trunk/content/doc/tutorials/read_media-resource.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/tutorials/read_media-resource.html (original)
+++ websites/staging/olingo/trunk/content/doc/tutorials/read_media-resource.html Mon Sep 30 14:31:47 2013
@@ -120,48 +120,48 @@ The Driver gets a Key (Id) and some prop
 <p>To mark the Driver as a media link entry with an associated media resource extension it is mandatory to set the stream property to true via the <code>setHasStream(true)</code> method when creating the <code>EntityType</code>.</p>
 <p>As conclusion the <code>getEntityType(…)</code> method is extended as follows:</p>
 <h4 id="sample-code">Sample Code</h4>
-<div class="codehilite"><pre>…
-  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="p">.</span><span class="n">getName</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="n">edmFQName</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="n">List</span><span class="o">&lt;</span><span class="n">Property</span><span class="o">&gt;</span> <span class="k">properties</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Property</span><span class="o">&gt;</span><span class="p">();</span>
-    <span class="k">properties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">SimpleProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Id</span>&quot;<span class="p">).</span><span class="n">setType</span><span class="p">(</span><span class="n">EdmSimpleTypeKind</span><span class="p">.</span><span class="n">Int32</span><span class="p">).</span><span class="n">setFacets</span><span class="p">(</span><span class="n">new</span> <span class="n">Facets</span><span class="p">().</span><span class="n">setNullable</span><span class="p">(</span><span class="n">false</span><span class="p">)));</span>
-    <span class="k">properties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">SimpleProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Name</span>&quot;<span class="p">).</span><span class="n">setType</span><span class="p">(</span><span class="n">EdmSimpleTypeKind</span><span class="p">.</span><span class="n">String</span><span class="p">).</span><span class="n">setFacets</span><span class="p">(</span><span class="n">new</span> <span class="n">Facets</span><span class="p">().</span><span class="n">setNullable</span><span class="p">(</span><span class="n">false</span><span class="p">).</span><span class="n">setMaxLength</span><span class="p">(</span>50<span class="p">)));</span>
-    <span class="k">properties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">SimpleProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Surname</span>&quot;<span class="p">).</span><span class="n">setType</span><span class="p">(</span><span class="n">EdmSimpleTypeKind</span><span class="p">.</span><span class="n">String</span><span class="p">).</span><span class="n">setFacets</span><span class="p">(</span><span class="n">new</span> <span class="n">Facets</span><span class="p">().</span><span class="n">setNullable</span><span class="p">(</span><span class="n">false</span><span class="p">).</span><span class="n">setMaxLength</span><span class="p">(</span>80<span class="p">))</span>
-                    <span class="p">.</span><span class="n">setCustomizableFeedMappings</span><span class="p">(</span><span class="n">new</span> <span class="n">CustomizableFeedMappings</span><span class="p">().</span><span class="n">setFcTargetPath</span><span class="p">(</span><span class="n">EdmTargetPath</span><span class="p">.</span><span class="n">SYNDICATION_TITLE</span><span class="p">)));</span>
-    <span class="k">properties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">SimpleProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Nickname</span>&quot;<span class="p">).</span><span class="n">setType</span><span class="p">(</span><span class="n">EdmSimpleTypeKind</span><span class="p">.</span><span class="n">String</span><span class="p">).</span><span class="n">setFacets</span><span class="p">(</span><span class="n">new</span> <span class="n">Facets</span><span class="p">().</span><span class="n">setNullable</span><span class="p">(</span><span class="n">true</span><span class="p">).</span><span class="n">setMaxLength</span><span class="p">(</span>50<span class="p">)));</span>
-    <span class="k">properties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">SimpleProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Updated</span>&quot;<span class="p">).</span><span class="n">setType</span><span class="p">(</span><span class="n">EdmSimpleTypeKind</span><span class="p">.</span><span class="n">DateTime</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setFacets</span><span class="p">(</span><span class="n">new</span> <span class="n">Facets</span><span class="p">().</span><span class="n">setNullable</span><span class="p">(</span><span class="n">false</span><span class="p">).</span><span class="n">setConcurrencyMode</span><span class="p">(</span><span class="n">EdmConcurrencyMode</span><span class="p">.</span><span class="n">Fixed</span><span class="p">))</span>
-        <span class="p">.</span><span class="n">setCustomizableFeedMappings</span><span class="p">(</span><span class="n">new</span> <span class="n">CustomizableFeedMappings</span><span class="p">().</span><span class="n">setFcTargetPath</span><span class="p">(</span><span class="n">EdmTargetPath</span><span class="p">.</span><span class="n">SYNDICATION_UPDATED</span><span class="p">)));</span>
-
-    <span class="o">//</span> <span class="n">Navigation</span> <span class="k">properties</span>
-    <span class="n">List</span><span class="o">&lt;</span><span class="n">NavigationProperty</span><span class="o">&gt;</span> <span class="n">navigationProperties</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">NavigationProperty</span><span class="o">&gt;</span><span class="p">();</span>
-
-    <span class="o">//</span> <span class="n">Key</span>
-    <span class="n">List</span><span class="o">&lt;</span><span class="n">PropertyRef</span><span class="o">&gt;</span> <span class="n">keyProperties</span> <span class="p">=</span> <span class="n">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">PropertyRef</span><span class="o">&gt;</span><span class="p">();</span>
-    <span class="n">keyProperties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">PropertyRef</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Id</span>&quot;<span class="p">));</span>
-    <span class="n">Key</span> <span class="n">key</span> <span class="p">=</span> <span class="n">new</span> <span class="n">Key</span><span class="p">().</span><span class="n">setKeys</span><span class="p">(</span><span class="n">keyProperties</span><span class="p">);</span>
-
-    <span class="o">//</span> <span class="n">finish</span>
-    <span class="k">return</span> <span class="n">new</span> <span class="n">EntityType</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="p">.</span><span class="n">getName</span><span class="p">())</span>
-        <span class="p">.</span><span class="n">setProperties</span><span class="p">(</span><span class="k">properties</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setHasStream</span><span class="p">(</span><span class="n">true</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setKey</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setNavigationProperties</span><span class="p">(</span><span class="n">navigationProperties</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setMapping</span><span class="p">(</span><span class="n">new</span> <span class="n">Mapping</span><span class="p">().</span><span class="n">setMimeType</span><span class="p">(</span>&quot;<span class="n">image</span><span class="o">/</span><span class="n">png</span>&quot;<span class="p">));</span>
-<span class="p">}</span>
-<span class="p">...</span>
+<div class="codehilite"><pre><span class="err">…</span>
+  <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="o">.</span><span class="na">getName</span><span class="o">().</span><span class="na">equals</span><span class="o">(</span><span class="n">edmFQName</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+    <span class="n">List</span><span class="o">&lt;</span><span class="n">Property</span><span class="o">&gt;</span> <span class="n">properties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">Property</span><span class="o">&gt;();</span>
+    <span class="n">properties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">SimpleProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Id&quot;</span><span class="o">).</span><span class="na">setType</span><span class="o">(</span><span class="n">EdmSimpleTypeKind</span><span class="o">.</span><span class="na">Int32</span><span class="o">).</span><span class="na">setFacets</span><span class="o">(</span><span class="k">new</span> <span class="n">Facets</span><span class="o">().</span><span class="na">setNullable</span><span class="o">(</span><span class="kc">false</span><span class="o">)));</span>
+    <span class="n">properties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">SimpleProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Name&quot;</span><span class="o">).</span><span class="na">setType</span><span class="o">(</span><span class="n">EdmSimpleTypeKind</span><span class="o">.</span><span class="na">String</span><span class="o">).</span><span class="na">setFacets</span><span class="o">(</span><span class="k">new</span> <span class="n">Facets</span><span class="o">().</span><span class="na">setNullable</span><span class="o">(</span><span class="kc">false</span><span class="o">).</span><span class="na">setMaxLength</span><span class="o">(</span><span class="mi">50</span><span class="o">)));</span>
+    <span class="n">properties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">SimpleProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Surname&quot;</span><span class="o">).</span><span class="na">setType</span><span class="o">(</span><span class="n">EdmSimpleTypeKind</span><span class="o">.</span><span class="na">String</span><span class="o">).</span><span class="na">setFacets</span><span class="o">(</span><span class="k">new</span> <span class="n">Facets</span><span class="o">().</span><span class="na">setNullable</span><span class="o">(</span><span class="kc">false</span><span class="o">).</span><span class="na">setMaxLength</span><span class="o">(</span><span class="mi">80</span><span class="o">))</span>
+                    <span class="o">.</span><span class="na">setCustomizableFeedMappings</span><span class="o">(</span><span class="k">new</span> <span class="n">CustomizableFeedMappings</span><span class="o">().</span><span class="na">setFcTargetPath</span><span class="o">(</span><span class="n">EdmTargetPath</span><span class="o">.</span><span class="na">SYNDICATION_TITLE</span><span class="o">)));</span>
+    <span class="n">properties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">SimpleProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Nickname&quot;</span><span class="o">).</span><span class="na">setType</span><span class="o">(</span><span class="n">EdmSimpleTypeKind</span><span class="o">.</span><span class="na">String</span><span class="o">).</span><span class="na">setFacets</span><span class="o">(</span><span class="k">new</span> <span class="n">Facets</span><span class="o">().</span><span class="na">setNullable</span><span class="o">(</span><span class="kc">true</span><span class="o">).</span><span class="na">setMaxLength</span><span class="o">(</span><span class="mi">50</span><span class="o">)));</span>
+    <span class="n">properties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">SimpleProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Updated&quot;</span><span class="o">).</span><span class="na">setType</span><span class="o">(</span><span class="n">EdmSimpleTypeKind</span><span class="o">.</span><span class="na">DateTime</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setFacets</span><span class="o">(</span><span class="k">new</span> <span class="n">Facets</span><span class="o">().</span><span class="na">setNullable</span><span class="o">(</span><span class="kc">false</span><span class="o">).</span><span class="na">setConcurrencyMode</span><span class="o">(</span><span class="n">EdmConcurrencyMode</span><span class="o">.</span><span class="na">Fixed</span><span class="o">))</span>
+        <span class="o">.</span><span class="na">setCustomizableFeedMappings</span><span class="o">(</span><span class="k">new</span> <span class="n">CustomizableFeedMappings</span><span class="o">().</span><span class="na">setFcTargetPath</span><span class="o">(</span><span class="n">EdmTargetPath</span><span class="o">.</span><span class="na">SYNDICATION_UPDATED</span><span class="o">)));</span>
+
+    <span class="c1">// Navigation properties</span>
+    <span class="n">List</span><span class="o">&lt;</span><span class="n">NavigationProperty</span><span class="o">&gt;</span> <span class="n">navigationProperties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">NavigationProperty</span><span class="o">&gt;();</span>
+
+    <span class="c1">// Key</span>
+    <span class="n">List</span><span class="o">&lt;</span><span class="n">PropertyRef</span><span class="o">&gt;</span> <span class="n">keyProperties</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="o">&lt;</span><span class="n">PropertyRef</span><span class="o">&gt;();</span>
+    <span class="n">keyProperties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">PropertyRef</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Id&quot;</span><span class="o">));</span>
+    <span class="n">Key</span> <span class="n">key</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Key</span><span class="o">().</span><span class="na">setKeys</span><span class="o">(</span><span class="n">keyProperties</span><span class="o">);</span>
+
+    <span class="c1">// finish</span>
+    <span class="k">return</span> <span class="k">new</span> <span class="nf">EntityType</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="o">.</span><span class="na">getName</span><span class="o">())</span>
+        <span class="o">.</span><span class="na">setProperties</span><span class="o">(</span><span class="n">properties</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setHasStream</span><span class="o">(</span><span class="kc">true</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setKey</span><span class="o">(</span><span class="n">key</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setNavigationProperties</span><span class="o">(</span><span class="n">navigationProperties</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setMapping</span><span class="o">(</span><span class="k">new</span> <span class="n">Mapping</span><span class="o">().</span><span class="na">setMimeType</span><span class="o">(</span><span class="s">&quot;image/png&quot;</span><span class="o">));</span>
+<span class="o">}</span>
+<span class="o">...</span>
 </pre></div>
 
 
 <p>In addition it is necessary to extend the <code>getSchemas(…)</code> method with the according <code>EntityType</code> and <code>EntitySet</code> of the new Driver.</p>
-<div class="codehilite"><pre><span class="n">entityTypes</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">getEntityType</span><span class="p">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="p">));</span>
-<span class="n">entitySets</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">getEntitySet</span><span class="p">(</span><span class="n">ENTITY_CONTAINER</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">));</span>
+<div class="codehilite"><pre><span class="n">entityTypes</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">getEntityType</span><span class="o">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="o">));</span>
+<span class="n">entitySets</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="n">getEntitySet</span><span class="o">(</span><span class="n">ENTITY_CONTAINER</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">));</span>
 </pre></div>
 
 
 <p>And at last following constants are added to the <code>MyEdmProvider</code> for cleaner code.</p>
-<div class="codehilite"><pre>  <span class="n">static</span> <span class="n">final</span> <span class="n">String</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span> <span class="p">=</span> &quot;<span class="n">Drivers</span>&quot;<span class="p">;</span>
-  <span class="n">static</span> <span class="n">final</span> <span class="n">String</span> <span class="n">ENTITY_NAME_DRIVER</span> <span class="p">=</span> &quot;<span class="n">Driver</span>&quot;<span class="p">;</span>
-  <span class="n">private</span> <span class="n">static</span> <span class="n">final</span> <span class="n">FullQualifiedName</span> <span class="n">ENTITY_TYPE_1_3</span> <span class="p">=</span> <span class="n">new</span> <span class="n">FullQualifiedName</span><span class="p">(</span><span class="n">NAMESPACE</span><span class="p">,</span> <span class="n">ENTITY_NAME_DRIVER</span><span class="p">);</span>
+<div class="codehilite"><pre>  <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span> <span class="o">=</span> <span class="s">&quot;Drivers&quot;</span><span class="o">;</span>
+  <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ENTITY_NAME_DRIVER</span> <span class="o">=</span> <span class="s">&quot;Driver&quot;</span><span class="o">;</span>
+  <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">FullQualifiedName</span> <span class="n">ENTITY_TYPE_1_3</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FullQualifiedName</span><span class="o">(</span><span class="n">NAMESPACE</span><span class="o">,</span> <span class="n">ENTITY_NAME_DRIVER</span><span class="o">);</span>
 </pre></div>
 
 
@@ -170,23 +170,23 @@ The Driver gets a Key (Id) and some prop
 To handle now such read requests for our media resources we override and implement the <code>readEntityMedia(uriInfo:GetMediaResourceUriInfo, contentType:String):ODataResponse</code> method.
 For our scenario we simply have to validate the correct requested target <code>EntitySet</code>, get the key for requesting the data from our <code>DataStore</code> (which contains the binary data of our media resource), use the <code>EntityProvider</code> to write the data and at last build the <code>ODataResponse</code>.
 Seems a lot but in code this are only these few lines:</p>
-<div class="codehilite"><pre><span class="p">@</span><span class="n">Override</span>
-<span class="n">public</span> <span class="n">ODataResponse</span> <span class="n">readEntityMedia</span><span class="p">(</span><span class="n">final</span> <span class="n">GetMediaResourceUriInfo</span> <span class="n">uriInfo</span><span class="p">,</span> <span class="n">final</span> <span class="n">String</span> <span class="n">contentType</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ODataException</span> <span class="p">{</span>
+<div class="codehilite"><pre><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="n">ODataResponse</span> <span class="nf">readEntityMedia</span><span class="o">(</span><span class="kd">final</span> <span class="n">GetMediaResourceUriInfo</span> <span class="n">uriInfo</span><span class="o">,</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">contentType</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ODataException</span> <span class="o">{</span>
 
-  <span class="n">final</span> <span class="n">EdmEntitySet</span> <span class="n">entitySet</span> <span class="p">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getTargetEntitySet</span><span class="p">();</span>
-  <span class="k">if</span><span class="p">(</span><span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">entitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="n">int</span> <span class="n">id</span> <span class="p">=</span> <span class="n">getKeyValue</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getKeyPredicates</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">));</span>
-    <span class="n">byte</span><span class="p">[]</span> <span class="n">image</span> <span class="p">=</span> <span class="n">dataStore</span><span class="p">.</span><span class="n">readDriverImage</span><span class="p">(</span><span class="n">entitySet</span><span class="p">,</span> <span class="n">id</span><span class="p">);</span>
-    <span class="k">if</span> <span class="p">(</span><span class="n">image</span> <span class="o">==</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>
-      <span class="n">throw</span> <span class="n">new</span> <span class="n">ODataNotFoundException</span><span class="p">(</span><span class="n">ODataNotFoundException</span><span class="p">.</span><span class="n">ENTITY</span><span class="p">);</span>
-    <span class="p">}</span>
-
-    <span class="n">String</span> <span class="n">mimeType</span> <span class="p">=</span> &quot;<span class="n">image</span><span class="o">/</span><span class="n">png</span>&quot;<span class="p">;</span>
-    <span class="k">return</span> <span class="n">ODataResponse</span><span class="p">.</span><span class="n">fromResponse</span><span class="p">(</span><span class="n">EntityProvider</span><span class="p">.</span><span class="n">writeBinary</span><span class="p">(</span><span class="n">mimeType</span><span class="p">,</span> <span class="n">image</span><span class="p">)).</span><span class="n">build</span><span class="p">();</span>
-  <span class="p">}</span>
+  <span class="kd">final</span> <span class="n">EdmEntitySet</span> <span class="n">entitySet</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getTargetEntitySet</span><span class="o">();</span>
+  <span class="k">if</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">entitySet</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+    <span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getKeyValue</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getKeyPredicates</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="mi">0</span><span class="o">));</span>
+    <span class="kt">byte</span><span class="o">[]</span> <span class="n">image</span> <span class="o">=</span> <span class="n">dataStore</span><span class="o">.</span><span class="na">readDriverImage</span><span class="o">(</span><span class="n">entitySet</span><span class="o">,</span> <span class="n">id</span><span class="o">);</span>
+    <span class="k">if</span> <span class="o">(</span><span class="n">image</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+      <span class="k">throw</span> <span class="k">new</span> <span class="nf">ODataNotFoundException</span><span class="o">(</span><span class="n">ODataNotFoundException</span><span class="o">.</span><span class="na">ENTITY</span><span class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="n">String</span> <span class="n">mimeType</span> <span class="o">=</span> <span class="s">&quot;image/png&quot;</span><span class="o">;</span>
+    <span class="k">return</span> <span class="n">ODataResponse</span><span class="o">.</span><span class="na">fromResponse</span><span class="o">(</span><span class="n">EntityProvider</span><span class="o">.</span><span class="na">writeBinary</span><span class="o">(</span><span class="n">mimeType</span><span class="o">,</span> <span class="n">image</span><span class="o">)).</span><span class="na">build</span><span class="o">();</span>
+  <span class="o">}</span>
 
-  <span class="n">throw</span> <span class="n">new</span> <span class="n">ODataNotImplementedException</span><span class="p">();</span>
-<span class="p">}</span>
+  <span class="k">throw</span> <span class="k">new</span> <span class="nf">ODataNotImplementedException</span><span class="o">();</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -195,16 +195,16 @@ Seems a lot but in code this are only th
 <p>For access to the Driver as <code>Entity</code> and as <code>EntitySet</code> the according <code>readreadEntitySet(...)</code> and <code>readEntity(...)</code> methods have to be extended.</p>
 <p>But its quite the same procedure as in the basic read. Validate the requested Entity, get the key for requesting the <code>DataStore</code> and write the result data via the <code>EntityProvider</code>.</p>
 <p>The resulting extension for <code>readEntity(…)</code>:</p>
-<div class="codehilite"><pre>  <span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">entitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="n">int</span> <span class="n">id</span> <span class="p">=</span> <span class="n">getKeyValue</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getKeyPredicates</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">));</span>
-    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">data</span> <span class="p">=</span> <span class="n">dataStore</span><span class="p">.</span><span class="n">getDriver</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
-
-    <span class="k">if</span> <span class="p">(</span><span class="n">data</span> !<span class="p">=</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>
-      <span class="n">URI</span> <span class="n">serviceRoot</span> <span class="p">=</span> <span class="n">getContext</span><span class="p">().</span><span class="n">getPathInfo</span><span class="p">().</span><span class="n">getServiceRoot</span><span class="p">();</span>
-      <span class="n">ODataEntityProviderPropertiesBuilder</span> <span class="n">propertiesBuilder</span> <span class="p">=</span> <span class="n">EntityProviderWriteProperties</span><span class="p">.</span><span class="n">serviceRoot</span><span class="p">(</span><span class="n">serviceRoot</span><span class="p">);</span>
+<div class="codehilite"><pre>  <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">entitySet</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+    <span class="kt">int</span> <span class="n">id</span> <span class="o">=</span> <span class="n">getKeyValue</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getKeyPredicates</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="mi">0</span><span class="o">));</span>
+    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">data</span> <span class="o">=</span> <span class="n">dataStore</span><span class="o">.</span><span class="na">getDriver</span><span class="o">(</span><span class="n">id</span><span class="o">);</span>
+
+    <span class="k">if</span> <span class="o">(</span><span class="n">data</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+      <span class="n">URI</span> <span class="n">serviceRoot</span> <span class="o">=</span> <span class="n">getContext</span><span class="o">().</span><span class="na">getPathInfo</span><span class="o">().</span><span class="na">getServiceRoot</span><span class="o">();</span>
+      <span class="n">ODataEntityProviderPropertiesBuilder</span> <span class="n">propertiesBuilder</span> <span class="o">=</span> <span class="n">EntityProviderWriteProperties</span><span class="o">.</span><span class="na">serviceRoot</span><span class="o">(</span><span class="n">serviceRoot</span><span class="o">);</span>
 
-      <span class="k">return</span> <span class="n">EntityProvider</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">contentType</span><span class="p">,</span> <span class="n">entitySet</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">propertiesBuilder</span><span class="p">.</span><span class="n">build</span><span class="p">());</span>
-    <span class="p">}</span>
+      <span class="k">return</span> <span class="n">EntityProvider</span><span class="o">.</span><span class="na">writeEntry</span><span class="o">(</span><span class="n">contentType</span><span class="o">,</span> <span class="n">entitySet</span><span class="o">,</span> <span class="n">data</span><span class="o">,</span> <span class="n">propertiesBuilder</span><span class="o">.</span><span class="na">build</span><span class="o">());</span>
+    <span class="o">}</span>
 </pre></div>
 
 
@@ -221,13 +221,13 @@ Seems a lot but in code this are only th
 <p>For a more interesting sample we now create an association between a Driver and his Car.</p>
 <h3 id="extend-driver-and-car-in-myedmprovider-with-a-navigation-property">Extend Driver and Car in MyEdmProvider with a navigation property</h3>
 <p>At first we introduce the necessary constants:</p>
-<div class="codehilite"><pre>  <span class="n">private</span> <span class="n">static</span> <span class="n">final</span> <span class="n">FullQualifiedName</span> <span class="n">ASSOCIATION_DRIVER_CAR</span> <span class="p">=</span> <span class="n">new</span> <span class="n">FullQualifiedName</span><span class="p">(</span><span class="n">NAMESPACE</span><span class="p">,</span> &quot;<span class="n">Driver_Car</span><span class="o">-</span><span class="n">Car_Driver</span>&quot;<span class="p">);</span>
+<div class="codehilite"><pre>  <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">FullQualifiedName</span> <span class="n">ASSOCIATION_DRIVER_CAR</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FullQualifiedName</span><span class="o">(</span><span class="n">NAMESPACE</span><span class="o">,</span> <span class="s">&quot;Driver_Car-Car_Driver&quot;</span><span class="o">);</span>
 
-  <span class="n">private</span> <span class="n">static</span> <span class="n">final</span> <span class="n">String</span> <span class="n">ROLE_1_3</span> <span class="p">=</span> &quot;<span class="n">Car_Driver</span>&quot;<span class="p">;</span>
-  <span class="n">private</span> <span class="n">static</span> <span class="n">final</span> <span class="n">String</span> <span class="n">ROLE_3_1</span> <span class="p">=</span> &quot;<span class="n">Driver_Car</span>&quot;<span class="p">;</span>
+  <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ROLE_1_3</span> <span class="o">=</span> <span class="s">&quot;Car_Driver&quot;</span><span class="o">;</span>
+  <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ROLE_3_1</span> <span class="o">=</span> <span class="s">&quot;Driver_Car&quot;</span><span class="o">;</span>
 
-  <span class="n">private</span> <span class="n">static</span> <span class="n">final</span> <span class="n">String</span> <span class="n">ASSOCIATION_SET</span> <span class="p">=</span> &quot;<span class="n">Cars_Manufacturers</span>&quot;<span class="p">;</span>
-  <span class="n">private</span> <span class="n">static</span> <span class="n">final</span> <span class="n">String</span> <span class="n">ASSOCIATION_SET_CARS_DRIVERS</span> <span class="p">=</span> &quot;<span class="n">Cars_Drivers</span>&quot;<span class="p">;</span>
+  <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ASSOCIATION_SET</span> <span class="o">=</span> <span class="s">&quot;Cars_Manufacturers&quot;</span><span class="o">;</span>
+  <span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ASSOCIATION_SET_CARS_DRIVERS</span> <span class="o">=</span> <span class="s">&quot;Cars_Drivers&quot;</span><span class="o">;</span>
 </pre></div>
 
 
@@ -240,104 +240,104 @@ Seems a lot but in code this are only th
 
 <p>Next step is the extension of the entity types in <code>getEntityType()</code> in <code>MyEdmProvider</code>.</p>
 <p>For the Car:</p>
-<div class="codehilite"><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_TYPE_1_1</span><span class="p">.</span><span class="n">getName</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="n">edmFQName</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-<span class="p">...</span>
-    <span class="n">navigationProperties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">NavigationProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Driver</span>&quot;<span class="p">)</span>
-        <span class="p">.</span><span class="n">setRelationship</span><span class="p">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="p">).</span><span class="n">setFromRole</span><span class="p">(</span><span class="n">ROLE_1_3</span><span class="p">).</span><span class="n">setToRole</span><span class="p">(</span><span class="n">ROLE_3_1</span><span class="p">));</span>
-…
-<span class="p">}</span>
+<div class="codehilite"><pre>  <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_TYPE_1_1</span><span class="o">.</span><span class="na">getName</span><span class="o">().</span><span class="na">equals</span><span class="o">(</span><span class="n">edmFQName</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+<span class="o">...</span>
+    <span class="n">navigationProperties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">NavigationProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Driver&quot;</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setRelationship</span><span class="o">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="o">).</span><span class="na">setFromRole</span><span class="o">(</span><span class="n">ROLE_1_3</span><span class="o">).</span><span class="na">setToRole</span><span class="o">(</span><span class="n">ROLE_3_1</span><span class="o">));</span>
+<span class="err">…</span>
+<span class="o">}</span>
 </pre></div>
 
 
 <p>And the Driver:</p>
-<div class="codehilite"><pre>  <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="p">.</span><span class="n">getName</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="n">edmFQName</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-<span class="p">...</span>
-    <span class="k">properties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">SimpleProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">CarId</span>&quot;<span class="p">).</span><span class="n">setType</span><span class="p">(</span><span class="n">EdmSimpleTypeKind</span><span class="p">.</span><span class="n">Int32</span><span class="p">));</span>
-<span class="p">...</span>
-    <span class="n">navigationProperties</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="n">new</span> <span class="n">NavigationProperty</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span>&quot;<span class="n">Car</span>&quot;<span class="p">).</span><span class="n">setRelationship</span><span class="p">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="p">).</span><span class="n">setFromRole</span><span class="p">(</span><span class="n">ROLE_3_1</span><span class="p">).</span><span class="n">setToRole</span><span class="p">(</span><span class="n">ROLE_1_3</span><span class="p">));</span>
-<span class="p">...</span>
-<span class="p">}</span>
+<div class="codehilite"><pre>  <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="o">.</span><span class="na">getName</span><span class="o">().</span><span class="na">equals</span><span class="o">(</span><span class="n">edmFQName</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+<span class="o">...</span>
+    <span class="n">properties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">SimpleProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;CarId&quot;</span><span class="o">).</span><span class="na">setType</span><span class="o">(</span><span class="n">EdmSimpleTypeKind</span><span class="o">.</span><span class="na">Int32</span><span class="o">));</span>
+<span class="o">...</span>
+    <span class="n">navigationProperties</span><span class="o">.</span><span class="na">add</span><span class="o">(</span><span class="k">new</span> <span class="n">NavigationProperty</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="s">&quot;Car&quot;</span><span class="o">).</span><span class="na">setRelationship</span><span class="o">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="o">).</span><span class="na">setFromRole</span><span class="o">(</span><span class="n">ROLE_3_1</span><span class="o">).</span><span class="na">setToRole</span><span class="o">(</span><span class="n">ROLE_1_3</span><span class="o">));</span>
+<span class="o">...</span>
+<span class="o">}</span>
 </pre></div>
 
 
 <p>At last the <code>getAssociation(…)</code> and <code>getAssociationSet(...)</code> has also to be extended and has to look like:</p>
-<div class="codehilite"><pre><span class="p">@</span><span class="n">Override</span>
-<span class="n">public</span> <span class="n">Association</span> <span class="n">getAssociation</span><span class="p">(</span><span class="n">FullQualifiedName</span> <span class="n">edmFQName</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ODataException</span> <span class="p">{</span>
-  <span class="k">if</span> <span class="p">(</span><span class="n">NAMESPACE</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">edmFQName</span><span class="p">.</span><span class="n">getNamespace</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="p">.</span><span class="n">getName</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="n">edmFQName</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">new</span> <span class="n">Association</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="p">.</span><span class="n">getName</span><span class="p">())</span>
-        <span class="p">.</span><span class="n">setEnd1</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationEnd</span><span class="p">().</span><span class="n">setType</span><span class="p">(</span><span class="n">ENTITY_TYPE_1_1</span><span class="p">).</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_1_1</span><span class="p">).</span><span class="n">setMultiplicity</span><span class="p">(</span><span class="n">EdmMultiplicity</span><span class="p">.</span><span class="n">MANY</span><span class="p">))</span>
-        <span class="p">.</span><span class="n">setEnd2</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationEnd</span><span class="p">().</span><span class="n">setType</span><span class="p">(</span><span class="n">ENTITY_TYPE_1_2</span><span class="p">).</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_1_2</span><span class="p">).</span><span class="n">setMultiplicity</span><span class="p">(</span><span class="n">EdmMultiplicity</span><span class="p">.</span><span class="n">ONE</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">ASSOCIATION_DRIVER_CAR</span><span class="p">.</span><span class="n">getName</span><span class="p">().</span><span class="n">equals</span><span class="p">(</span><span class="n">edmFQName</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="n">new</span> <span class="n">Association</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="p">.</span><span class="n">getName</span><span class="p">())</span>
-        <span class="p">.</span><span class="n">setEnd1</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationEnd</span><span class="p">().</span><span class="n">setType</span><span class="p">(</span><span class="n">ENTITY_TYPE_1_1</span><span class="p">).</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_1_3</span><span class="p">).</span><span class="n">setMultiplicity</span><span class="p">(</span><span class="n">EdmMultiplicity</span><span class="p">.</span><span class="n">ONE</span><span class="p">))</span>
-        <span class="p">.</span><span class="n">setEnd2</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationEnd</span><span class="p">().</span><span class="n">setType</span><span class="p">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="p">).</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_3_1</span><span class="p">).</span><span class="n">setMultiplicity</span><span class="p">(</span><span class="n">EdmMultiplicity</span><span class="p">.</span><span class="n">ONE</span><span class="p">));</span>
-    <span class="p">}</span>
-  <span class="p">}</span>
-  <span class="k">return</span> <span class="n">null</span><span class="p">;</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="n">Association</span> <span class="nf">getAssociation</span><span class="o">(</span><span class="n">FullQualifiedName</span> <span class="n">edmFQName</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ODataException</span> <span class="o">{</span>
+  <span class="k">if</span> <span class="o">(</span><span class="n">NAMESPACE</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">edmFQName</span><span class="o">.</span><span class="na">getNamespace</span><span class="o">()))</span> <span class="o">{</span>
+    <span class="k">if</span> <span class="o">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="o">.</span><span class="na">getName</span><span class="o">().</span><span class="na">equals</span><span class="o">(</span><span class="n">edmFQName</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="k">new</span> <span class="nf">Association</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="o">.</span><span class="na">getName</span><span class="o">())</span>
+        <span class="o">.</span><span class="na">setEnd1</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationEnd</span><span class="o">().</span><span class="na">setType</span><span class="o">(</span><span class="n">ENTITY_TYPE_1_1</span><span class="o">).</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_1_1</span><span class="o">).</span><span class="na">setMultiplicity</span><span class="o">(</span><span class="n">EdmMultiplicity</span><span class="o">.</span><span class="na">MANY</span><span class="o">))</span>
+        <span class="o">.</span><span class="na">setEnd2</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationEnd</span><span class="o">().</span><span class="na">setType</span><span class="o">(</span><span class="n">ENTITY_TYPE_1_2</span><span class="o">).</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_1_2</span><span class="o">).</span><span class="na">setMultiplicity</span><span class="o">(</span><span class="n">EdmMultiplicity</span><span class="o">.</span><span class="na">ONE</span><span class="o">));</span>
+    <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="o">.</span><span class="na">getName</span><span class="o">().</span><span class="na">equals</span><span class="o">(</span><span class="n">edmFQName</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+    <span class="k">return</span> <span class="k">new</span> <span class="nf">Association</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="o">.</span><span class="na">getName</span><span class="o">())</span>
+        <span class="o">.</span><span class="na">setEnd1</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationEnd</span><span class="o">().</span><span class="na">setType</span><span class="o">(</span><span class="n">ENTITY_TYPE_1_1</span><span class="o">).</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_1_3</span><span class="o">).</span><span class="na">setMultiplicity</span><span class="o">(</span><span class="n">EdmMultiplicity</span><span class="o">.</span><span class="na">ONE</span><span class="o">))</span>
+        <span class="o">.</span><span class="na">setEnd2</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationEnd</span><span class="o">().</span><span class="na">setType</span><span class="o">(</span><span class="n">ENTITY_TYPE_1_3</span><span class="o">).</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_3_1</span><span class="o">).</span><span class="na">setMultiplicity</span><span class="o">(</span><span class="n">EdmMultiplicity</span><span class="o">.</span><span class="na">ONE</span><span class="o">));</span>
+    <span class="o">}</span>
+  <span class="o">}</span>
+  <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
+<span class="o">}</span>
 
 
 
-<span class="p">@</span><span class="n">Override</span>
-<span class="n">public</span> <span class="n">AssociationSet</span> <span class="n">getAssociationSet</span><span class="p">(</span><span class="n">String</span> <span class="n">entityContainer</span><span class="p">,</span> <span class="n">FullQualifiedName</span> <span class="n">association</span><span class="p">,</span> <span class="n">String</span> <span class="n">sourceEntitySetName</span><span class="p">,</span> <span class="n">String</span> <span class="n">sourceEntitySetRole</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ODataException</span> <span class="p">{</span>
-  <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_CONTAINER</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">entityContainer</span><span class="p">))</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">association</span><span class="p">))</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">new</span> <span class="n">AssociationSet</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span><span class="n">ASSOCIATION_SET</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setAssociation</span><span class="p">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setEnd1</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationSetEnd</span><span class="p">().</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_1_2</span><span class="p">).</span><span class="n">setEntitySet</span><span class="p">(</span><span class="n">ENTITY_SET_NAME_MANUFACTURERS</span><span class="p">))</span>
-        <span class="p">.</span><span class="n">setEnd2</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationSetEnd</span><span class="p">().</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_1_1</span><span class="p">).</span><span class="n">setEntitySet</span><span class="p">(</span><span class="n">ENTITY_SET_NAME_CARS</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">ASSOCIATION_DRIVER_CAR</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">association</span><span class="p">))</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">new</span> <span class="n">AssociationSet</span><span class="p">().</span><span class="n">setName</span><span class="p">(</span><span class="n">ASSOCIATION_SET_CARS_DRIVERS</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setAssociation</span><span class="p">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">setEnd1</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationSetEnd</span><span class="p">().</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_3_1</span><span class="p">).</span><span class="n">setEntitySet</span><span class="p">(</span><span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">))</span>
-        <span class="p">.</span><span class="n">setEnd2</span><span class="p">(</span><span class="n">new</span> <span class="n">AssociationSetEnd</span><span class="p">().</span><span class="n">setRole</span><span class="p">(</span><span class="n">ROLE_1_3</span><span class="p">).</span><span class="n">setEntitySet</span><span class="p">(</span><span class="n">ENTITY_SET_NAME_CARS</span><span class="p">));</span>
-    <span class="p">}</span>
-  <span class="p">}</span>
-  <span class="k">return</span> <span class="n">null</span><span class="p">;</span>
-<span class="p">}</span>
+<span class="nd">@Override</span>
+<span class="kd">public</span> <span class="n">AssociationSet</span> <span class="nf">getAssociationSet</span><span class="o">(</span><span class="n">String</span> <span class="n">entityContainer</span><span class="o">,</span> <span class="n">FullQualifiedName</span> <span class="n">association</span><span class="o">,</span> <span class="n">String</span> <span class="n">sourceEntitySetName</span><span class="o">,</span> <span class="n">String</span> <span class="n">sourceEntitySetRole</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ODataException</span> <span class="o">{</span>
+  <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_CONTAINER</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">entityContainer</span><span class="o">))</span> <span class="o">{</span>
+    <span class="k">if</span> <span class="o">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">association</span><span class="o">))</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="k">new</span> <span class="nf">AssociationSet</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="n">ASSOCIATION_SET</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setAssociation</span><span class="o">(</span><span class="n">ASSOCIATION_CAR_MANUFACTURER</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setEnd1</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationSetEnd</span><span class="o">().</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_1_2</span><span class="o">).</span><span class="na">setEntitySet</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_MANUFACTURERS</span><span class="o">))</span>
+        <span class="o">.</span><span class="na">setEnd2</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationSetEnd</span><span class="o">().</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_1_1</span><span class="o">).</span><span class="na">setEntitySet</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_CARS</span><span class="o">));</span>
+    <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">association</span><span class="o">))</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="k">new</span> <span class="nf">AssociationSet</span><span class="o">().</span><span class="na">setName</span><span class="o">(</span><span class="n">ASSOCIATION_SET_CARS_DRIVERS</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setAssociation</span><span class="o">(</span><span class="n">ASSOCIATION_DRIVER_CAR</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">setEnd1</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationSetEnd</span><span class="o">().</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_3_1</span><span class="o">).</span><span class="na">setEntitySet</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">))</span>
+        <span class="o">.</span><span class="na">setEnd2</span><span class="o">(</span><span class="k">new</span> <span class="n">AssociationSetEnd</span><span class="o">().</span><span class="na">setRole</span><span class="o">(</span><span class="n">ROLE_1_3</span><span class="o">).</span><span class="na">setEntitySet</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_CARS</span><span class="o">));</span>
+    <span class="o">}</span>
+  <span class="o">}</span>
+  <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
+<span class="o">}</span>
 </pre></div>
 
 
 <h3 id="extend-existing-readreadentityset-and-readentity-methods-in-myodatasingleprocessor">Extend existing <code>readreadEntitySet(...)</code> and <code>readEntity(...)</code> methods in <code>MyODataSingleProcessor</code></h3>
 <p>For cleaner code we introduce at first following method in the <code>MyODataSingleProcessor</code> which validate if the uri contains the expected association.</p>
-<div class="codehilite"><pre><span class="n">private</span> <span class="n">boolean</span> <span class="n">isAssociation</span><span class="p">(</span><span class="n">GetEntityUriInfo</span> <span class="n">uriInfo</span><span class="p">,</span> <span class="n">String</span> <span class="n">startName</span><span class="p">,</span> <span class="n">String</span> <span class="n">targetName</span><span class="p">)</span> <span class="n">throws</span> <span class="n">EdmException</span> <span class="p">{</span>
-  <span class="k">if</span><span class="p">(</span><span class="n">startName</span> <span class="o">==</span> <span class="n">null</span> <span class="o">||</span> <span class="n">targetName</span> <span class="o">==</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>
-  <span class="k">return</span> <span class="n">false</span><span class="p">;</span>
-  <span class="p">}</span>
-  <span class="n">EdmEntitySet</span> <span class="n">startEntitySet</span> <span class="p">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getStartEntitySet</span><span class="p">();</span>
-  <span class="n">EdmEntitySet</span> <span class="n">targetEntitySet</span> <span class="p">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getTargetEntitySet</span><span class="p">();</span>
+<div class="codehilite"><pre><span class="kd">private</span> <span class="kt">boolean</span> <span class="nf">isAssociation</span><span class="o">(</span><span class="n">GetEntityUriInfo</span> <span class="n">uriInfo</span><span class="o">,</span> <span class="n">String</span> <span class="n">startName</span><span class="o">,</span> <span class="n">String</span> <span class="n">targetName</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">EdmException</span> <span class="o">{</span>
+  <span class="k">if</span><span class="o">(</span><span class="n">startName</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">||</span> <span class="n">targetName</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+  <span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
+  <span class="o">}</span>
+  <span class="n">EdmEntitySet</span> <span class="n">startEntitySet</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getStartEntitySet</span><span class="o">();</span>
+  <span class="n">EdmEntitySet</span> <span class="n">targetEntitySet</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getTargetEntitySet</span><span class="o">();</span>
 
-  <span class="k">return</span> <span class="n">startName</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">startEntitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="n">targetName</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">targetEntitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">());</span>
-<span class="p">}</span>
+  <span class="k">return</span> <span class="n">startName</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">startEntitySet</span><span class="o">.</span><span class="na">getName</span><span class="o">())</span> <span class="o">&amp;&amp;</span> <span class="n">targetName</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">targetEntitySet</span><span class="o">.</span><span class="na">getName</span><span class="o">());</span>
+<span class="o">}</span>
 </pre></div>
 
 
 <p>The procedure should be already familiar. At first it is checked for the correct association of the requested Entity, then the key for requesting the DataStore is get as well as the data and then result data is written via the <code>EntityProvider</code>.</p>
-<div class="codehilite"><pre><span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getNavigationSegments</span><span class="p">().</span><span class="nb">size</span><span class="p">()</span> <span class="o">==</span> 1<span class="p">)</span> <span class="p">{</span>
-  <span class="o">//</span><span class="n">navigation</span> <span class="n">first</span> <span class="n">level</span><span class="p">,</span> <span class="n">simplified</span> <span class="n">example</span> <span class="k">for</span> <span class="n">illustration</span> <span class="n">purposes</span> <span class="n">only</span>
-  <span class="n">EdmEntitySet</span> <span class="n">entitySet</span> <span class="p">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getTargetEntitySet</span><span class="p">();</span>
-
-  <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">data</span> <span class="p">=</span> <span class="n">null</span><span class="p">;</span>
-
-  <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_SET_NAME_MANUFACTURERS</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">entitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="n">int</span> <span class="n">carKey</span> <span class="p">=</span> <span class="n">getKeyValue</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getKeyPredicates</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">));</span>
-    <span class="n">data</span> <span class="p">=</span> <span class="n">dataStore</span><span class="p">.</span><span class="n">getManufacturerFor</span><span class="p">(</span><span class="n">carKey</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">isAssociation</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_CARS</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">))</span> <span class="p">{</span>
-    <span class="n">int</span> <span class="n">carKey</span> <span class="p">=</span> <span class="n">getKeyValue</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getKeyPredicates</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">));</span>
-    <span class="n">data</span> <span class="p">=</span> <span class="n">dataStore</span><span class="p">.</span><span class="n">getDriverFor</span><span class="p">(</span><span class="n">carKey</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">isAssociation</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_CARS</span><span class="p">))</span> <span class="p">{</span>
-    <span class="n">int</span> <span class="n">driverKey</span> <span class="p">=</span> <span class="n">getKeyValue</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getKeyPredicates</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">));</span>
-    <span class="n">data</span> <span class="p">=</span> <span class="n">dataStore</span><span class="p">.</span><span class="n">getCarFor</span><span class="p">(</span><span class="n">driverKey</span><span class="p">);</span>
-  <span class="p">}</span>
-
-  <span class="k">if</span><span class="p">(</span><span class="n">data</span> !<span class="p">=</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span> <span class="n">EntityProvider</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">contentType</span><span class="p">,</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getTargetEntitySet</span><span class="p">(),</span> 
-        <span class="n">data</span><span class="p">,</span> <span class="n">EntityProviderWriteProperties</span><span class="p">.</span><span class="n">serviceRoot</span><span class="p">(</span><span class="n">getContext</span><span class="p">().</span><span class="n">getPathInfo</span><span class="p">().</span><span class="n">getServiceRoot</span><span class="p">()).</span><span class="n">build</span><span class="p">());</span>
-  <span class="p">}</span>
+<div class="codehilite"><pre><span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getNavigationSegments</span><span class="o">().</span><span class="na">size</span><span class="o">()</span> <span class="o">==</span> <span class="mi">1</span><span class="o">)</span> <span class="o">{</span>
+  <span class="c1">//navigation first level, simplified example for illustration purposes only</span>
+  <span class="n">EdmEntitySet</span> <span class="n">entitySet</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getTargetEntitySet</span><span class="o">();</span>
+
+  <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">data</span> <span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
+
+  <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_SET_NAME_MANUFACTURERS</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">entitySet</span><span class="o">.</span><span class="na">getName</span><span class="o">()))</span> <span class="o">{</span>
+    <span class="kt">int</span> <span class="n">carKey</span> <span class="o">=</span> <span class="n">getKeyValue</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getKeyPredicates</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="mi">0</span><span class="o">));</span>
+    <span class="n">data</span> <span class="o">=</span> <span class="n">dataStore</span><span class="o">.</span><span class="na">getManufacturerFor</span><span class="o">(</span><span class="n">carKey</span><span class="o">);</span>
+  <span class="o">}</span> <span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="n">isAssociation</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_CARS</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">))</span> <span class="o">{</span>
+    <span class="kt">int</span> <span class="n">carKey</span> <span class="o">=</span> <span class="n">getKeyValue</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getKeyPredicates</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="mi">0</span><span class="o">));</span>
+    <span class="n">data</span> <span class="o">=</span> <span class="n">dataStore</span><span class="o">.</span><span class="na">getDriverFor</span><span class="o">(</span><span class="n">carKey</span><span class="o">);</span>
+  <span class="o">}</span> <span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="n">isAssociation</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_CARS</span><span class="o">))</span> <span class="o">{</span>
+    <span class="kt">int</span> <span class="n">driverKey</span> <span class="o">=</span> <span class="n">getKeyValue</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getKeyPredicates</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="mi">0</span><span class="o">));</span>
+    <span class="n">data</span> <span class="o">=</span> <span class="n">dataStore</span><span class="o">.</span><span class="na">getCarFor</span><span class="o">(</span><span class="n">driverKey</span><span class="o">);</span>
+  <span class="o">}</span>
+
+  <span class="k">if</span><span class="o">(</span><span class="n">data</span> <span class="o">!=</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">return</span> <span class="n">EntityProvider</span><span class="o">.</span><span class="na">writeEntry</span><span class="o">(</span><span class="n">contentType</span><span class="o">,</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getTargetEntitySet</span><span class="o">(),</span> 
+        <span class="n">data</span><span class="o">,</span> <span class="n">EntityProviderWriteProperties</span><span class="o">.</span><span class="na">serviceRoot</span><span class="o">(</span><span class="n">getContext</span><span class="o">().</span><span class="na">getPathInfo</span><span class="o">().</span><span class="na">getServiceRoot</span><span class="o">()).</span><span class="na">build</span><span class="o">());</span>
+  <span class="o">}</span>
 
-  <span class="n">throw</span> <span class="n">new</span> <span class="n">ODataNotFoundException</span><span class="p">(</span><span class="n">ODataNotFoundException</span><span class="p">.</span><span class="n">ENTITY</span><span class="p">);</span>
-<span class="p">}</span>
+  <span class="k">throw</span> <span class="k">new</span> <span class="nf">ODataNotFoundException</span><span class="o">(</span><span class="n">ODataNotFoundException</span><span class="o">.</span><span class="na">ENTITY</span><span class="o">);</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -347,63 +347,63 @@ Seems a lot but in code this are only th
 <p>Add first the extension in the MyCallback for each entity is done in the <code>retrieveEntryResult()</code> method.
 The procedure is similar to the Cars - Manufacturers association. At first it is checked for the correct association of the requested Entity, then the key for requesting the DataStore is get as well as the data and then result data is attached to the <code>WriteEntryCallbackResult</code>.</p>
 <p>The resulting method extension is:</p>
-<div class="codehilite"><pre><span class="p">...</span>
-  <span class="k">if</span><span class="p">(</span><span class="n">isNavigationFromTo</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_CARS</span><span class="p">,</span> <span class="n">ENTITY_NAME_DRIVER</span><span class="p">))</span> <span class="p">{</span>
-    <span class="n">EntityProviderWriteProperties</span> <span class="n">inlineProperties</span> <span class="p">=</span> <span class="n">EntityProviderWriteProperties</span><span class="p">.</span><span class="n">serviceRoot</span><span class="p">(</span><span class="n">serviceRoot</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">expandSelectTree</span><span class="p">(</span><span class="n">context</span><span class="p">.</span><span class="n">getCurrentExpandSelectTreeNode</span><span class="p">())</span>
-        <span class="p">.</span><span class="n">build</span><span class="p">();</span>
-
-    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">keys</span> <span class="p">=</span> <span class="n">context</span><span class="p">.</span><span class="n">extractKeyFromEntryData</span><span class="p">();</span>
-    <span class="n">Integer</span> <span class="n">carId</span> <span class="p">=</span> <span class="p">(</span><span class="n">Integer</span><span class="p">)</span> <span class="n">keys</span><span class="p">.</span><span class="n">get</span><span class="p">(</span>&quot;<span class="n">Id</span>&quot;<span class="p">);</span>
-    <span class="n">result</span><span class="p">.</span><span class="n">setEntryData</span><span class="p">(</span><span class="n">dataStore</span><span class="p">.</span><span class="n">getDriverFor</span><span class="p">(</span><span class="n">carId</span><span class="p">));</span>
-    <span class="n">result</span><span class="p">.</span><span class="n">setInlineProperties</span><span class="p">(</span><span class="n">inlineProperties</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">isNavigationFromTo</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="p">,</span> <span class="n">ENTITY_NAME_CAR</span><span class="p">))</span> <span class="p">{</span>
-    <span class="n">EntityProviderWriteProperties</span> <span class="n">inlineProperties</span> <span class="p">=</span> <span class="n">EntityProviderWriteProperties</span><span class="p">.</span><span class="n">serviceRoot</span><span class="p">(</span><span class="n">serviceRoot</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">expandSelectTree</span><span class="p">(</span><span class="n">context</span><span class="p">.</span><span class="n">getCurrentExpandSelectTreeNode</span><span class="p">())</span>
-        <span class="p">.</span><span class="n">build</span><span class="p">();</span>
-
-    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">keys</span> <span class="p">=</span> <span class="n">context</span><span class="p">.</span><span class="n">extractKeyFromEntryData</span><span class="p">();</span>
-    <span class="n">Integer</span> <span class="n">driverId</span> <span class="p">=</span> <span class="p">(</span><span class="n">Integer</span><span class="p">)</span> <span class="n">keys</span><span class="p">.</span><span class="n">get</span><span class="p">(</span>&quot;<span class="n">Id</span>&quot;<span class="p">);</span>
-    <span class="n">result</span><span class="p">.</span><span class="n">setEntryData</span><span class="p">(</span><span class="n">dataStore</span><span class="p">.</span><span class="n">getCarFor</span><span class="p">(</span><span class="n">driverId</span><span class="p">));</span>
-    <span class="n">result</span><span class="p">.</span><span class="n">setInlineProperties</span><span class="p">(</span><span class="n">inlineProperties</span><span class="p">);</span>        
-  <span class="p">}</span>
-<span class="p">...</span>
+<div class="codehilite"><pre><span class="o">...</span>
+  <span class="k">if</span><span class="o">(</span><span class="n">isNavigationFromTo</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_CARS</span><span class="o">,</span> <span class="n">ENTITY_NAME_DRIVER</span><span class="o">))</span> <span class="o">{</span>
+    <span class="n">EntityProviderWriteProperties</span> <span class="n">inlineProperties</span> <span class="o">=</span> <span class="n">EntityProviderWriteProperties</span><span class="o">.</span><span class="na">serviceRoot</span><span class="o">(</span><span class="n">serviceRoot</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">expandSelectTree</span><span class="o">(</span><span class="n">context</span><span class="o">.</span><span class="na">getCurrentExpandSelectTreeNode</span><span class="o">())</span>
+        <span class="o">.</span><span class="na">build</span><span class="o">();</span>
+
+    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">keys</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">extractKeyFromEntryData</span><span class="o">();</span>
+    <span class="n">Integer</span> <span class="n">carId</span> <span class="o">=</span> <span class="o">(</span><span class="n">Integer</span><span class="o">)</span> <span class="n">keys</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">&quot;Id&quot;</span><span class="o">);</span>
+    <span class="n">result</span><span class="o">.</span><span class="na">setEntryData</span><span class="o">(</span><span class="n">dataStore</span><span class="o">.</span><span class="na">getDriverFor</span><span class="o">(</span><span class="n">carId</span><span class="o">));</span>
+    <span class="n">result</span><span class="o">.</span><span class="na">setInlineProperties</span><span class="o">(</span><span class="n">inlineProperties</span><span class="o">);</span>
+
+  <span class="o">}</span> <span class="k">else</span> <span class="k">if</span><span class="o">(</span><span class="n">isNavigationFromTo</span><span class="o">(</span><span class="n">context</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_DRIVERS</span><span class="o">,</span> <span class="n">ENTITY_NAME_CAR</span><span class="o">))</span> <span class="o">{</span>
+    <span class="n">EntityProviderWriteProperties</span> <span class="n">inlineProperties</span> <span class="o">=</span> <span class="n">EntityProviderWriteProperties</span><span class="o">.</span><span class="na">serviceRoot</span><span class="o">(</span><span class="n">serviceRoot</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">expandSelectTree</span><span class="o">(</span><span class="n">context</span><span class="o">.</span><span class="na">getCurrentExpandSelectTreeNode</span><span class="o">())</span>
+        <span class="o">.</span><span class="na">build</span><span class="o">();</span>
+
+    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">keys</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">extractKeyFromEntryData</span><span class="o">();</span>
+    <span class="n">Integer</span> <span class="n">driverId</span> <span class="o">=</span> <span class="o">(</span><span class="n">Integer</span><span class="o">)</span> <span class="n">keys</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="s">&quot;Id&quot;</span><span class="o">);</span>
+    <span class="n">result</span><span class="o">.</span><span class="na">setEntryData</span><span class="o">(</span><span class="n">dataStore</span><span class="o">.</span><span class="na">getCarFor</span><span class="o">(</span><span class="n">driverId</span><span class="o">));</span>
+    <span class="n">result</span><span class="o">.</span><span class="na">setInlineProperties</span><span class="o">(</span><span class="n">inlineProperties</span><span class="o">);</span>        
+  <span class="o">}</span>
+<span class="o">...</span>
 </pre></div>
 
 
 <h3 id="add-registration-of-mycallback-for-driver-and-car-association">Add registration of MyCallback for Driver and Car association</h3>
 <p>After extension of <code>MyCallback</code> it is necessary to register a callback within the <code>readEntity()</code> in the <code>MyODataSingleProcessor</code>.</p>
 <p>For the Driver we add the complete callback registration (code between the comments) which results in final code for the complete Driver Entity handling:</p>
-<div class="codehilite"><pre><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">ENTITY_SET_NAME_DRIVERS</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">entitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">()))</span> <span class="p">{</span>
-    <span class="n">int</span> <span class="n">id</span> <span class="p">=</span> <span class="n">getKeyValue</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getKeyPredicates</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">));</span>
-    <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">Object</span><span class="o">&gt;</span> <span class="n">data</span> <span class="p">=</span> <span class="n">dataStore</span><span class="p">.</span><span class="n">getDriver</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
-
-    <span class="k">if</span> <span class="p">(</span><span class="n">data</span> !<span class="p">=</span> <span class="n">null</span><span class="p">)</span> <span class="p">{</span>
-      <span class="n">URI</span> <span class="n">serviceRoot</span> <span class="p">=</span> <span class="n">getContext</span><span class="p">().</span><span class="n">getPathInfo</span><span class="p">().</span><span class="n">getServiceRoot</span><span class="p">();</span>
-      <span class="n">ODataEntityProviderPropertiesBuilder</span> <span class="n">propertiesBuilder</span> <span class="p">=</span> <span class="n">EntityProviderWriteProperties</span><span class="p">.</span><span class="n">serviceRoot</span><span class="p">(</span><span class="n">serviceRoot</span><span class="p">);</span>
-
-      <span class="o">//</span> <span class="n">create</span> <span class="n">and</span> <span class="n">register</span> <span class="n">callback</span>
-      <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">ODataCallback</span><span class="o">&gt;</span> <span class="n">callbacks</span> <span class="p">=</span> <span class="n">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="p">,</span> <span class="n">ODataCallback</span><span class="o">&gt;</span><span class="p">();</span>
-      <span class="n">callbacks</span><span class="p">.</span><span class="n">put</span><span class="p">(</span><span class="n">ENTITY_NAME_CAR</span><span class="p">,</span> <span class="n">new</span> <span class="n">MyCallback</span><span class="p">(</span><span class="n">dataStore</span><span class="p">,</span> <span class="n">serviceRoot</span><span class="p">));</span>
-      <span class="n">ExpandSelectTreeNode</span> <span class="n">expandSelectTreeNode</span> <span class="p">=</span> <span class="n">UriParser</span><span class="p">.</span><span class="n">createExpandSelectTree</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">.</span><span class="n">getSelect</span><span class="p">(),</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getExpand</span><span class="p">());</span>
-      <span class="n">propertiesBuilder</span><span class="p">.</span><span class="n">expandSelectTree</span><span class="p">(</span><span class="n">expandSelectTreeNode</span><span class="p">).</span><span class="n">callbacks</span><span class="p">(</span><span class="n">callbacks</span><span class="p">);</span>
-      <span class="o">//</span> <span class="k">end</span> <span class="n">callback</span> <span class="n">handling</span>
-

[... 42 lines stripped ...]