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:29:58 UTC

svn commit: r880532 - in /websites/staging/olingo/trunk/content: ./ doc/tutorials/read_expand.html

Author: buildbot
Date: Mon Sep 30 14:29:58 2013
New Revision: 880532

Log:
Staging update by buildbot for olingo

Modified:
    websites/staging/olingo/trunk/content/   (props changed)
    websites/staging/olingo/trunk/content/doc/tutorials/read_expand.html

Propchange: websites/staging/olingo/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Sep 30 14:29:58 2013
@@ -1 +1 @@
-1527591
+1527594

Modified: websites/staging/olingo/trunk/content/doc/tutorials/read_expand.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/tutorials/read_expand.html (original)
+++ websites/staging/olingo/trunk/content/doc/tutorials/read_expand.html Mon Sep 30 14:29:58 2013
@@ -100,31 +100,31 @@ It shows how to call the <code>EntityPro
 To support <code>$expand</code> for a single entry the interface <code>org.apache.olingo.odata2.api.ep.callback.OnWriteEntryContent</code> must be implemented. This provides the method <code>WriteEntryCallbackResult retrieveEntryResult(WriteEntryCallbackContext context) throws ODataApplicationException;</code> which is called during processing from the <code>EntityProvider</code> to receive the necessary data which than is inlined in the response.</p>
 <p>In our sample we create a class <code>MyCallback</code> which implements <code>org.apache.olingo.odata2.api.ep.callback.OnWriteEntryContent</code> in following way:</p>
 <h4 id="sample-code">Sample Code</h4>
