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 2015/08/12 08:48:26 UTC

svn commit: r961580 - in /websites/staging/olingo/trunk/content: ./ doc/odata4/tutorials/navigation/ doc/odata4/tutorials/read/ doc/odata4/tutorials/readep/ doc/odata4/tutorials/sqo_es/ doc/odata4/tutorials/sqo_tcs/ doc/odata4/tutorials/write/

Author: buildbot
Date: Wed Aug 12 06:48:26 2015
New Revision: 961580

Log:
Staging update by buildbot for olingo

Added:
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/metadataNav.jpg   (with props)
Modified:
    websites/staging/olingo/trunk/content/   (props changed)
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/navigation/tutorial_navigation.html
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/read/tutorial_read.html
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/readep/tutorial_readep.html
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/tutorial_sqo_es.html
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_tcs/tutorial_sqo_tcs.html
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/write/tutorial_write.html

Propchange: websites/staging/olingo/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Wed Aug 12 06:48:26 2015
@@ -1 +1 @@
-1695424
+1695428

Modified: websites/staging/olingo/trunk/content/doc/odata4/tutorials/navigation/tutorial_navigation.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/odata4/tutorials/navigation/tutorial_navigation.html (original)
+++ websites/staging/olingo/trunk/content/doc/odata4/tutorials/navigation/tutorial_navigation.html Wed Aug 12 06:48:26 2015
@@ -817,12 +817,12 @@ Check the <em>Links</em> section for mor
 <li>Tutorial OData V4 service part 2: <a href="/doc/odata4/tutorials/readep/tutorial_readep.html">Read Entity, Read Property</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.asc">pgp</a>)  </li>
 <li>Tutorial OData V4 service part 3: <a href="/doc/odata4/tutorials/write/tutorial_write.html">Write (Create, Update, Delete Entity)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.asc">pgp</a>)  </li>
 <li>Tutorial OData V4 service, part 4: <a href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation (this page)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.asc">pgp</a>)</li>
-<li>Tutorial OData V4 service, part 5: System Query Options  (to be announced)
-<!--  --></li>
+<li>Tutorial OData V4 service, part 5: System Query Options  (to be announced)</li>
 </ul>
 <h3 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h3>
 <ul>
-<li>OData specification: <a href="http://odata.org/">http://odata.org/</a></li>
+<li><a href="http://odata.org/">Official OData Homepage</a></li>
+<li><a href="http://www.odata.org/documentation/">OData documentation</a></li>
 <li><a href="/javadoc/odata4/index.html">Olingo Javadoc</a></li>
 </ul>
 <hr />

Modified: websites/staging/olingo/trunk/content/doc/odata4/tutorials/read/tutorial_read.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/odata4/tutorials/read/tutorial_read.html (original)
+++ websites/staging/olingo/trunk/content/doc/odata4/tutorials/read/tutorial_read.html Wed Aug 12 06:48:26 2015
@@ -199,7 +199,7 @@ The description within this section is b
 <em>File -&gt; New -&gt; Other -&gt; Maven -&gt; Maven Project</em></p>
 <p>On the second wizard page, choose  the archetype: maven-archetype-webapp</p>
 <p><img alt="mavenArchetype" src="mavenArchetype.png" title="The Maven Archetype" /></p>
-<p>On the next page, enter the following information:  </p>
+<p>On the next page, enter the following information:</p>
 <ul>
 <li>Groupd Id: <em>my.group.id</em></li>
 <li>Artifact Id: <em>DemoService</em></li>
@@ -303,12 +303,12 @@ From context menu on project node, choos
 </blockquote>
 <hr />
 <h1 id="4-implementation">4. Implementation<a class="headerlink" href="#4-implementation" title="Permanent link">&para;</a></h1>
-<p>The implementation of an OData service based on Olingo server library can be grouped in the following steps:  </p>
+<p>The implementation of an OData service based on Olingo server library can be grouped in the following steps:</p>
 <ul>
 <li>Declaring the metadata of the service</li>
-<li>Handle service requests  </li>
+<li>Handle service requests</li>
 </ul>
-<p>Since our example service has to run on a web server, we have to create some code which calls our service in a web application:  </p>
+<p>Since our example service has to run on a web server, we have to create some code which calls our service in a web application:</p>
 <ul>
 <li>Web application implementation</li>
 </ul>
@@ -332,9 +332,9 @@ Here, the user can see which Entity Coll
 <p>The information that is given by these 2 URIs, has to be implemented in the service code.
 Olingo provides an API for it and we will use it in the implementation of our <em>CsdlEdmProvider</em>.</p>
 <h3 id="412-create-class">4.1.2. Create class<a class="headerlink" href="#412-create-class" title="Permanent link">&para;</a></h3>
-<p>Create package <em>myservice.mynamespace.service</em><br />
+<p>Create package <em>myservice.mynamespace.service</em>
 Create class <em>DemoEdmProvider</em> and specify the superclass <em>org.apache.olingo.commons.api.edm.provider.CsdlAbstractEdmProvider</em></p>
-<p>Note: <strong>edm</strong> is the abbreviation for <strong>Entity Data Model</strong>.<br />
+<p>Note: <strong>edm</strong> is the abbreviation for <strong>Entity Data Model</strong>.
 Accordingly, we understand that the <em>CsdlEdmProvider</em> is supposed to provide static descriptive information.</p>
 <p>The Entity Model of the service can be defined in the EDM Provider. The EDM model basically defines the available EntityTypes and the relation between the entities. An EntityType consists of primitive, complex or navigation properties. The model can be invoked with the Metadata Document request.</p>
 <p>As we can see, the Olingo server API provides one package that contains interfaces for the description of the metadata:</p>
@@ -348,16 +348,16 @@ You can find the Javadoc here: <a href="
 <em> The entries that are displayed in the Service Document are provided by the method
 </em>getEntityContainerInfo()<em>
 </em> The structure of EntityTypes is declared in the method <em>getEntityType()</em></p>
-<p>In our simple example, we implement the minimum amount of methods, required to run a meaningful OData service.<br />
+<p>In our simple example, we implement the minimum amount of methods, required to run a meaningful OData service.
 These are:</p>
 <ul>
-<li><strong><em>getEntityType()</em></strong><br />
+<li><strong><em>getEntityType()</em></strong>
   Here we declare the EntityType “Product” and a few of its properties</li>
-<li><strong><em>getEntitySet()</em></strong><br />
+<li><strong><em>getEntitySet()</em></strong>
   Here we state that the list of products can be called via the EntitySet “Products”</li>
-<li><strong><em>getEntityContainer()</em></strong><br />
+<li><strong><em>getEntityContainer()</em></strong>
   Here we provide a Container element that is necessary to host the EntitySet.</li>
-<li><strong><em>getSchemas()</em></strong><br />
+<li><strong><em>getSchemas()</em></strong>
   The Schema is the root element to carry the elements.</li>
 <li><strong><em>getEntityContainerInfo()</em></strong>
   Information about the EntityContainer to be displayed in the Service Document</li>
@@ -385,12 +385,12 @@ Select the mentioned methods and press O
 
 <p><strong><em>getEntityType()</em></strong></p>
 <p>In our example service, we want to provide a list of products to users who call the OData service.