-<div class="codehilite"><pre><span class="p">@</span><span class="n">Override</span>
-<span class="n">public</span> <span class="n">WriteEntryCallbackResult</span> <span class="n">retrieveEntryResult</span><span class="p">(</span><span class="n">WriteEntryCallbackContext</span> <span class="n">context</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ODataApplicationException</span> <span class="p">{</span>
-<span class="n">WriteEntryCallbackResult</span> <span class="n">result</span> <span class="p">=</span> <span class="n">new</span> <span class="n">WriteEntryCallbackResult</span><span class="p">();</span>
-
-  <span class="k">try</span> <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_MANUFACTURER</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">getManufacturerFor</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="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">EdmException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
-  <span class="o">//</span> <span class="n">TODO</span><span class="p">:</span> <span class="n">should</span> <span class="n">be</span> <span class="n">handled</span> <span class="n">and</span> <span class="n">not</span> <span class="n">only</span> <span class="n">logged</span>
-  <span class="n">LOG</span><span class="p">.</span><span class="n">error</span><span class="p">(</span>&quot;<span class="n">Error</span> <span class="n">in</span> $<span class="n">expand</span> <span class="n">handling</span><span class="p">.</span>&quot;<span class="p">,</span> <span class="n">e</span><span class="p">);</span>
-  <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">EntityProviderException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
-  <span class="o">//</span> <span class="n">TODO</span><span class="p">:</span> <span class="n">should</span> <span class="n">be</span> <span class="n">handled</span> <span class="n">and</span> <span class="n">not</span> <span class="n">only</span> <span class="n">logged</span>
-  <span class="n">LOG</span><span class="p">.</span><span class="n">error</span><span class="p">(</span>&quot;<span class="n">Error</span> <span class="n">in</span> $<span class="n">expand</span> <span class="n">handling</span><span class="p">.</span>&quot;<span class="p">,</span> <span class="n">e</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">WriteEntryCallbackResult</span> <span class="nf">retrieveEntryResult</span><span class="o">(</span><span class="n">WriteEntryCallbackContext</span> <span class="n">context</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ODataApplicationException</span> <span class="o">{</span>
+<span class="n">WriteEntryCallbackResult</span> <span class="n">result</span> <span class="o">=</span> <span class="k">new</span> <span class="n">WriteEntryCallbackResult</span><span class="o">();</span>
+
+  <span class="k">try</span> <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_MANUFACTURER</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">getManufacturerFor</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="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">EdmException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+  <span class="c1">// TODO: should be handled and not only logged</span>
+  <span class="n">LOG</span><span class="o">.</span><span class="na">error</span><span class="o">(</span><span class="s">&quot;Error in $expand handling.&quot;</span><span class="o">,</span> <span class="n">e</span><span class="o">);</span>
+  <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">EntityProviderException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+  <span class="c1">// TODO: should be handled and not only logged</span>
+  <span class="n">LOG</span><span class="o">.</span><span class="na">error</span><span class="o">(</span><span class="s">&quot;Error in $expand handling.&quot;</span><span class="o">,</span> <span class="n">e</span><span class="o">);</span>
+  <span class="o">}</span>
 
-  <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
-<span class="p">}</span>
+  <span class="k">return</span> <span class="n">result</span><span class="o">;</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -133,30 +133,30 @@ To support <code>$expand</code> for a si
 <p>To support <code>$expand</code> for a feed of entries (entity set) the interface <code>org.apache.olingo.odata2.api.ep.callback.OnWriteFeedContent</code> must be implemented. These provides the method <code>WriteFeedCallbackResult retrieveFeedResult(WriteFeedCallbackContext context) throws ODataApplicationException;</code> which is called during processing from the <code>EntityProvider</code> to receive the necessary data which than is inlined in the response.</p>
 <p>It is possible to create an additional callback class but for convenience we expand our already created callback (<code>MyCallback</code>) to implement <code>org.apache.olingo.odata2.api.ep.callback.OnWriteFeedContent</code> and provide the method implementation in following way:</p>
 <h4 id="sample-code_1">Sample Code</h4>
-<div class="codehilite"><pre><span class="p">@</span><span class="n">Override</span>
-<span class="n">public</span> <span class="n">WriteFeedCallbackResult</span> <span class="n">retrieveFeedResult</span><span class="p">(</span><span class="n">WriteFeedCallbackContext</span> <span class="n">context</span><span class="p">)</span> <span class="n">throws</span> <span class="n">ODataApplicationException</span> <span class="p">{</span>
-<span class="n">WriteFeedCallbackResult</span> <span class="n">result</span> <span class="p">=</span> <span class="n">new</span> <span class="n">WriteFeedCallbackResult</span><span class="p">();</span>
-  <span class="k">try</span> <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_MANUFACTURERS</span><span class="p">,</span> <span class="n">ENTITY_SET_NAME_CARS</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">selfLink</span><span class="p">(</span><span class="n">context</span><span class="p">.</span><span class="n">getSelfLink</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">manufacturerId</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">setFeedData</span><span class="p">(</span><span class="n">dataStore</span><span class="p">.</span><span class="n">getCarsFor</span><span class="p">(</span><span class="n">manufacturerId</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> <span class="k">catch</span> <span class="p">(</span><span class="n">EdmException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
-  <span class="o">//</span> <span class="n">TODO</span><span class="p">:</span> <span class="n">should</span> <span class="n">be</span> <span class="n">handled</span> <span class="n">and</span> <span class="n">not</span> <span class="n">only</span> <span class="n">logged</span>
-  <span class="n">LOG</span><span class="p">.</span><span class="n">error</span><span class="p">(</span>&quot;<span class="n">Error</span> <span class="n">in</span> $<span class="n">expand</span> <span class="n">handling</span><span class="p">.</span>&quot;<span class="p">,</span> <span class="n">e</span><span class="p">);</span>
-  <span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">EntityProviderException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
-  <span class="o">//</span> <span class="n">TODO</span><span class="p">:</span> <span class="n">should</span> <span class="n">be</span> <span class="n">handled</span> <span class="n">and</span> <span class="n">not</span> <span class="n">only</span> <span class="n">logged</span>
-  <span class="n">LOG</span><span class="p">.</span><span class="n">error</span><span class="p">(</span>&quot;<span class="n">Error</span> <span class="n">in</span> $<span class="n">expand</span> <span class="n">handling</span><span class="p">.</span>&quot;<span class="p">,</span> <span class="n">e</span><span class="p">);</span>
-  <span class="p">}</span>
-  <span class="k">return</span> <span class="n">result</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">WriteFeedCallbackResult</span> <span class="nf">retrieveFeedResult</span><span class="o">(</span><span class="n">WriteFeedCallbackContext</span> <span class="n">context</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ODataApplicationException</span> <span class="o">{</span>
+<span class="n">WriteFeedCallbackResult</span> <span class="n">result</span> <span class="o">=</span> <span class="k">new</span> <span class="n">WriteFeedCallbackResult</span><span class="o">();</span>
+  <span class="k">try</span> <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_MANUFACTURERS</span><span class="o">,</span> <span class="n">ENTITY_SET_NAME_CARS</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">selfLink</span><span class="o">(</span><span class="n">context</span><span class="o">.</span><span class="na">getSelfLink</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">manufacturerId</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">setFeedData</span><span class="o">(</span><span class="n">dataStore</span><span class="o">.</span><span class="na">getCarsFor</span><span class="o">(</span><span class="n">manufacturerId</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> <span class="k">catch</span> <span class="o">(</span><span class="n">EdmException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+  <span class="c1">// TODO: should be handled and not only logged</span>
+  <span class="n">LOG</span><span class="o">.</span><span class="na">error</span><span class="o">(</span><span class="s">&quot;Error in $expand handling.&quot;</span><span class="o">,</span> <span class="n">e</span><span class="o">);</span>
+  <span class="o">}</span> <span class="k">catch</span> <span class="o">(</span><span class="n">EntityProviderException</span> <span class="n">e</span><span class="o">)</span> <span class="o">{</span>
+  <span class="c1">// TODO: should be handled and not only logged</span>
+  <span class="n">LOG</span><span class="o">.</span><span class="na">error</span><span class="o">(</span><span class="s">&quot;Error in $expand handling.&quot;</span><span class="o">,</span> <span class="n">e</span><span class="o">);</span>
+  <span class="o">}</span>
+  <span class="k">return</span> <span class="n">result</span><span class="o">;</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -164,14 +164,14 @@ To support <code>$expand</code> for a si
 <p>This example shows that the basic callback logic between <code>OnWriteEntryConten</code>t and <code>OnWriteFeedContent</code> is very similar. Validation of current element (optional), preparing of <code>EntityProviderWriteProperties</code>, receive of data and putting all together into corresponding result object (<code>WriteEntryCallbackResult</code> or <code>WriteFeedCallbackResult</code>).</p>
 <p>To improve code readability the <code>isNavigationFromTo(...):boolean</code> method was also added to the class. The method is used to check if the retrieved request is related to given entity set and navigation:</p>
 <h4 id="sample-code_2">Sample Code</h4>