-The user of our service, for example an app-developer, may ask: What does such a "product" entry look like? How is it structured? Which information about a product is provided? For example, the name of it and which data types can be expected from these properties?<br />
+The user of our service, for example an app-developer, may ask: What does such a "product" entry look like? How is it structured? Which information about a product is provided? For example, the name of it and which data types can be expected from these properties?
 Such information is provided by a <code>CsdlEdmProvider</code> (and for convenience we extend the <code>CsdlAbstractEdmProvider</code>).</p>
 <p>In our example service, for modelling the <code>CsdlEntityType</code>, we have to provide the following metadata:</p>
-<p>The name of the EntityType: “Product”<br />
-The properties: name and type and additional info, e.g. “ID” of type “edm.int32”<br />
-Which of the properties is the “key” property: a reference to the “ID” property.  </p>
+<p>The name of the EntityType: “Product”
+The properties: name and type and additional info, e.g. “ID” of type “edm.int32”
+Which of the properties is the “key” property: a reference to the “ID” property.</p>
 <div class="codehilite"><pre><span class="kd">public</span> <span class="n">CsdlEntityType</span> <span class="nf">getEntityType</span><span class="o">(</span><span class="n">FullQualifiedName</span> <span class="n">entityTypeName</span><span class="o">)</span> <span class="kd">throws</span> <span class="n">ODataException</span> <span class="o">{</span>
 
   <span class="c1">// this method is called for one of the EntityTypes that are configured in the Schema</span>
@@ -466,11 +466,11 @@ In our example, we have only one <em>Ent
 
 
 <p><strong><em>getSchemas()</em></strong></p>
-<p>Up to this point, we have declared the type of our data (<code>CsdlEntityType</code>) and our list (<code>CsdlEntitySet</code>), and we have put it into a container (<code>CsdlEntityContainer</code>).<br />
-Now we are required to put all these elements into a <code>CsdlSchema</code>.<br />
-While the model of an OData service can have several schemas, in most cases there will probably be only one schema.<br />
-So, in our example, we create a list of schemas, where we add one new <code>CsdlSchema</code> object.<br />
-The schema is configured with a <em>Namespace</em>, which serves to uniquely identify all elements.<br />
+<p>Up to this point, we have declared the type of our data (<code>CsdlEntityType</code>) and our list (<code>CsdlEntitySet</code>), and we have put it into a container (<code>CsdlEntityContainer</code>).
+Now we are required to put all these elements into a <code>CsdlSchema</code>.
+While the model of an OData service can have several schemas, in most cases there will probably be only one schema.
+So, in our example, we create a list of schemas, where we add one new <code>CsdlSchema</code> object.
+The schema is configured with a <em>Namespace</em>, which serves to uniquely identify all elements.
 Then our elements are added to the Schema.</p>
 <div class="codehilite"><pre><span class="kd">public</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">CsdlSchema</span><span class="o">&gt;</span> <span class="n">getSchemas</span><span class="o">()</span> <span class="kd">throws</span> <span class="n">ODataException</span> <span class="o">{</span>
 
@@ -510,7 +510,7 @@ Then our elements are added to the Schem
 </pre></div>
 
 
-<p><strong>Summary:</strong><br />
+<p><strong>Summary:</strong>
 We have created a class that declares the metadata of our OData service.
 We have declared the main elements of an OData service: <em>EntityType</em>, <em>EntitySet</em>, <em>EntityContainer</em> and <em>Schema</em> (with the corresponding Olingo classes <code>CsdlEntityType</code>, <code>CsdlEntitySet</code>, <code>CsdlEntityContainer</code> and <code>CsdlSchema</code>).</p>
 <p>At runtime of an OData service, such metadata can be viewed by invoking the Metadata Document.</p>
@@ -551,40 +551,40 @@ We have declared the main elements of an
 
 
 <blockquote>
-<p>Note:<br />
-After implementing the <em>EdmProvider</em>, we can, as an intermediate step, build/deploy the service and invoke the 2 static pages:   Service Document and Metadata Document.<br />
+<p>Note:
+After implementing the <em>EdmProvider</em>, we can, as an intermediate step, build/deploy the service and invoke the 2 static pages:   Service Document and Metadata Document.
 If desired, you can proceed with implementing the required steps for web application as described in
 4.3. and run the application as described in chapter 5.</p>
 </blockquote>
 <h2 id="42-provide-the-data">4.2. Provide the data<a class="headerlink" href="#42-provide-the-data" title="Permanent link">&para;</a></h2>
-<p>After implementing the <em>EdmProvider</em>, the next step is the main task of an OData service: provide data.<br />
-In our example, we imagine that our OData service is invoked by a user who wants to see which products are offered by a web shop.<br />
-He invokes a URL and gets a list of products.<br />
+<p>After implementing the <em>EdmProvider</em>, the next step is the main task of an OData service: provide data.
+In our example, we imagine that our OData service is invoked by a user who wants to see which products are offered by a web shop.
+He invokes a URL and gets a list of products.
 Providing the list of products is the task that we are going to implement in this chapter.</p>
 <p>The work that we have to do in this chapter can be divided into 4 tasks:</p>
 <ol>
-<li>Check the URI<br />
+<li>Check the URI
       We need to identify the requested resource and have to consider Query Options (if available)</li>
-<li>Provide the data<br />
+<li>Provide the data
       Based on the URI info, we have to obtain the data from our data store (can be e.g. a database)</li>
-<li>Serialize the data<br />
+<li>Serialize the data
       The data has to be transformed into the required format</li>
-<li>Configure the response<br />
+<li>Configure the response
       Since we are implementing a “processor”, the last step is to provide the response object</li>
 </ol>
 <p>These 4 steps will be considered in the implementation of the <code>readEntityCollection()</code> method.</p>
 <h3 id="421-background">4.2.1. Background<a class="headerlink" href="#421-background" title="Permanent link">&para;</a></h3>
-<p>In terms of <em>Olingo</em>, while processing a service request, a Processor instance is invoked that is supposed to understand the (user HTTP-) request and deliver the desired data.<br />
-<em>Olingo</em> provides API for processing different kind of service requests:<br />
+<p>In terms of <em>Olingo</em>, while processing a service request, a Processor instance is invoked that is supposed to understand the (user HTTP-) request and deliver the desired data.
+<em>Olingo</em> provides API for processing different kind of service requests:
 Such a service request can ask for a list of entities, or for one entity, or one property.</p>
-<p>Example:<br />
-In our example, we have stated in our Metadata Document that we will provide a list of “products” whenever the <em>EntitySet</em> with name “Products” is invoked.<br />
-This means that the user of our OData service will append the <em>EntitySet</em> name to the root URL of the service and then invoke the full URL.<br />
+<p>Example:
+In our example, we have stated in our Metadata Document that we will provide a list of “products” whenever the <em>EntitySet</em> with name “Products” is invoked.
+This means that the user of our OData service will append the <em>EntitySet</em> name to the root URL of the service and then invoke the full URL.
 This is http://localhost:8080/DemoService/DemoServlet1.svc/Products
 So, whenever this URL is fired, Olingo will invoke the <code>EntityCollectionProcessor</code> implementation of our OData service.
 Then our <code>EntityCollectionProcessor</code> implementation is expected to provide a list of products.</p>
 <p>As we have already mentioned, the Metadata Document is the contract for providing data.
-This means that when it comes to provide the actual data, we have to do it according to the specified metadata.<br />
+This means that when it comes to provide the actual data, we have to do it according to the specified metadata.
 For example, the property names have to match, also the types of the properties, and, if specified, the length of the strings, etc</p>
 <h3 id="422-create-class">4.2.2. Create class<a class="headerlink" href="#422-create-class" title="Permanent link">&para;</a></h3>
 <p>Within our package <code>myservice.mynamespace.service</code>, we create a Java class <code>DemoEntityCollectionProcessor</code>  that implements the interface <code>org.apache.olingo.server.api.processor.EntityCollectionProcessor</code>.</p>
@@ -592,14 +592,14 @@ For example, the property names have to
 <h3 id="423-implement-the-required-methods">4.2.3. Implement the required methods<a class="headerlink" href="#423-implement-the-required-methods" title="Permanent link">&para;</a></h3>
 <p>After creation of the Java class, we can see that there are 2 methods to be implemented:</p>
 <ul>
-<li><em>init()</em><br />
+<li><em>init()</em>
     This method is invoked by the <em>Olingo</em> library, allowing us to store the context object</li>
-<li><em>readEntityCollection()</em><br />
+<li><em>readEntityCollection()</em>
     Here we have to fetch the required data and pass it back to the <em>Olingo</em> library</li>
 </ul>
 <p>Let’s have a closer look</p>
 <p><strong><em>init()</em></strong></p>
-<p>This method is common to all processor interfaces.<br />
+<p>This method is common to all processor interfaces.
 The <em>Olingo</em> framework initializes the processor with an instance of the <em>OData</em> object.
 According to the Javadoc, this object is the “Root object for serving factory tasks…”
 We will need it later, so we store it as member variable.</p>
@@ -617,58 +617,58 @@ We will need it later, so we store it as
 
 
 <p><strong><em>readEntityCollection()</em></strong></p>
-<p>The <code>EntityCollectionProcessor</code> exposes only one method: <code>readEntityCollection(...)</code>  </p>
+<p>The <code>EntityCollectionProcessor</code> exposes only one method: <code>readEntityCollection(...)</code></p>
 <p>Here we have to understand that this <code>readEntityCollection(...)</code>-method is invoked, when the OData service is called with an HTTP GET operation for an entity collection.</p>
 <p>The <code>readEntityCollection(...)</code> method is used to “read” the data in the backend (this can be e.g. a database) and to deliver it to the user who calls the OData service.</p>
 <p>The method signature:</p>
 <p>The “request” parameter contains raw HTTP information. It is typically used for creation scenario, where a request body is sent along with the request.</p>
 <p>With the second parameter, the “response” object is passed to our method in order to carry the response data. So here we have to set the response body, along with status code and content-type header.</p>
-<p>The third parameter, the “uriInfo”, contains information about the relevant part of the URL. This means, the segments starting after the service name.  </p>
-<p><strong>Example:</strong><br />
-If the user calls the following URL:<br />
-<code>http://localhost:8080/DemoService/DemoService.svc/Products</code><br />
-The <code>readEntityCollection(...)</code> method is invoked and the <em>uriInfo</em> object contains one segment: “Products”  </p>
-<p>If the user calls the following URL:<br />
-<code>http://localhost:8080/DemoService/DemoService.svc/Products?$filter=ID eq 1</code><br />
+<p>The third parameter, the “uriInfo”, contains information about the relevant part of the URL. This means, the segments starting after the service name.</p>
+<p><strong>Example:</strong>
+If the user calls the following URL:
+<code>http://localhost:8080/DemoService/DemoService.svc/Products</code>
+The <code>readEntityCollection(...)</code> method is invoked and the <em>uriInfo</em> object contains one segment: “Products”</p>
+<p>If the user calls the following URL:
+<code>http://localhost:8080/DemoService/DemoService.svc/Products?$filter=ID eq 1</code>
 Then the <code>readEntityCollection(...)</code> method is invoked and the <em>uriInfo</em> contains the information about the entity set and furthermore the system query option $filter and its value.</p>
-<p>The last parameter, the “responseFormat”, contains information about the content type that is requested by the user.<br />
-This means that the user has the choice to receive the data either in XML or in JSON.  </p>
-<p><strong>Example:</strong><br />
-If the user calls the following URL:<br />
+<p>The last parameter, the “responseFormat”, contains information about the content type that is requested by the user.
+This means that the user has the choice to receive the data either in XML or in JSON.</p>
+<p><strong>Example:</strong>
+If the user calls the following URL:
 <code>http://localhost:8080/DemoService/DemoService.svc/Products?$format=application/json;odata.metadata=minimal</code></p>
-<p>then the content type is:<br />
-<code>application/json;odata.metadata=minimal</code><br />
+<p>then the content type is:
+<code>application/json;odata.metadata=minimal</code>
 which means that the payload is formatted in JSON (like it is shown in the introduction section of this tutorial)</p>
 <p><strong>Note:</strong>
-The content type can as well be specified via the following request header<br />
-Accept: application/json;odata.metadata=minimal<br />
+The content type can as well be specified via the following request header
+Accept: application/json;odata.metadata=minimal
 In this case as well, our readEntityCollection() method will be called with the parameter responseFormat containing the content type &gt; information.</p>
 <p><strong>Note:</strong>
 If the user doesn’t specify any content type, then the default is JSON.</p>
-<p>Why is this parameter needed?<br />
+<p>Why is this parameter needed?
 Because the <code>readEntityCollection(...)</code> method is supposed to deliver the data in the format that is requested by the user. We will use this parameter when creating a serializer based on it.</p>
 <p>The steps for implementating the method <code>readEntityCollection(...)</code> are:</p>
 <ol>
 <li>
-<p>Which data is requested?<br />
+<p>Which data is requested?
     Usually, an OData service provides different <em>EntitySets</em>, so first it is required to identify which <em>EntitySet</em> has been requested. This information can be retrieved from the <em>uriInfo</em> object.</p>
 </li>
 <li>
-<p>Fetch the data <br />
+<p>Fetch the data
     As a developer of the OData service, you have to know how and where the data is stored. In many cases, this would be a database. At this point, you would connect to your database and fetch the requested data with an appropriate SQL statement. The data that is fetched from the data storage has to be put into an <em>EntityCollection</em> object.
     The package <code>org.apache.olingo.commons.api.data</code> provides interfaces that describe the actual data, not the metadata.</p>
 <p><img alt="datapackage" src="datapackage.png" title="The package containing the interfaces for handling runtime data" /></p>
 </li>
 <li>
-<p>Transform the data<br />
-<em>Olingo</em> expects us to provide the data as low-level <em>InputStream</em> object. However, <em>Olingo</em> supports us in doing so, by providing us with a proper "serializer".
+<p>Transform the data
+    <em>Olingo</em> expects us to provide the data as low-level <em>InputStream</em> object. However, <em>Olingo</em> supports us in doing so, by providing us with a proper "serializer".
     So what we have to do is create the serializer based on the requested content type, configure it and call it.</p>
 </li>
 <li>
-<p>Configure the response<br />
-    The response object has been passed to us in the method signature. We use it to set the serialized data (the <code>InputStream</code> object).<br />
-    Furthermore, we have to set the HTTP status code, which means that we have the opportunity to do proper error handling.<br />
-    And finally we have to set the content type.  </p>
+<p>Configure the response
+    The response object has been passed to us in the method signature. We use it to set the serialized data (the <code>InputStream</code> object).
+    Furthermore, we have to set the HTTP status code, which means that we have the opportunity to do proper error handling.
+    And finally we have to set the content type.</p>
 </li>
 </ol>
 <p><strong>Sample:</strong></p>
@@ -705,8 +705,8 @@ Because the <code>readEntityCollection(.
 
 <p><strong><em>getData()</em></strong></p>
 <p>We have not elaborated on fetching the actual data.
-In our tutorial, to keep the code as simple as possible, we use a little helper method that delivers some hardcoded entries.<br />
-Since we are supposed to deliver the data inside an <code>EntityCollection</code> instance, we create the instance, ask it for the (initially empty) list of entities and add some new entities to it.<br />
+In our tutorial, to keep the code as simple as possible, we use a little helper method that delivers some hardcoded entries.
+Since we are supposed to deliver the data inside an <code>EntityCollection</code> instance, we create the instance, ask it for the (initially empty) list of entities and add some new entities to it.
 We create the entities and their properties according to what we declared in our <code>DemoEdmProvider</code> class. So we have to take care to provide the correct names to the new property objects.</p>
 <div class="codehilite"><pre><span class="kd">private</span> <span class="n">EntityCollection</span> <span class="nf">getData</span><span class="o">(</span><span class="n">EdmEntitySet</span> <span class="n">edmEntitySet</span><span class="o">){</span>
 
@@ -738,8 +738,8 @@ We create the entities and their propert
 
 
 <h2 id="43-web-application">4.3. Web Application<a class="headerlink" href="#43-web-application" title="Permanent link">&para;</a></h2>
-<p>After declaring the metadata and providing the data, our OData service implementation is done.<br />
-The last step is to enable our OData service to be called on a web server.<br />
+<p>After declaring the metadata and providing the data, our OData service implementation is done.
+The last step is to enable our OData service to be called on a web server.
 Therefore, we are wrapping our service by a web application.</p>
 <p>The web application is defined in the web.xml file, where a servlet is registered.
 The servlet is a standard <em>HttpServlet</em> which dispatches the user requests to the <em>Olingo</em> framework.</p>
@@ -748,7 +748,7 @@ The servlet is a standard <em>HttpServle
 <p>Create a new package <em>myservice.mynamespace.web</em>.
 Create Java class with name <code>DemoServlet</code> that inherits from <code>HttpServlet</code>.</p>
 <p><img alt="createJavaServletClass" src="createJavaServletClass.png" title="Creating the servlet class" /></p>
-<p>Override the <code>service()</code> method.<br />
+<p>Override the <code>service()</code> method.
 Basically, what we are doing here is to create an <code>ODataHttpHandler</code>, which is a class that is provided by <em>Olingo</em>.
 It receives the user request and if the URL conforms to the OData specification, the request is delegated to the processor implementation of the OData service.
 This means that the handler has to be configured with all processor implementations that have been created along with the OData service (in our example, only one processor).
@@ -779,7 +779,7 @@ Furthermore, the <code>ODataHttpHandler<
 
 
 <h3 id="432-edit-the-webxml">4.3.2. Edit the web.xml<a class="headerlink" href="#432-edit-the-webxml" title="Permanent link">&para;</a></h3>
-<p>The very last step of our tutorial is to register the Servlet in the <em>web.xml</em> file.<br />
+<p>The very last step of our tutorial is to register the Servlet in the <em>web.xml</em> file.
 Furthermore, we need to specify the <em>url-pattern</em> for the servlet, such that our OData service can be invoked.</p>
 <p>Open the <em>src/main/webapp/WEB-INF/web.xml</em> file and paste the following content into it:</p>
 <div class="codehilite"><pre><span class="nt">&lt;web-app</span> <span class="na">xmlns:xsi=</span><span class="s">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span>
@@ -805,20 +805,20 @@ Furthermore, we need to specify the <em>
 <p>That’s it. Now we can build and run the web application.</p>
 <hr />
 <h1 id="5-run-the-service">5. Run the service<a class="headerlink" href="#5-run-the-service" title="Permanent link">&para;</a></h1>
-<p>Running the service means build the war file and deploy it on a server.<br />
+<p>Running the service means build the war file and deploy it on a server.
 In our tutorial, we are using the Eclipse web integration tools, which make life easier.</p>
 <h3 id="run-with-eclipse">Run with Eclipse<a class="headerlink" href="#run-with-eclipse" title="Permanent link">&para;</a></h3>
-<p>Select your project and from the context menu choose <em>Run As -&gt; Run on Server</em><br />
-If you don’t have any server configured in Eclipse, you have to “manually define a new server” in the subsequent dialog.<br />
-If you have installed a Tomcat server on your local file system, you can use it here.<br />
-If not, you can use the <em>Basic -&gt; J2EE Preview</em> option, which is should be enough for our tutorial.  </p>
+<p>Select your project and from the context menu choose <em>Run As -&gt; Run on Server</em>
+If you don’t have any server configured in Eclipse, you have to “manually define a new server” in the subsequent dialog.
+If you have installed a Tomcat server on your local file system, you can use it here.
+If not, you can use the <em>Basic -&gt; J2EE Preview</em> option, which is should be enough for our tutorial.</p>
 <p><img alt="runOnServer" src="runOnServer.png" title="The Eclipse dialog for deploying web apps to a server" /></p>
 <blockquote>
 <p>Note:
 You might have to first execute maven build and also press F5 to refresh the content of the Eclipse project</p>
 </blockquote>
 <p>After pressing "run", Eclipse starts the internal server and deploys the web application on it.
-Then the Eclipse internal Browser View is opened and the index.jsp file that has been generated into our Example project is opened.<br />
+Then the Eclipse internal Browser View is opened and the index.jsp file that has been generated into our Example project is opened.
 We ignore it. Instead, we open our OData service in our favorite browser.</p>
 <blockquote>
 <p>Note:
@@ -900,22 +900,23 @@ If you face problems related to the serv
 
 <hr />
 <h1 id="6-summary">6. Summary<a class="headerlink" href="#6-summary" title="Permanent link">&para;</a></h1>
-<p>Finally, we have created our first OData service based on the V4 version of the OData specification and using the V4 server library provided by <em>Olingo</em>.<br />
+<p>Finally, we have created our first OData service based on the V4 version of the OData specification and using the V4 server library provided by <em>Olingo</em>.
 Our first OData service is very simple; it only allows invoking one entity collection, apart from the Service Document and the Metadata Document.</p>
 <p>The project as final result can be download <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip">here</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.asc">pgp</a>).</p>
 <h1 id="links">Links<a class="headerlink" href="#links" title="Permanent link">&para;</a></h1>
 <h3 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">&para;</a></h3>
-<p>Further topics to be covered by follow-up tutorials:  </p>
+<p>Further topics to be covered by follow-up tutorials:</p>
 <ul>
 <li>Tutorial OData V4 service part 1: <a href="/doc/odata4/tutorials/read/tutorial_read.html">Read Entity Collection (this page)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip">sample project</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.asc">pgp</a>).</li>
-<li>Tutorial OData V4 service part 2: <a href="/doc/odata4/tutorials/readep/tutorial_readep.html">Read Entity, Read Property</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.asc">pgp</a>)  </li>
-<li>Tutorial OData V4 service part 3: <a href="/doc/odata4/tutorials/write/tutorial_write.html">Write (Create, Update, Delete Entity)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.asc">pgp</a>)  </li>
-<li>Tutorial OData V4 service, part 4: <a href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.asc">pgp</a>)  </li>
+<li>Tutorial OData V4 service part 2: <a href="/doc/odata4/tutorials/readep/tutorial_readep.html">Read Entity, Read Property</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.asc">pgp</a>)</li>
+<li>Tutorial OData V4 service part 3: <a href="/doc/odata4/tutorials/write/tutorial_write.html">Write (Create, Update, Delete Entity)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.asc">pgp</a>)</li>
+<li>Tutorial OData V4 service, part 4: <a href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.asc">pgp</a>)</li>
 </ul>
 <h3 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h3>
 <ul>
-<li>OData specification: <a href="http://odata.org/">http://odata.org/</a>  </li>
-<li>Olingo Javadoc: <a href="/javadoc/odata4/index.html">http://olingo.apache.org/javadoc/odata4/index.html</a></li>
+<li><a href="http://odata.org/">Official OData Homepage</a></li>
+<li><a href="http://www.odata.org/documentation/">OData documentation</a></li>
+<li><a href="/javadoc/odata4/index.html">Olingo Javadoc</a></li>
 </ul><div align="center">
 <p>Copyright © 2013-2015, The Apache Software Foundation<br>
 				                Apache Olingo, Olingo, Apache, the Apache feather, and

Modified: websites/staging/olingo/trunk/content/doc/odata4/tutorials/readep/tutorial_readep.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/odata4/tutorials/readep/tutorial_readep.html (original)
+++ websites/staging/olingo/trunk/content/doc/odata4/tutorials/readep/tutorial_readep.html Wed Aug 12 06:48:26 2015
@@ -165,7 +165,7 @@ Within this package, create a new class
 <span class="kn">import</span> <span class="nn">org.apache.olingo.commons.api.data.ValueType</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.apache.olingo.commons.api.edm.EdmEntitySet</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.apache.olingo.commons.api.edm.EdmEntityType</span><span class="o">;</span>
-<span class="kn">import</span> <span class="nn">org.apache.olingo.commons.api.http.HttpStatusCode</span><span class="o">;</span> 
+<span class="kn">import</span> <span class="nn">org.apache.olingo.commons.api.http.HttpStatusCode</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.apache.olingo.server.api.ODataApplicationException</span><span class="o">;</span>
 <span class="kn">import</span> <span class="nn">org.apache.olingo.server.api.uri.UriParameter</span><span class="o">;</span>
 
@@ -685,7 +685,7 @@ This can be realized by implementing the
     We will ignore this method in the present tutorial</p>
 </li>
 </ul>
-<p>Create the class <code>DemoPrimitiveProcessor</code> in package <code>myservice.mynamespace.service</code> which implements the interface <code>PrimitiveProcessor</code>    </p>
+<p>Create the class <code>DemoPrimitiveProcessor</code> in package <code>myservice.mynamespace.service</code> which implements the interface <code>PrimitiveProcessor</code></p>
 <p>We have to create a Constructor that takes the <code>Storage</code> instance and stores it as a member variable:</p>
 <div class="codehilite"><pre> <span class="p">:::</span><span class="n">java</span>
  <span class="n">public</span> <span class="n">class</span> <span class="n">DemoEntityCollectionProcessor</span> <span class="n">implements</span> <span class="n">EntityCollectionProcessor</span> <span class="p">{</span>
@@ -824,14 +824,19 @@ It has been based on a simple OData mode
 <p>In the next tutorial (<a href="/doc/odata4/tutorials/write/tutorial_write.html">Part 3: Write</a>) we will learn how to implement write operations, i.e. create, update and delete of an entity.</p>
 <hr />
 <h1 id="6-links">6. Links<a class="headerlink" href="#6-links" title="Permanent link">&para;</a></h1>
+<h3 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">&para;</a></h3>
 <ul>
 <li>Tutorial OData V4 service part 1: <a href="/doc/odata4/tutorials/read/tutorial_read.html">Read Entity Collection</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip">sample project</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.asc">pgp</a>).</li>
 <li>Tutorial OData V4 service part 2: <a href="/doc/odata4/tutorials/readep/tutorial_readep.html">Read Entity, Read Property (this page)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.asc">pgp</a>)  </li>
 <li>Tutorial OData V4 service part 3: <a href="/doc/odata4/tutorials/write/tutorial_write.html">Write (Create, Update, Delete Entity)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.asc">pgp</a>)</li>
 <li>Tutorial OData V4 service, part 4: <a href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.asc">pgp</a>)  </li>
 </ul>
-<p>OData specification: <a href="http://odata.org/">http://odata.org/</a><br />
-Olingo Javadoc: <a href="/javadoc/odata4/index.html">http://olingo.apache.org/javadoc/odata4/index.html</a></p><div align="center">
+<h3 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h3>
+<ul>
+<li><a href="http://odata.org/">Official OData Homepage</a></li>
+<li><a href="http://www.odata.org/documentation/">OData documentation</a></li>
+<li><a href="/javadoc/odata4/index.html">Olingo Javadoc</a></li>
+</ul><div align="center">
 <p>Copyright © 2013-2015, The Apache Software Foundation<br>
 				                Apache Olingo, Olingo, Apache, the Apache feather, and
 				the Apache Olingo project logo are trademarks of the Apache Software

Added: websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/metadataNav.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/metadataNav.jpg
------------------------------------------------------------------------------
    svn:executable = *

Propchange: websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/metadataNav.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Modified: websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/tutorial_sqo_es.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/tutorial_sqo_es.html (original)
+++ websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_es/tutorial_sqo_es.html Wed Aug 12 06:48:26 2015
@@ -171,7 +171,7 @@ The drawback of this implementation is,
 <li>
 <p>We have to get the SelectOption from the UriInfo:</p>
 <div class="codehilite"><pre><span class="c1">// 3rd: apply system query options</span>
-<span class="n">SelectOption</span> <span class="n">selectOption</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getSelectOption</span><span class="p">();</span>
+<span class="n">SelectOption</span> <span class="n">selectOption</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getSelectOption</span><span class="o">();</span>
 </pre></div>
 
 
@@ -203,51 +203,51 @@ The drawback of this implementation is,
 </li>
 </ul>
 <p><strong>The full implementation of the <code>readEntityCollection()</code> method:</strong></p>
-<div class="codehilite"><pre><span class="n">public</span> <span class="n">void</span> <span class="n">readEntityCollection</span><span class="p">(</span><span class="n">ODataRequest</span> <span class="n">request</span><span class="p">,</span> <span class="n">ODataResponse</span> <span class="n">response</span><span class="p">,</span>
-                    <span class="n">UriInfo</span> <span class="n">uriInfo</span><span class="p">,</span> <span class="n">ContentType</span> <span class="n">responseFormat</span><span class="p">)</span>
-                    <span class="n">throws</span> <span class="n">ODataApplicationException</span><span class="p">,</span> <span class="n">SerializerException</span> <span class="p">{</span>
-
-  <span class="o">//</span> 1<span class="n">st</span> <span class="n">retrieve</span> <span class="n">the</span> <span class="n">requested</span> <span class="n">EdmEntitySet</span> <span class="n">from</span> <span class="n">the</span> <span class="n">uriInfo</span>
-  <span class="n">List</span><span class="o">&lt;</span><span class="n">UriResource</span><span class="o">&gt;</span> <span class="n">resourcePaths</span> <span class="p">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getUriResourceParts</span><span class="p">();</span>
-  <span class="n">UriResourceEntitySet</span> <span class="n">uriResourceEntitySet</span> <span class="p">=</span> <span class="p">(</span><span class="n">UriResourceEntitySet</span><span class="p">)</span> <span class="n">resourcePaths</span><span class="p">.</span><span class="n">get</span><span class="p">(</span>0<span class="p">);</span>
-  <span class="n">EdmEntitySet</span> <span class="n">edmEntitySet</span> <span class="p">=</span> <span class="n">uriResourceEntitySet</span><span class="p">.</span><span class="n">getEntitySet</span><span class="p">();</span>
-
-  <span class="o">//</span> 2<span class="n">nd</span><span class="p">:</span> <span class="n">fetch</span> <span class="n">the</span> <span class="n">data</span> <span class="n">from</span> <span class="n">backend</span> <span class="k">for</span> <span class="n">this</span> <span class="n">requested</span> <span class="n">EntitySetName</span>  
-  <span class="n">EntityCollection</span> <span class="n">entityCollection</span> <span class="p">=</span> <span class="n">storage</span><span class="p">.</span><span class="n">readEntitySetData</span><span class="p">(</span><span class="n">edmEntitySet</span><span class="p">);</span>
-
-  <span class="o">//</span> 3<span class="n">rd</span><span class="p">:</span> <span class="n">apply</span> <span class="n">system</span> <span class="n">query</span> <span class="n">options</span>
-  <span class="o">//</span> <span class="n">Note</span><span class="p">:</span> $<span class="n">select</span> <span class="n">is</span> <span class="n">handled</span> <span class="n">by</span> <span class="n">the</span> <span class="n">lib</span><span class="p">,</span> <span class="n">we</span> <span class="n">only</span> <span class="n">configure</span> <span class="n">ContextURL</span> <span class="o">+</span> <span class="n">SerializerOptions</span>
-  <span class="o">//</span> <span class="k">for</span> <span class="n">performance</span> <span class="n">reasons</span><span class="p">,</span> <span class="n">it</span> <span class="n">might</span> <span class="n">be</span> <span class="n">necessary</span> <span class="n">to</span> <span class="n">implement</span> <span class="n">the</span> $<span class="n">select</span> <span class="n">manually</span>
-  <span class="n">SelectOption</span> <span class="n">selectOption</span> <span class="p">=</span> <span class="n">uriInfo</span><span class="p">.</span><span class="n">getSelectOption</span><span class="p">();</span>
-
-  <span class="o">//</span> 4<span class="n">th</span><span class="p">:</span> <span class="n">create</span> <span class="n">a</span> <span class="n">serializer</span> <span class="n">based</span> <span class="n">on</span> <span class="n">the</span> <span class="n">requested</span> <span class="n">format</span> <span class="p">(</span><span class="n">json</span><span class="p">)</span>
-  <span class="n">ODataFormat</span> <span class="n">format</span> <span class="p">=</span> <span class="n">ODataFormat</span><span class="p">.</span><span class="n">fromContentType</span><span class="p">(</span><span class="n">responseFormat</span><span class="p">);</span>
-  <span class="n">ODataSerializer</span> <span class="n">serializer</span> <span class="p">=</span> <span class="n">odata</span><span class="p">.</span><span class="n">createSerializer</span><span class="p">(</span><span class="n">format</span><span class="p">);</span>
-
-  <span class="o">//</span> <span class="n">and</span> <span class="n">serialize</span> <span class="n">the</span> <span class="n">content</span><span class="p">:</span> <span class="n">transform</span> <span class="n">from</span> <span class="n">the</span> <span class="n">EntitySet</span> <span class="n">object</span> <span class="n">to</span> <span class="n">InputStream</span>
-  <span class="n">EdmEntityType</span> <span class="n">edmEntityType</span> <span class="p">=</span> <span class="n">edmEntitySet</span><span class="p">.</span><span class="n">getEntityType</span><span class="p">();</span>
-  <span class="o">//</span> <span class="n">we</span> <span class="n">need</span> <span class="n">the</span> <span class="n">property</span> <span class="n">names</span> <span class="n">of</span> <span class="n">the</span> $<span class="n">select</span><span class="p">,</span> <span class="n">in</span> <span class="n">order</span> <span class="n">to</span> <span class="n">build</span> <span class="n">the</span> <span class="n">context</span> <span class="n">URL</span>
-  <span class="n">String</span> <span class="n">selectList</span> <span class="p">=</span> <span class="n">odata</span><span class="p">.</span><span class="n">createUriHelper</span><span class="p">().</span><span class="n">buildContextURLSelectList</span><span class="p">(</span>
-                    <span class="n">edmEntityType</span><span class="p">,</span> <span class="n">null</span><span class="p">,</span> <span class="n">selectOption</span><span class="p">);</span>
-  <span class="n">ContextURL</span> <span class="n">contextUrl</span> <span class="p">=</span> <span class="n">ContextURL</span><span class="p">.</span><span class="n">with</span><span class="p">()</span>
-        <span class="p">.</span><span class="n">entitySet</span><span class="p">(</span><span class="n">edmEntitySet</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">selectList</span><span class="p">(</span><span class="n">selectList</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">build</span><span class="p">();</span>
-
-
-  <span class="o">//</span> <span class="n">adding</span> <span class="n">the</span> <span class="n">selectOption</span> <span class="n">to</span> <span class="n">the</span> <span class="n">serializerOpts</span> <span class="n">will</span> <span class="n">tell</span> <span class="n">the</span> <span class="n">lib</span> <span class="n">to</span> <span class="n">do</span> <span class="n">the</span> <span class="n">job</span>
-  <span class="n">EntityCollectionSerializerOptions</span> <span class="n">opts</span> <span class="p">=</span> <span class="n">EntityCollectionSerializerOptions</span><span class="p">.</span><span class="n">with</span><span class="p">()</span>
-        <span class="p">.</span><span class="n">contextURL</span><span class="p">(</span><span class="n">contextUrl</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">select</span><span class="p">(</span><span class="n">selectOption</span><span class="p">)</span>
-        <span class="p">.</span><span class="n">build</span><span class="p">();</span>
-  <span class="n">SerializerResult</span> <span class="n">serializerResult</span> <span class="p">=</span> <span class="n">serializer</span><span class="p">.</span><span class="n">entityCollection</span><span class="p">(</span><span class="n">srvMetadata</span><span class="p">,</span>
-                    <span class="n">edmEntityType</span><span class="p">,</span> <span class="n">entityCollection</span><span class="p">,</span> <span class="n">opts</span><span class="p">);</span>
-
-  <span class="o">//</span> 5<span class="n">th</span><span class="p">:</span> <span class="n">configure</span> <span class="n">the</span> <span class="n">response</span> <span class="n">object</span><span class="p">:</span> <span class="n">set</span> <span class="n">the</span> <span class="n">body</span><span class="p">,</span> <span class="n">headers</span> <span class="n">and</span> <span class="n">status</span> <span class="n">code</span>
-  <span class="n">response</span><span class="p">.</span><span class="n">setContent</span><span class="p">(</span><span class="n">serializerResult</span><span class="p">.</span><span class="n">getContent</span><span class="p">());</span>
-  <span class="n">response</span><span class="p">.</span><span class="n">setStatusCode</span><span class="p">(</span><span class="n">HttpStatusCode</span><span class="p">.</span><span class="n">OK</span><span class="p">.</span><span class="n">getStatusCode</span><span class="p">());</span>
-  <span class="n">response</span><span class="p">.</span><span class="n">setHeader</span><span class="p">(</span><span class="n">HttpHeader</span><span class="p">.</span><span class="n">CONTENT_TYPE</span><span class="p">,</span> <span class="n">responseFormat</span><span class="p">.</span><span class="n">toContentTypeString</span><span class="p">());</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kt">void</span> <span class="nf">readEntityCollection</span><span class="o">(</span><span class="n">ODataRequest</span> <span class="n">request</span><span class="o">,</span> <span class="n">ODataResponse</span> <span class="n">response</span><span class="o">,</span>
+                    <span class="n">UriInfo</span> <span class="n">uriInfo</span><span class="o">,</span> <span class="n">ContentType</span> <span class="n">responseFormat</span><span class="o">)</span>
+                    <span class="kd">throws</span> <span class="n">ODataApplicationException</span><span class="o">,</span> <span class="n">SerializerException</span> <span class="o">{</span>
+
+  <span class="c1">// 1st retrieve the requested EdmEntitySet from the uriInfo</span>
+  <span class="n">List</span><span class="o">&lt;</span><span class="n">UriResource</span><span class="o">&gt;</span> <span class="n">resourcePaths</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getUriResourceParts</span><span class="o">();</span>
+  <span class="n">UriResourceEntitySet</span> <span class="n">uriResourceEntitySet</span> <span class="o">=</span> <span class="o">(</span><span class="n">UriResourceEntitySet</span><span class="o">)</span> <span class="n">resourcePaths</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">EdmEntitySet</span> <span class="n">edmEntitySet</span> <span class="o">=</span> <span class="n">uriResourceEntitySet</span><span class="o">.</span><span class="na">getEntitySet</span><span class="o">();</span>
+
+  <span class="c1">// 2nd: fetch the data from backend for this requested EntitySetName  </span>
+  <span class="n">EntityCollection</span> <span class="n">entityCollection</span> <span class="o">=</span> <span class="n">storage</span><span class="o">.</span><span class="na">readEntitySetData</span><span class="o">(</span><span class="n">edmEntitySet</span><span class="o">);</span>
+
+  <span class="c1">// 3rd: apply system query options</span>
+  <span class="c1">// Note: $select is handled by the lib, we only configure ContextURL + SerializerOptions</span>
+  <span class="c1">// for performance reasons, it might be necessary to implement the $select manually</span>
+  <span class="n">SelectOption</span> <span class="n">selectOption</span> <span class="o">=</span> <span class="n">uriInfo</span><span class="o">.</span><span class="na">getSelectOption</span><span class="o">();</span>
+
+  <span class="c1">// 4th: create a serializer based on the requested format (json)</span>
+  <span class="n">ODataFormat</span> <span class="n">format</span> <span class="o">=</span> <span class="n">ODataFormat</span><span class="o">.</span><span class="na">fromContentType</span><span class="o">(</span><span class="n">responseFormat</span><span class="o">);</span>
+  <span class="n">ODataSerializer</span> <span class="n">serializer</span> <span class="o">=</span> <span class="n">odata</span><span class="o">.</span><span class="na">createSerializer</span><span class="o">(</span><span class="n">format</span><span class="o">);</span>
+
+  <span class="c1">// and serialize the content: transform from the EntitySet object to InputStream</span>
+  <span class="n">EdmEntityType</span> <span class="n">edmEntityType</span> <span class="o">=</span> <span class="n">edmEntitySet</span><span class="o">.</span><span class="na">getEntityType</span><span class="o">();</span>
+  <span class="c1">// we need the property names of the $select, in order to build the context URL</span>
+  <span class="n">String</span> <span class="n">selectList</span> <span class="o">=</span> <span class="n">odata</span><span class="o">.</span><span class="na">createUriHelper</span><span class="o">().</span><span class="na">buildContextURLSelectList</span><span class="o">(</span>
+                    <span class="n">edmEntityType</span><span class="o">,</span> <span class="kc">null</span><span class="o">,</span> <span class="n">selectOption</span><span class="o">);</span>
+  <span class="n">ContextURL</span> <span class="n">contextUrl</span> <span class="o">=</span> <span class="n">ContextURL</span><span class="o">.</span><span class="na">with</span><span class="o">()</span>
+        <span class="o">.</span><span class="na">entitySet</span><span class="o">(</span><span class="n">edmEntitySet</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">selectList</span><span class="o">(</span><span class="n">selectList</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">build</span><span class="o">();</span>
+
+
+  <span class="c1">// adding the selectOption to the serializerOpts will tell the lib to do the job</span>
+  <span class="n">EntityCollectionSerializerOptions</span> <span class="n">opts</span> <span class="o">=</span> <span class="n">EntityCollectionSerializerOptions</span><span class="o">.</span><span class="na">with</span><span class="o">()</span>
+        <span class="o">.</span><span class="na">contextURL</span><span class="o">(</span><span class="n">contextUrl</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">select</span><span class="o">(</span><span class="n">selectOption</span><span class="o">)</span>
+        <span class="o">.</span><span class="na">build</span><span class="o">();</span>
+  <span class="n">SerializerResult</span> <span class="n">serializerResult</span> <span class="o">=</span> <span class="n">serializer</span><span class="o">.</span><span class="na">entityCollection</span><span class="o">(</span><span class="n">srvMetadata</span><span class="o">,</span>
+                    <span class="n">edmEntityType</span><span class="o">,</span> <span class="n">entityCollection</span><span class="o">,</span> <span class="n">opts</span><span class="o">);</span>
+
+  <span class="c1">// 5th: configure the response object: set the body, headers and status code</span>
+  <span class="n">response</span><span class="o">.</span><span class="na">setContent</span><span class="o">(</span><span class="n">serializerResult</span><span class="o">.</span><span class="na">getContent</span><span class="o">());</span>
+  <span class="n">response</span><span class="o">.</span><span class="na">setStatusCode</span><span class="o">(</span><span class="n">HttpStatusCode</span><span class="o">.</span><span class="na">OK</span><span class="o">.</span><span class="na">getStatusCode</span><span class="o">());</span>
+  <span class="n">response</span><span class="o">.</span><span class="na">setHeader</span><span class="o">(</span><span class="n">HttpHeader</span><span class="o">.</span><span class="na">CONTENT_TYPE</span><span class="o">,</span> <span class="n">responseFormat</span><span class="o">.</span><span class="na">toContentTypeString</span><span class="o">());</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -318,7 +318,7 @@ Therefore, we can directly access the fi
 
 
 <p><strong>Note:</strong><br />
-Most OData services will have more entity types and more navigation possibilities. In such services, it might be desired to invoke <code>$expand</code> with more than one navigation property, like for example: <a href="http://localhost:8080/DemoService/DemoService.svc/Products?$expand=Category,Supplier,Sales">http://localhost:8080/DemoService/DemoService.svc/Products?$expand=Category,Supplier,Sales</a>
+Most OData services will have more entity types and more navigation possibilities. In such services, it might be desired to invoke <code>$expand</code> with more than one navigation property, like for example: <a href="http://localhost:8080/DemoService/DemoService.svc/Products?$expand=Category,Supplier,Sales">http://localhost:8080/DemoService/DemoService.svc/Products?$expand=Category,Supplier,Sales</a><br />
 Such <code>$expand</code> expression is not considered in our example.  </p>
 <p>Now that we have the <code>ExpandItem</code>, the next step is to extract the navigation property from it.<br />
 For that, we have to ask the ExpandItem for its list if resource segments.<br />
@@ -412,44 +412,56 @@ Like described in section 3.1, the Oling
 <p>After building and deploying your service to your server, you can try the following URLs:  </p>
 <ul>
 <li>
-<p>The “normal” payload without query option<br />
-<a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)">http://localhost:8080/DemoService/DemoService.svc/Products(1)</a></p>
+<p>The “normal” payload without query option  </p>
+<ul>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)">http://localhost:8080/DemoService/DemoService.svc/Products(1)</a></li>
+</ul>
 </li>
 <li>
-<p>Using <code>$select</code><br />
-<a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Description">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Description</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name,Description">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name,Description</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=*">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=*</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$select=Name">http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$select=Name</a></p>
+<p>Using <code>$select</code>  </p>
+<ul>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Description">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Description</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name,Description">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name,Description</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=*">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=*</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$select=Name">http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$select=Name</a></li>
+</ul>
 </li>
 <li>
-<p>Using <code>$expand</code>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$expand=Products">http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$expand=Products</a></p>
+<p>Using <code>$expand</code></p>
+<ul>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$expand=Products">http://localhost:8080/DemoService/DemoService.svc/Categories(1)?$expand=Products</a></li>
+</ul>
 </li>
 <li>
-<p>Using <code>$select</code> and $expand<br />
-<a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category</a>  </p>
+<p>Using <code>$select</code> and $expand  </p>
+<ul>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category</a>  </li>
+</ul>
 </li>
 <li>
 <p>Using $expand with nested <code>$select</code><br />
-  We’re interested in Product and the name of its Category
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name)">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name)</a>
-  <a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name,ID)">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name,ID)</a></p>
+  We’re interested in <em>Product</em> and the name of its <em>Category</em></p>
+<ul>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name)">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name)</a></li>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name,ID)">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$expand=Category($select=Name,ID)</a></li>
+</ul>
 </li>
 <li>
 <p>Using <code>$select</code> and $expand with nested $select<br />
-  We’re interested in Product and its Category, but only the name of both<br />
-<a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category($select=Name)">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category($select=Name)</a></p>
+  We’re interested in <em>Product</em> and its <em>Category</em>, but only the <em>name</em> of both  </p>
+<ul>
+<li><a href="http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category($select=Name)">http://localhost:8080/DemoService/DemoService.svc/Products(1)?$select=Name&amp;$expand=Category($select=Name)</a></li>
+</ul>
 </li>
 </ul>
 <p><strong>Note:</strong>
 The same system query option expressions can be applied to entity collections  </p>
 <hr />
 <h1 id="5-summary">5. Summary<a class="headerlink" href="#5-summary" title="Permanent link">&para;</a></h1>
-<p>In this tutorial we have learned the basics of the <code>$select</code> and $expand system query options within the OData context as well as how to implement those features with Apache Olingo library by using the provided convenience and support methods.</p>
+<p>In this tutorial we have learned the basics of the <code>$select</code> and <code>$expand</code> <em>system query options</em> within the OData context as well as how to implement those features with the <em>Apache Olingo library</em> by using the provided convenience and support methods.</p>
 <hr />
 <h1 id="6-links">6. Links<a class="headerlink" href="#6-links" title="Permanent link">&para;</a></h1>
 <h3 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">&para;</a></h3>
@@ -464,7 +476,8 @@ The same system query option expressions
 </ul>
 <h3 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h3>
 <ul>
-<li>OData specification: <a href="http://odata.org/">http://odata.org/</a></li>
+<li><a href="http://odata.org/">Official OData Homepage</a></li>
+<li><a href="http://www.odata.org/documentation/">OData documentation</a></li>
 <li><a href="/javadoc/odata4/index.html">Olingo Javadoc</a></li>
 </ul><div align="center">
 <p>Copyright © 2013-2015, The Apache Software Foundation<br>

Modified: websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_tcs/tutorial_sqo_tcs.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_tcs/tutorial_sqo_tcs.html (original)
+++ websites/staging/olingo/trunk/content/doc/odata4/tutorials/sqo_tcs/tutorial_sqo_tcs.html Wed Aug 12 06:48:26 2015
@@ -446,7 +446,8 @@ More system query options will be treate
 </ul>
 <h3 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h3>
 <ul>
-<li>OData specification: <a href="http://odata.org/">http://odata.org/</a></li>
+<li><a href="http://odata.org/">Official OData Homepage</a></li>
+<li><a href="http://www.odata.org/documentation/">OData documentation</a></li>
 <li><a href="/javadoc/odata4/index.html">Olingo Javadoc</a></li>
 </ul><div align="center">
 <p>Copyright © 2013-2015, The Apache Software Foundation<br>

Modified: websites/staging/olingo/trunk/content/doc/odata4/tutorials/write/tutorial_write.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/odata4/tutorials/write/tutorial_write.html (original)
+++ websites/staging/olingo/trunk/content/doc/odata4/tutorials/write/tutorial_write.html Wed Aug 12 06:48:26 2015
@@ -447,12 +447,13 @@ It has been based on a simple OData mode
 <li>Tutorial OData V4 service part 1: <a href="/doc/odata4/tutorials/read/tutorial_read.html">Read Entity Collection</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip">sample project</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Read.zip.asc">pgp</a>).</li>
 <li>Tutorial OData V4 service part 2: <a href="/doc/odata4/tutorials/readep/tutorial_readep.html">Read Entity, Read Property</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_ReadEp.zip.asc">pgp</a>)</li>
 <li>Tutorial OData V4 service part 3: <a href="/doc/odata4/tutorials/write/tutorial_write.html">Write (Create, Update, Delete Entity)  (this page)</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Write.zip.asc">pgp</a>)</li>
-<li>Tutorial OData V4 service, part 4: <a href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.asc">pgp</a>)  </li>
+<li>Tutorial OData V4 service, part 4: <a href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation</a> | <a href="http://www.apache.org/dyn/closer.cgi/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip">sample project zip</a> (<a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.md5">md5</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.sha512">sha512</a>, <a href="https://dist.apache.org/repos/dist/release/olingo/odata4/Tutorials/DemoService_Tutorial_Navigation.zip.asc">pgp</a>)</li>
 </ul>
 <h3 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h3>
 <ul>
-<li>OData specification: <a href="http://odata.org/">http://odata.org/</a></li>
-<li>Olingo Javadoc: <a href="/javadoc/odata4/index.html">http://olingo.apache.org/javadoc/odata4/index.html</a></li>
+<li><a href="http://odata.org/">Official OData Homepage</a></li>
+<li><a href="http://www.odata.org/documentation/">OData documentation</a></li>
+<li><a href="/javadoc/odata4/index.html">Olingo Javadoc</a></li>
 </ul><div align="center">
 <p>Copyright © 2013-2015, The Apache Software Foundation<br>
 				                Apache Olingo, Olingo, Apache, the Apache feather, and