-<div class="codehilite"><pre><span class="n">private</span> <span class="n">boolean</span> <span class="n">isNavigationFromTo</span><span class="p">(</span><span class="n">WriteCallbackContext</span> <span class="n">context</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">navigationPropertyName</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">entitySetName</span> <span class="o">==</span> <span class="n">null</span> <span class="o">||</span> <span class="n">navigationPropertyName</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">sourceEntitySet</span> <span class="p">=</span> <span class="n">context</span><span class="p">.</span><span class="n">getSourceEntitySet</span><span class="p">();</span>
-  <span class="n">EdmNavigationProperty</span> <span class="n">navigationProperty</span> <span class="p">=</span> <span class="n">context</span><span class="p">.</span><span class="n">getNavigationProperty</span><span class="p">();</span>
-  <span class="k">return</span> <span class="n">entitySetName</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">sourceEntitySet</span><span class="p">.</span><span class="n">getName</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="n">navigationPropertyName</span><span class="p">.</span><span class="n">equals</span><span class="p">(</span><span class="n">navigationProperty</span><span class="p">.</span><span class="n">getName</span><span class="p">());</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kd">private</span> <span class="kt">boolean</span> <span class="nf">isNavigationFromTo</span><span class="o">(</span><span class="n">WriteCallbackContext</span> <span class="n">context</span><span class="o">,</span> <span class="n">String</span> <span class="n">entitySetName</span><span class="o">,</span> <span class="n">String</span> <span class="n">navigationPropertyName</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">entitySetName</span> <span class="o">==</span> <span class="kc">null</span> <span class="o">||</span> <span class="n">navigationPropertyName</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">sourceEntitySet</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getSourceEntitySet</span><span class="o">();</span>
+  <span class="n">EdmNavigationProperty</span> <span class="n">navigationProperty</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="na">getNavigationProperty</span><span class="o">();</span>
+  <span class="k">return</span> <span class="n">entitySetName</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">sourceEntitySet</span><span class="o">.</span><span class="na">getName</span><span class="o">())</span> <span class="o">&amp;&amp;</span> <span class="n">navigationPropertyName</span><span class="o">.</span><span class="na">equals</span><span class="o">(</span><span class="n">navigationProperty</span><span class="o">.</span><span class="na">getName</span><span class="o">());</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -179,79 +179,79 @@ To support <code>$expand</code> for a si
 <p>The necessary callbacks (<code>MyCallback</code> class) now has to be registered during the corresponding <code>readEntity(...)</code> call. Therefore we first create a map with the property name as key and the according callback as value. Additional we need to create the <code>ExpandSelectTreeNode</code> based on current element position. Both then have to be set in the <code>EntityProviderWritePropertiesBuilder</code>. </p>
 <p>The following code show the few lines we need for extending the read of a car with its expanded manufacturer.</p>
 <div class="codehilite"><pre><span class="c1">// create and register 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="o">=</span> <span class="k">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="no">ENTITY_NAME_MANUFACTURER</span><span class="p">,</span> <span class="k">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="o">=</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="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;();</span>
+<span class="n">callbacks</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="n">ENTITY_NAME_MANUFACTURER</span><span class="o">,</span> <span class="k">new</span> <span class="n">MyCallback</span><span class="o">(</span><span class="n">dataStore</span><span class="o">,</span> <span class="n">serviceRoot</span><span class="o">));</span>
+<span class="n">ExpandSelectTreeNode</span> <span class="n">expandSelectTreeNode</span> <span class="o">=</span> <span class="n">UriParser</span><span class="o">.</span><span class="na">createExpandSelectTree</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getSelect</span><span class="o">(),</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getExpand</span><span class="o">());</span>
+<span class="n">propertiesBuilder</span><span class="o">.</span><span class="na">expandSelectTree</span><span class="o">(</span><span class="n">expandSelectTreeNode</span><span class="o">).</span><span class="na">callbacks</span><span class="o">(</span><span class="n">callbacks</span><span class="o">);</span>
 </pre></div>
 
 
 <p>The following code show the few lines we need for extending the read of a manufacturer with its expanded cars.</p>
 <div class="codehilite"><pre><span class="c1">// create and register 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="o">=</span> <span class="k">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="no">ENTITY_SET_NAME_CARS</span><span class="p">,</span> <span class="k">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="o">=</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="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;();</span>
+<span class="n">callbacks</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_CARS</span><span class="o">,</span> <span class="k">new</span> <span class="n">MyCallback</span><span class="o">(</span><span class="n">dataStore</span><span class="o">,</span> <span class="n">serviceRoot</span><span class="o">));</span>
+<span class="n">ExpandSelectTreeNode</span> <span class="n">expandSelectTreeNode</span> <span class="o">=</span> <span class="n">UriParser</span><span class="o">.</span><span class="na">createExpandSelectTree</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getSelect</span><span class="o">(),</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getExpand</span><span class="o">());</span>
+<span class="n">propertiesBuilder</span><span class="o">.</span><span class="na">expandSelectTree</span><span class="o">(</span><span class="n">expandSelectTreeNode</span><span class="o">).</span><span class="na">callbacks</span><span class="o">(</span><span class="n">callbacks</span><span class="o">);</span>
 </pre></div>
 
 
 <p>The complete <code>readEntity(...)</code> method should now look like:</p>
-<div class="codehilite"><pre><span class="n">public</span> <span class="n">ODataResponse</span> <span class="n">readEntity</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">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="kd">public</span> <span class="n">ODataResponse</span> <span class="nf">readEntity</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">contentType</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="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> 0<span class="p">)</span> <span class="p">{</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">getStartEntitySet</span><span class="p">();</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">0</span><span class="o">)</span> <span class="o">{</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">getStartEntitySet</span><span class="o">();</span>
 
-    <span class="k">if</span> <span class="p">(</span><span class="n">ENTITY_SET_NAME_CARS</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">getCar</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_MANUFACTURER</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="o">//</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="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="p">}</span> <span class="k">else</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">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">getManufacturer</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_SET_NAME_CARS</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="o">//</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="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="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="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="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="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">dataStore</span><span class="p">.</span><span class="n">getManufacturer</span><span class="p">(</span><span class="n">carKey</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>
+    <span class="k">if</span> <span class="o">(</span><span class="n">ENTITY_SET_NAME_CARS</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">getCar</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="c1">// create and register callback</span>
+      <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;();</span>
+      <span class="n">callbacks</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="n">ENTITY_NAME_MANUFACTURER</span><span class="o">,</span> <span class="k">new</span> <span class="n">MyCallback</span><span class="o">(</span><span class="n">dataStore</span><span class="o">,</span> <span class="n">serviceRoot</span><span class="o">));</span>
+      <span class="n">ExpandSelectTreeNode</span> <span class="n">expandSelectTreeNode</span> <span class="o">=</span> <span class="n">UriParser</span><span class="o">.</span><span class="na">createExpandSelectTree</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getSelect</span><span class="o">(),</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getExpand</span><span class="o">());</span>
+        <span class="c1">//</span>
+        <span class="n">propertiesBuilder</span><span class="o">.</span><span class="na">expandSelectTree</span><span class="o">(</span><span class="n">expandSelectTreeNode</span><span class="o">).</span><span class="na">callbacks</span><span class="o">(</span><span class="n">callbacks</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">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>
+    <span class="o">}</span> <span class="k">else</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">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">getManufacturer</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="c1">// create and register callback</span>
+        <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;</span> <span class="n">callbacks</span> <span class="o">=</span> <span class="k">new</span> <span class="n">HashMap</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">ODataCallback</span><span class="o">&gt;();</span>
+        <span class="n">callbacks</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="n">ENTITY_SET_NAME_CARS</span><span class="o">,</span> <span class="k">new</span> <span class="n">MyCallback</span><span class="o">(</span><span class="n">dataStore</span><span class="o">,</span> <span class="n">serviceRoot</span><span class="o">));</span>
+        <span class="n">ExpandSelectTreeNode</span> <span class="n">expandSelectTreeNode</span> <span class="o">=</span> <span class="n">UriParser</span><span class="o">.</span><span class="na">createExpandSelectTree</span><span class="o">(</span><span class="n">uriInfo</span><span class="o">.</span><span class="na">getSelect</span><span class="o">(),</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getExpand</span><span class="o">());</span>
+        <span class="c1">//</span>
+        <span class="n">propertiesBuilder</span><span class="o">.</span><span class="na">expandSelectTree</span><span class="o">(</span><span class="n">expandSelectTreeNode</span><span class="o">).</span><span class="na">callbacks</span><span class="o">(</span><span class="n">callbacks</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">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>
+    <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="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="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="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">dataStore</span><span class="o">.</span><span class="na">getManufacturer</span><span class="o">(</span><span class="n">carKey</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>
 
-  <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>