Author: buildbot
Date: Tue Oct 13 10:37:22 2015
New Revision: 968745

Log:
Staging update by buildbot for olingo

Added:
    websites/staging/olingo/trunk/content/doc/odata4/tutorials/media/
    
websites/staging/olingo/trunk/content/doc/odata4/tutorials/media/tutorial_media.html
Modified:
    websites/staging/olingo/trunk/content/   (props changed)

Propchange: websites/staging/olingo/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Tue Oct 13 10:37:22 2015
@@ -1 +1 @@
-1708320
+1708321

Added: 
websites/staging/olingo/trunk/content/doc/odata4/tutorials/media/tutorial_media.html
==============================================================================
--- 
websites/staging/olingo/trunk/content/doc/odata4/tutorials/media/tutorial_media.html
 (added)
+++ 
websites/staging/olingo/trunk/content/doc/odata4/tutorials/media/tutorial_media.html
 Tue Oct 13 10:37:22 2015
@@ -0,0 +1,459 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html lang="en">
+  <head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <meta name="description" content="Apache Olingo provides libraries which 
enable developers to implement OData producers and OData consumers. The 
available OData Java library implements OData version 2.0. In future on goal is 
to provide an OData 4.0 compliant library once the OData standard is published 
at OASIS. The focus within the community is currently on the Java technology 
but it is up to the community to discuss if other environments find interest.">
+    <meta name="author" content="">
+    <link rel="icon" href="/favicon.ico">
+    <title>
+      Apache Olingo Library
+    </title><!-- Bootstrap core CSS -->
+    <link href="/css/bootstrap.css" rel="stylesheet" type="text/css"><!-- 
Custom styles for this template -->
+    <link href="/css/navbar.css" rel="stylesheet" type="text/css"><!-- Just 
for debugging purposes. Don't actually copy these 2 lines! -->
+    <link href="/css/offcanvas.css" rel="stylesheet" type="text/css"><!-- 
Custom styles for this template -->
+    <link rel="stylesheet" href="/css/main.css">
+    <!--[if lt IE 9]><script 
src="/js/ie8-responsive-file-warning.js"></script><![endif]-->
+
+    <script src="/js/ie-emulation-modes-warning.js" type="text/javascript">
+</script><!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
+
+    <script src="/js/ie10-viewport-bug-workaround.js" type="text/javascript">
+</script><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and 
media queries -->
+    <!--[if lt IE 9]>
+      <script src="/js/html5shiv.min.js"></script>
+      <script src="/js/respond.min.js"></script>
+    <![endif]-->
+  </head>
+
+  <body>
+    <div class="container">
+      <!-- Static navbar -->
+      <div class="navbar navbar-default" role="navigation">
+        <div class="container-fluid">
+          <div class="navbar-header">
+            <button type="button" class="navbar-toggle" data-toggle="collapse" 
data-target=".navbar-collapse">
+              <span class="sr-only">Toggle navigation</span>
+             <span class="icon-bar"></span>
+             <span class="icon-bar"></span>
+             <span class="icon-bar"></span>
+            </button>
+              <img class="navbar-brand" src="/img/OlingoOrangeTM.png" 
style="width:62px;" >
+              <a class="navbar-brand" href="#">Apache Olingo™</a>
+          </div>
+          <div class="navbar-collapse collapse">
+            <ul class="nav navbar-nav">
+
+              <li><a href="/">Home</a></li>
+              <li class="dropdown">
+                  <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">ASF <b class="caret"></b></a>
+                  <ul class="dropdown-menu">
+                      <li><a href="http://www.apache.org/foundation/";>ASF 
Home</a></li>
+                      <li><a 
href="http://projects.apache.org/";>Projects</a></li>
+                      <li><a href="http://people.apache.org/";>People</a></li>
+                      <li><a 
href="http://www.apache.org/foundation/getinvolved.html";>Get Involved</a></li>
+                      <li><a 
href="http://www.apache.org/dyn/closer.cgi";>Download</a></li>
+                      <li><a 
href="http://www.apache.org/security/";>Security</a></li>
+                      <li><a 
href="http://www.apache.org/foundation/sponsorship.html";>Support Apache</a></li>
+                  </ul>
+              </li>
+
+              <li><a href="http://www.apache.org/licenses/";>License</a></li>
+
+              <li class="dropdown">
+                  <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Download <b class="caret"></b></a>
+                  <ul class="dropdown-menu">
+                      <li><a href="/doc/odata2/download.html">Download OData 
2.0 Java</a></li>
+                      <li><a href="/doc/odata4/download.html">Download OData 
4.0 Java</a></li>
+                      <li><a href="/doc/javascript/download.html">Download 
OData 4.0 JavaScript</a></li>
+                  </ul>
+              </li>
+
+              <li class="dropdown">
+                  <a href="#" class="dropdown-toggle" 
data-toggle="dropdown">Documentation <b class="caret"></b></a>
+                  <ul class="dropdown-menu">
+                    <li><a href="/doc/odata2/index.html">Documentation OData 
2.0 Java</a></li>
+                    <li><a href="/doc/odata4/index.html">Documentation OData 
4.0 Java</a></li>
+                    <li><a href="/doc/javascript/index.html">Documentation 
OData 4.0 JavaScript</a></li>
+                  </ul>
+              </li>
+              <li><a href="/support.html">Support</a></li>
+
+            </ul>
+
+                         <img class="navbar-right" height="50px" 
src="/img/asf-logo.gif">
+
+                       </div><!--/.nav-collapse -->
+        </div><!--/.container-fluid -->
+      </div><!-- Main component for a primary marketing message or call to 
action --><style type="text/css">
+/* The following code is added by mdx_elementid.py
+   It was originally lifted from http://subversion.apache.org/style/site.css */
+/*
+ * Hide class="elementid-permalink", except when an enclosing heading
+ * has the :hover property.
+ */
+.headerlink, .elementid-permalink {
+  visibility: hidden;
+}
+h2:hover > .headerlink, h3:hover > .headerlink, h1:hover > .headerlink, 
h6:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, 
dt:hover > .elementid-permalink { visibility: visible }</style>
+<h1 id="how-to-build-an-odata-service-with-olingo-v4">How to build an OData 
Service with Olingo V4<a class="headerlink" 
href="#how-to-build-an-odata-service-with-olingo-v4" title="Permanent 
link">&para;</a></h1>
+<h1 id="part-7-media-entities">Part 7: Media Entities<a class="headerlink" 
href="#part-7-media-entities" title="Permanent link">&para;</a></h1>
+<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" 
title="Permanent link">&para;</a></h2>
+<p>In the present tutorial, we’ll implement a function import and an action 
import as well.</p>
+<p><strong>Note:</strong>
+The final source code can be found in the project <a 
href="https://git-wip-us.apache.org/repos/asf/olingo-odata4";>git repository</a>.
+A detailed description how to checkout the tutorials can be found <a 
href="/doc/odata4/tutorials/prerequisites/prerequisites.html">here</a>. <br />
+This tutorial can be found in subdirectory /samples/tutorials/p10_media</p>
+<p><strong>Table of Contents</strong></p>
+<ol>
+<li>Introduction</li>
+<li>Preparation</li>
+<li>Implementation</li>
+<li>Run the implemented service</li>
+<li>Links</li>
+</ol>
+<h2 id="preparation">Preparation<a class="headerlink" href="#preparation" 
title="Permanent link">&para;</a></h2>
+<p>You should read the previous tutorials first to have an idea how to read 
entities and entity collections. In addition the following code is based on the 
write tutorial merged with the navigation tutorial.</p>
+<p>As a shortcut you should checkout the prepared tutorial project in the git 
repository in folder /samples/tutorials/p9_action_preparation.</p>
+<p>Afterwards do a Deploy and run: it should be working. At this state you can 
perform CRUD operations and do navigations between products and categories.</p>
+<h2 id="implementation">Implementation<a class="headerlink" 
href="#implementation" title="Permanent link">&para;</a></h2>
+<p>In this tutorial we will implement a media entity set. The idea is to store 
advertisments and a related image. The metadata document have to be extended by 
the following elements:</p>
+<div class="codehilite"><pre><span class="nt">&lt;EntityType</span> <span 
class="na">Name=</span><span class="s">&quot;Advertisment&quot;</span> <span 
class="na">HasStream=</span><span class="s">&quot;true&quot;</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;Key&gt;</span>
+        <span class="nt">&lt;PropertyRef</span> <span 
class="na">Name=</span><span class="s">&quot;ID&quot;</span><span 
class="nt">/&gt;</span>
+    <span class="nt">&lt;/Key&gt;</span>
+    <span class="nt">&lt;Property</span> <span class="na">Name=</span><span 
class="s">&quot;ID&quot;</span> <span class="na">Type=</span><span 
class="s">&quot;Edm.Guid&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;Property</span> <span class="na">Name=</span><span 
class="s">&quot;Name&quot;</span> <span class="na">Type=</span><span 
class="s">&quot;Edm.String&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;Property</span> <span class="na">Name=</span><span 
class="s">&quot;AirDate&quot;</span> <span class="na">Type=</span><span 
class="s">&quot;Edm.DateTimeOffset&quot;</span><span class="nt">/&gt;</span>
+<span class="nt">&lt;/EntityType&gt;</span>
+
+<span class="nt">&lt;EntityContainer</span> <span class="na">Name=</span><span 
class="s">&quot;Container&quot;</span><span class="nt">&gt;</span>
+    <span class="nt">&lt;EntitySet</span> <span class="na">Name=</span><span 
class="s">&quot;Advertisments&quot;</span> <span 
class="na">EntityType=</span><span 
class="s">&quot;OData.Demo.Advertisment&quot;</span><span 
class="nt">/&gt;</span>
+<span class="nt">&lt;/EntityContainer&gt;</span>
+</pre></div>
+
+
+<p>As you can see, the XML tag <code>EntityType</code> has a property 
<code>HasStream</code>, which tells us that this entity has an associated media 
stream. Such an Entity consists of common properties like <em>ID</em> and 
<em>Name</em> and the media stream.</p>
+<p><strong>Tasks</strong></p>
+<ul>
+<li>Extend the metadata document</li>
+<li>Enable the data store to handle media entities</li>
+<li>Implement the interface <code>MediaEntityProcessor</code></li>
+</ul>
+<h3 id="extend-the-metadata-document">Extend the metadata document<a 
class="headerlink" href="#extend-the-metadata-document" title="Permanent 
link">&para;</a></h3>
+<p>If you have read the prevois tutorials, you should be familiar with the 
definition entity types. The only difference to regular (Non media enties) is, 
that they have a <code>hasStream</code> Property. If this property is not 
provided it defaults to false. So add the following code to class 
<code>DemoEdmProvider</code>:</p>
+<p>We start with method <code>DemoEdmProvider.getEntityType</code></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="o">{</span>
+    <span class="n">CsdlEntityType</span> <span class="n">entityType</span> 
<span class="o">=</span> <span class="kc">null</span><span class="o">;</span>
+
+    <span class="k">if</span> <span class="o">(</span><span 
class="n">entityTypeName</span><span class="o">.</span><span 
class="na">equals</span><span class="o">(</span><span 
class="n">ET_PRODUCT_FQN</span><span class="o">))</span> <span 
class="o">{</span>
+        <span class="c1">// Definition of entity type Product</span>
+        <span class="c1">// ...</span>
+    <span class="o">}</span> <span class="k">else</span> <span 
class="k">if</span> <span class="o">(</span><span 
class="n">entityTypeName</span><span class="o">.</span><span 
class="na">equals</span><span class="o">(</span><span 
class="n">ET_CATEGORY_FQN</span><span class="o">))</span> <span 
class="o">{</span>
+        <span class="c1">// Definition of entity type Category</span>
+        <span class="c1">// ...</span>
+    <span class="o">}</span> <span class="k">else</span> <span 
class="k">if</span><span class="o">(</span><span 
class="n">entityTypeName</span><span class="o">.</span><span 
class="na">equals</span><span class="o">(</span><span 
class="n">ET_ADVERTISMENT_FQN</span><span class="o">))</span> <span 
class="o">{</span>
+        <span class="n">CsdlProperty</span> <span class="n">id</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">CsdlProperty</span><span class="o">().</span><span 
class="na">setName</span><span class="o">(</span><span 
class="s">&quot;ID&quot;</span><span class="o">)</span>
+                                          <span class="o">.</span><span 
class="na">setType</span><span class="o">(</span><span 
class="n">EdmPrimitiveTypeKind</span><span class="o">.</span><span 
class="na">Guid</span><span class="o">.</span><span 
class="na">getFullQualifiedName</span><span class="o">());</span>
+        <span class="n">CsdlProperty</span> <span class="n">name</span> <span 
class="o">=</span> <span class="k">new</span> <span 
class="n">CsdlProperty</span><span class="o">().</span><span 
class="na">setName</span><span class="o">(</span><span 
class="s">&quot;Name&quot;</span><span class="o">)</span>
+                                              <span class="o">.</span><span 
class="na">setType</span><span class="o">(</span><span 
class="n">EdmPrimitiveTypeKind</span><span class="o">.</span><span 
class="na">String</span><span class="o">.</span><span 
class="na">getFullQualifiedName</span><span class="o">());</span>
+        <span class="n">CsdlProperty</span> <span class="n">airDate</span> 
<span class="o">=</span> <span class="k">new</span> <span 
class="n">CsdlProperty</span><span class="o">().</span><span 
class="na">setName</span><span class="o">(</span><span 
class="s">&quot;AirDate&quot;</span><span class="o">)</span>
+                                                <span class="o">.</span><span 
class="na">setType</span><span class="o">(</span><span 
class="n">EdmPrimitiveTypeKind</span><span class="o">.</span><span 
class="na">DateTimeOffset</span><span class="o">.</span><span 
class="na">getFullQualifiedName</span><span class="o">());</span>
+
+        <span class="n">CsdlPropertyRef</span> <span 
class="n">propertyRef</span> <span class="o">=</span> <span 
class="k">new</span> <span class="n">CsdlPropertyRef</span><span 
class="o">();</span>
+        <span class="n">propertyRef</span><span class="o">.</span><span 
class="na">setName</span><span class="o">(</span><span 
class="s">&quot;ID&quot;</span><span class="o">);</span>
+
+        <span class="n">entityType</span> <span class="o">=</span> <span 
class="k">new</span> <span class="n">CsdlEntityType</span><span 
class="o">();</span>
+        <span class="n">entityType</span><span class="o">.</span><span 
class="na">setName</span><span class="o">(</span><span 
class="n">ET_ADVERTISMENT_NAME</span><span class="o">);</span>
+        <span class="n">entityType</span><span class="o">.</span><span 
class="na">setProperties</span><span class="o">(</span><span 
class="n">Arrays</span><span class="o">.</span><span 
class="na">asList</span><span class="o">(</span><span class="n">id</span><span 
class="o">,</span> <span class="n">name</span><span class="o">,</span> <span 
class="n">airDate</span><span class="o">));</span>
+        <span class="n">entityType</span><span class="o">.</span><span 
class="na">setKey</span><span class="o">(</span><span 
class="n">Collections</span><span class="o">.</span><span 
class="na">singletonList</span><span class="o">(</span><span 
class="n">propertyRef</span><span class="o">));</span>
+        <span class="n">entityType</span><span class="o">.</span><span 
class="na">setHasStream</span><span class="o">(</span><span 
class="kc">true</span><span class="o">);</span>  <span class="c1">// &lt;- 
Enable the media entity stream</span>
+    <span class="o">}</span>
+
+    <span class="k">return</span> <span class="n">entityType</span><span 
class="o">;</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>Further a have to create a new entity set. Add the following snipped to 
<code>DemoEdmProvider.getEntitySet</code></p>
+<div class="codehilite"><pre><span class="p">@</span><span 
class="n">Override</span>
+<span class="n">public</span> <span class="n">CsdlEntitySet</span> <span 
class="n">getEntitySet</span><span class="p">(</span><span 
class="n">FullQualifiedName</span> <span class="n">entityContainer</span><span 
class="p">,</span> <span class="n">String</span> <span 
class="n">entitySetName</span><span class="p">)</span> <span class="p">{</span>
+    <span class="n">CsdlEntitySet</span> <span class="n">entitySet</span> 
<span class="p">=</span> <span class="n">null</span><span class="p">;</span>
+
+    <span class="k">if</span> <span class="p">(</span><span 
class="n">entityContainer</span><span class="p">.</span><span 
class="n">equals</span><span class="p">(</span><span 
class="n">CONTAINER</span><span class="p">))</span> <span class="p">{</span>
+        <span class="k">if</span> <span class="p">(</span><span 
class="n">entitySetName</span><span class="p">.</span><span 
class="n">equals</span><span class="p">(</span><span 
class="n">ES_PRODUCTS_NAME</span><span class="p">))</span> <span 
class="p">{</span>
+            <span class="o">//</span> <span class="n">Definition</span> <span 
class="n">of</span> <span class="n">entity</span> <span class="n">set</span> 
<span class="n">Products</span>
+        <span class="p">}</span> <span class="k">else</span> <span 
class="k">if</span> <span class="p">(</span><span 
class="n">entitySetName</span><span class="p">.</span><span 
class="n">equals</span><span class="p">(</span><span 
class="n">ES_CATEGORIES_NAME</span><span class="p">))</span> <span 
class="p">{</span>
+            <span class="o">//</span> <span class="n">Definition</span> <span 
class="k">if</span> <span class="n">entity</span> <span class="n">set</span> 
<span class="n">Categories</span>
+        <span class="p">}</span> <span class="k">else</span> <span 
class="k">if</span> <span class="p">(</span><span 
class="n">entitySetName</span><span class="p">.</span><span 
class="n">equals</span><span class="p">(</span><span 
class="n">ES_ADVERTISMENTS_NAME</span><span class="p">))</span> <span 
class="p">{</span>
+            <span class="n">entitySet</span> <span class="p">=</span> <span 
class="n">new</span> <span class="n">CsdlEntitySet</span><span 
class="p">();</span>
+            <span class="n">entitySet</span><span class="p">.</span><span 
class="n">setName</span><span class="p">(</span><span 
class="n">ES_ADVERTISMENTS_NAME</span><span class="p">);</span>
+            <span class="n">entitySet</span><span class="p">.</span><span 
class="n">setType</span><span class="p">(</span><span 
class="n">ET_ADVERTISMENT_FQN</span><span class="p">);</span>
+        <span class="p">}</span>
+    <span class="p">}</span>
+
+    <span class="k">return</span> <span class="n">entitySet</span><span 
class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>And finally announce the entity type and entity set:</p>
+<div class="codehilite"><pre><span class="p">@</span><span 
class="n">Override</span>
+<span class="n">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="p">()</span> <span class="p">{</span>
+
+    <span class="o">//</span> <span class="p">...</span>
+    <span class="n">entityTypes</span><span class="p">.</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">getEntityType</span><span class="p">(</span><span 
class="n">ET_ADVERTISMENT_FQN</span><span class="p">));</span>
+    <span class="o">//</span> <span class="p">...</span>
+
+    <span class="k">return</span> <span class="n">schemas</span><span 
class="p">;</span>
+<span class="p">}</span>
+
+<span class="n">public</span> <span class="n">CsdlEntityContainer</span> <span 
class="n">getEntityContainer</span><span class="p">()</span> <span 
class="p">{</span>
+    <span class="o">//</span> <span class="p">...</span>
+    <span class="n">entitySets</span><span class="p">.</span><span 
class="n">add</span><span class="p">(</span><span 
class="n">getEntitySet</span><span class="p">(</span><span 
class="n">CONTAINER</span><span class="p">,</span> <span 
class="n">ES_ADVERTISMENTS_NAME</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<h3 id="enable-the-data-store-to-handle-media-entities">Enable the data store 
to handle media entities<a class="headerlink" 
href="#enable-the-data-store-to-handle-media-entities" title="Permanent 
link">&para;</a></h3>
+<p>In this tutorial, we will keep things simple. To store the value of media 
entities, we create a special property <em>$value</em>. Note this is not a 
valid OData Identifier.</p>
+<p>To read the content to a media entity, we simple return the value of the 
property <em>$value</em>.
+    ::::java
+     private static final String MEDIA_PROPERTY_NAME = "$value";</p>
+<div class="codehilite"><pre><span class="n">public</span> <span 
class="n">byte</span><span class="p">[]</span> <span 
class="n">readMedia</span><span class="p">(</span><span class="n">final</span> 
<span class="n">Entity</span> <span class="n">entity</span><span 
class="p">)</span> <span class="p">{</span>
+    <span class="k">return</span> <span class="p">(</span><span 
class="n">byte</span><span class="p">[])</span> <span 
class="n">entity</span><span class="p">.</span><span 
class="n">getProperty</span><span class="p">(</span><span 
class="n">MEDIA_PROPERTY_NAME</span><span class="p">).</span><span 
class="n">asPrimitive</span><span class="p">();</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>If we update the content of a media entity, we must also the the Content 
Type of the content.  </p>
+<div class="codehilite"><pre><span class="kd">public</span> <span 
class="kt">void</span> <span class="nf">updateMedia</span><span 
class="o">(</span><span class="kd">final</span> <span class="n">Entity</span> 
<span class="n">entity</span><span class="o">,</span> <span 
class="kd">final</span> <span class="n">String</span> <span 
class="n">mediaContentType</span><span class="o">,</span> <span 
class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> 
<span class="n">data</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">entity</span><span class="o">.</span><span 
class="na">getProperties</span><span class="o">().</span><span 
class="na">remove</span><span class="o">(</span><span 
class="n">entity</span><span class="o">.</span><span 
class="na">getProperty</span><span class="o">(</span><span 
class="n">MEDIA_PROPERTY_NAME</span><span class="o">));</span>
+    <span class="n">entity</span><span class="o">.</span><span 
class="na">addProperty</span><span class="o">(</span><span class="k">new</span> 
<span class="n">Property</span><span class="o">(</span><span 
class="kc">null</span><span class="o">,</span> <span 
class="n">MEDIA_PROPERTY_NAME</span><span class="o">,</span> <span 
class="n">ValueType</span><span class="o">.</span><span 
class="na">PRIMITIVE</span><span class="o">,</span> <span 
class="n">data</span><span class="o">));</span>
+    <span class="n">entity</span><span class="o">.</span><span 
class="na">setMediaContentType</span><span class="o">(</span><span 
class="n">mediaContentType</span><span class="o">);</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>If a client creates a new media entity, the body of the requet contains the 
content of the media entity instead the regualr properties! So the other 
regular properties defaults to <code>null</code>. The Content Type of the  
media content must also be set up.</p>
+<div class="codehilite"><pre><span class="kd">public</span> <span 
class="n">Entity</span> <span class="nf">createMediaEntity</span><span 
class="o">(</span><span class="kd">final</span> <span 
class="n">EdmEntityType</span> <span class="n">edmEntityType</span><span 
class="o">,</span> <span class="kd">final</span> <span class="n">String</span> 
<span class="n">mediaContentType</span><span class="o">,</span> <span 
class="kd">final</span> <span class="kt">byte</span><span class="o">[]</span> 
<span class="n">data</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">Entity</span> <span class="n">entity</span> <span 
class="o">=</span> <span class="kc">null</span><span class="o">;</span>
+
+    <span class="k">if</span><span class="o">(</span><span 
class="n">edmEntityType</span><span class="o">.</span><span 
class="na">getName</span><span class="o">().</span><span 
class="na">equals</span><span class="o">(</span><span 
class="n">DemoEdmProvider</span><span class="o">.</span><span 
class="na">ET_ADVERTISMENT_NAME</span><span class="o">))</span> <span 
class="o">{</span>
+        <span class="n">entity</span> <span class="o">=</span> <span 
class="k">new</span> <span class="n">Entity</span><span class="o">();</span>
+        <span class="n">entity</span><span class="o">.</span><span 
class="na">addProperty</span><span class="o">(</span><span class="k">new</span> 
<span class="n">Property</span><span class="o">(</span><span 
class="kc">null</span><span class="o">,</span> <span 
class="s">&quot;ID&quot;</span><span class="o">,</span> <span 
class="n">ValueType</span><span class="o">.</span><span 
class="na">PRIMITIVE</span><span class="o">,</span> <span 
class="n">UUID</span><span class="o">.</span><span 
class="na">randomUUID</span><span class="o">()));</span>
+        <span class="n">entity</span><span class="o">.</span><span 
class="na">addProperty</span><span class="o">(</span><span class="k">new</span> 
<span class="n">Property</span><span class="o">(</span><span 
class="kc">null</span><span class="o">,</span> <span 
class="s">&quot;Name&quot;</span><span class="o">,</span> <span 
class="n">ValueType</span><span class="o">.</span><span 
class="na">PRIMITIVE</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">));</span>
+        <span class="n">entity</span><span class="o">.</span><span 
class="na">addProperty</span><span class="o">(</span><span class="k">new</span> 
<span class="n">Property</span><span class="o">(</span><span 
class="kc">null</span><span class="o">,</span> <span 
class="s">&quot;AirDate&quot;</span><span class="o">,</span> <span 
class="n">ValueType</span><span class="o">.</span><span 
class="na">PRIMITIVE</span><span class="o">,</span> <span 
class="kc">null</span><span class="o">));</span>
+
+        <span class="n">entity</span><span class="o">.</span><span 
class="na">setMediaContentType</span><span class="o">(</span><span 
class="n">mediaContentType</span><span class="o">);</span>
+        <span class="n">entity</span><span class="o">.</span><span 
class="na">addProperty</span><span class="o">(</span><span class="k">new</span> 
<span class="n">Property</span><span class="o">(</span><span 
class="kc">null</span><span class="o">,</span> <span 
class="n">MEDIA_PROPERTY_NAME</span><span class="o">,</span> <span 
class="n">ValueType</span><span class="o">.</span><span 
class="na">PRIMITIVE</span><span class="o">,</span> <span 
class="n">data</span><span class="o">));</span>
+
+        <span class="n">advertisments</span><span class="o">.</span><span 
class="na">add</span><span class="o">(</span><span class="n">entity</span><span 
class="o">);</span>
+    <span class="o">}</span>
+
+    <span class="k">return</span> <span class="n">entity</span><span 
class="o">;</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<h3 id="implement-the-interface-mediaentityprocessor">Implement the interface 
<code>MediaEntityProcessor</code><a class="headerlink" 
href="#implement-the-interface-mediaentityprocessor" title="Permanent 
link">&para;</a></h3>
+<p>As you can see the <a 
href="http://olingo.apache.org/javadoc/odata4/org/apache/olingo/server/api/processor/MediaEntityProcessor.html";><code>MediaEntityProcessor</code></a>
 extends <a 
href="http://olingo.apache.org/javadoc/odata4/org/apache/olingo/server/api/processor/EntityProcessor.html";><code>EntityProcessor</code></a>,
 therefore we will implement <code>MediaEntityProcessor</code> in class 
<code>DemoEntityProcessor</code>.</p>
+<p>The easiest part is to delete an media entity. The method 
<code>deleteMediaEntity</code> is delegated to the method 
<code>deleteEntity(...)</code>.</p>
+<div class="codehilite"><pre><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">deleteMediaEntity</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="kd">throws</span> <span 
class="n">ODataApplicationException</span><span class="o">,</span> <span 
class="n">ODataLibraryException</span> <span class="o">{</span>
+
+    <span class="n">deleteEntity</span><span class="o">(</span><span 
class="n">request</span><span class="o">,</span> <span 
class="n">response</span><span class="o">,</span> <span 
class="n">uriInfo</span><span class="o">);</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>Next implement the creation of media entites. First we fetch the addressed 
entity set and convert the body of the request to a byte array. Remember the 
whole body of the request contains the content of the media entity.</p>
+<div class="codehilite"><pre><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">createMediaEntity</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">requestFormat</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">ODataLibraryException</span> <span class="o">{</span>
+
+    <span class="kd">final</span> <span class="n">EdmEntitySet</span> <span 
class="n">edmEntitySet</span> <span class="o">=</span> <span 
class="n">Util</span><span class="o">.</span><span 
class="na">getEdmEntitySet</span><span class="o">(</span><span 
class="n">uriInfo</span><span class="o">);</span>
+    <span class="kd">final</span> <span class="kt">byte</span><span 
class="o">[]</span> <span class="n">mediaContent</span> <span 
class="o">=</span> <span class="n">odata</span><span class="o">.</span><span 
class="na">createFixedFormatDeserializer</span><span class="o">().</span><span 
class="na">binary</span><span class="o">(</span><span 
class="n">request</span><span class="o">.</span><span 
class="na">getBody</span><span class="o">());</span>
+    <span class="c1">///...</span>
+</pre></div>
+
+
+<p>After that we call the data store to create the new media entity. The <a 
href="http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398337";>OData
 Specification</a> tells us, that we have to set the location header to the 
edit URL of the entity. Since we do not support Prefer Headers we have to 
return the entity itself.</p>
+<div class="codehilite"><pre>    <span class="kd">final</span> <span 
class="n">Entity</span> <span class="n">entity</span> <span class="o">=</span> 
<span class="n">storage</span><span class="o">.</span><span 
class="na">createMediaEntity</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="n">requestFormat</span><span class="o">.</span><span 
class="na">toContentTypeString</span><span class="o">(),</span>
+                                                    <span 
class="n">mediaContent</span><span class="o">);</span>
+
+    <span class="kd">final</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="na">entitySet</span><span class="o">(</span><span 
class="n">edmEntitySet</span><span class="o">).</span><span 
class="na">suffix</span><span class="o">(</span><span 
class="n">Suffix</span><span class="o">.</span><span 
class="na">ENTITY</span><span class="o">).</span><span 
class="na">build</span><span class="o">();</span>
+    <span class="kd">final</span> <span 
class="n">EntitySerializerOptions</span> <span class="n">opts</span> <span 
class="o">=</span> <span class="n">EntitySerializerOptions</span><span 
class="o">.</span><span class="na">with</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="na">build</span><span class="o">();</span>
+    <span class="kd">final</span> <span class="n">SerializerResult</span> 
<span class="n">serializerResult</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">responseFormat</span><span class="o">)</span>
+                                   <span class="o">.</span><span 
class="na">entity</span><span class="o">(</span><span 
class="n">serviceMetadata</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="n">entity</span><span class="o">,</span> <span 
class="n">opts</span><span class="o">);</span>
+
+    <span class="kd">final</span> <span class="n">String</span> <span 
class="n">location</span> <span class="o">=</span> <span 
class="n">request</span><span class="o">.</span><span 
class="na">getRawBaseUri</span><span class="o">()</span> <span 
class="o">+</span> <span class="sc">&#39;/&#39;</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">buildCanonicalURL</span><span class="o">(</span><span 
class="n">edmEntitySet</span><span class="o">,</span> <span 
class="n">entity</span><span class="o">);</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">CREATED</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">LOCATION</span><span class="o">,</span> <span 
class="n">location</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>
+
+
+<p>To keep things simple, our scenario do not support navigation to media 
entities. Because of this, the implementation to read a media entity is quite 
simple. First analayse the URI and fetch the entity. Than take the content of 
our specical property, serialize them and return the serialized content. The 
serializer converts the byte array to an <code>InputStream</code>.</p>
+<div class="codehilite"><pre><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">readMediaEntity</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">ODataLibraryException</span> <span class="o">{</span>
+
+    <span class="c1">// Since our scenario do not contain navigations from 
media entities. We can keep things simple and</span>
+    <span class="c1">// check only the first resource path of the URI.</span>
+    <span class="kd">final</span> <span class="n">UriResource</span> <span 
class="n">firstResoucePart</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="na">get</span><span class="o">(</span><span class="mi">0</span><span 
class="o">);</span>
+    <span class="k">if</span><span class="o">(</span><span 
class="n">firstResoucePart</span> <span class="k">instanceof</span> <span 
class="n">UriResourceEntitySet</span><span class="o">)</span> <span 
class="o">{</span>
+        <span class="kd">final</span> <span class="n">EdmEntitySet</span> 
<span class="n">edmEntitySet</span> <span class="o">=</span> <span 
class="n">Util</span><span class="o">.</span><span 
class="na">getEdmEntitySet</span><span class="o">(</span><span 
class="n">uriInfo</span><span class="o">);</span>
+        <span class="kd">final</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">firstResoucePart</span><span 
class="o">;</span>
+
+        <span class="kd">final</span> <span class="n">Entity</span> <span 
class="n">entity</span> <span class="o">=</span> <span 
class="n">storage</span><span class="o">.</span><span 
class="na">readEntityData</span><span class="o">(</span><span 
class="n">edmEntitySet</span><span class="o">,</span> <span 
class="n">uriResourceEntitySet</span><span class="o">.</span><span 
class="na">getKeyPredicates</span><span class="o">());</span>
+        <span class="k">if</span><span class="o">(</span><span 
class="n">entity</span> <span class="o">==</span> <span 
class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+        <span class="k">throw</span> <span class="k">new</span> <span 
class="nf">ODataApplicationException</span><span class="o">(</span><span 
class="s">&quot;Entity not found&quot;</span><span class="o">,</span>
+                            <span class="n">HttpStatusCode</span><span 
class="o">.</span><span class="na">NOT_FOUND</span><span 
class="o">.</span><span class="na">getStatusCode</span><span 
class="o">(),</span> <span class="n">Locale</span><span class="o">.</span><span 
class="na">ENGLISH</span><span class="o">);</span>
+        <span class="o">}</span>
+
+        <span class="kd">final</span> <span class="kt">byte</span><span 
class="o">[]</span> <span class="n">mediaContent</span> <span 
class="o">=</span> <span class="n">storage</span><span class="o">.</span><span 
class="na">readMedia</span><span class="o">(</span><span 
class="n">entity</span><span class="o">);</span>
+        <span class="kd">final</span> <span class="n">InputStream</span> <span 
class="n">responseContent</span> <span class="o">=</span> <span 
class="n">odata</span><span class="o">.</span><span 
class="na">createFixedFormatSerializer</span><span class="o">().</span><span 
class="na">binary</span><span class="o">(</span><span 
class="n">mediaContent</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">setContent</span><span class="o">(</span><span 
class="n">responseContent</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">entity</span><span class="o">.</span><span 
class="na">getMediaContentType</span><span class="o">());</span>
+    <span class="o">}</span> <span class="k">else</span> <span 
class="o">{</span>
+        <span class="k">throw</span> <span class="k">new</span> <span 
class="nf">ODataApplicationException</span><span class="o">(</span><span 
class="s">&quot;Not implemented&quot;</span><span class="o">,</span>
+                            <span class="n">HttpStatusCode</span><span 
class="o">.</span><span class="na">BAD_REQUEST</span><span 
class="o">.</span><span class="na">getStatusCode</span><span 
class="o">(),</span> <span class="n">Locale</span><span class="o">.</span><span 
class="na">ENGLISH</span><span class="o">);</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<p>Updating a media entity in our scenario is quite similar to read an entity. 
The first step is to analyse the URI, than fetch the entity from data store. 
Afer that we call the <code>updateMediaEntity</code> method. In our case we do 
not return any content. If we would return content, we must return the recently 
uploaded content of the media entity.</p>
+<div class="codehilite"><pre><span class="nd">@Override</span>
+<span class="kd">public</span> <span class="kt">void</span> <span 
class="nf">updateMediaEntity</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">requestFormat</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">ODataLibraryException</span> <span class="o">{</span>
+
+    <span class="kd">final</span> <span class="n">UriResource</span> <span 
class="n">firstResoucePart</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="na">get</span><span class="o">(</span><span class="mi">0</span><span 
class="o">);</span>
+    <span class="k">if</span> <span class="o">(</span><span 
class="n">firstResoucePart</span> <span class="k">instanceof</span> <span 
class="n">UriResourceEntitySet</span><span class="o">)</span> <span 
class="o">{</span>
+        <span class="kd">final</span> <span class="n">EdmEntitySet</span> 
<span class="n">edmEntitySet</span> <span class="o">=</span> <span 
class="n">Util</span><span class="o">.</span><span 
class="na">getEdmEntitySet</span><span class="o">(</span><span 
class="n">uriInfo</span><span class="o">);</span>
+        <span class="kd">final</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">firstResoucePart</span><span 
class="o">;</span>
+
+        <span class="kd">final</span> <span class="n">Entity</span> <span 
class="n">entity</span> <span class="o">=</span> <span 
class="n">storage</span><span class="o">.</span><span 
class="na">readEntityData</span><span class="o">(</span><span 
class="n">edmEntitySet</span><span class="o">,</span> <span 
class="n">uriResourceEntitySet</span><span class="o">.</span><span 
class="na">getKeyPredicates</span><span class="o">());</span>
+        <span class="k">if</span> <span class="o">(</span><span 
class="n">entity</span> <span class="o">==</span> <span 
class="kc">null</span><span class="o">)</span> <span class="o">{</span>
+            <span class="k">throw</span> <span class="k">new</span> <span 
class="nf">ODataApplicationException</span><span class="o">(</span><span 
class="s">&quot;Entity not found&quot;</span><span class="o">,</span>
+                    <span class="n">HttpStatusCode</span><span 
class="o">.</span><span class="na">NOT_FOUND</span><span 
class="o">.</span><span class="na">getStatusCode</span><span 
class="o">(),</span> <span class="n">Locale</span><span class="o">.</span><span 
class="na">ENGLISH</span><span class="o">);</span>
+        <span class="o">}</span>
+
+        <span class="kd">final</span> <span class="kt">byte</span><span 
class="o">[]</span> <span class="n">mediaContent</span> <span 
class="o">=</span> <span class="n">odata</span><span class="o">.</span><span 
class="na">createFixedFormatDeserializer</span><span class="o">().</span><span 
class="na">binary</span><span class="o">(</span><span 
class="n">request</span><span class="o">.</span><span 
class="na">getBody</span><span class="o">());</span>
+        <span class="n">storage</span><span class="o">.</span><span 
class="na">updateMedia</span><span class="o">(</span><span 
class="n">entity</span><span class="o">,</span> <span 
class="n">requestFormat</span><span class="o">.</span><span 
class="na">toContentTypeString</span><span class="o">(),</span> <span 
class="n">mediaContent</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">NO_CONTENT</span><span class="o">.</span><span 
class="na">getStatusCode</span><span class="o">());</span>
+    <span class="o">}</span> <span class="k">else</span> <span 
class="o">{</span>
+        <span class="k">throw</span> <span class="k">new</span> <span 
class="nf">ODataApplicationException</span><span class="o">(</span><span 
class="s">&quot;Not implemented&quot;</span><span class="o">,</span>
+                <span class="n">HttpStatusCode</span><span 
class="o">.</span><span class="na">NOT_IMPLEMENTED</span><span 
class="o">.</span><span class="na">getStatusCode</span><span 
class="o">(),</span> <span class="n">Locale</span><span class="o">.</span><span 
class="na">ENGLISH</span><span class="o">);</span>
+    <span class="o">}</span>
+<span class="o">}</span>
+</pre></div>
+
+
+<h2 id="run-the-implemented-service">Run the implemented service<a 
class="headerlink" href="#run-the-implemented-service" title="Permanent 
link">&para;</a></h2>
+<p>After building and deploying the project, we can invoke our OData 
service.</p>
+<p>Read media entity set
+<strong>GET</strong> <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments";>http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments</a></p>
+<p>Read media entity
+<strong>GET</strong> <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)</a></p>
+<p>Read media entity content
+<strong>GET</strong> <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)/$value">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)/$value</a></p>
+<p>Create a new Media Entity
+<strong>POST</strong> <a 
href="">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments
+Content-Type: image/svg+xml</a></p>
+<div class="codehilite"><pre><span class="cp">&lt;?xml version=&quot;1.0&quot; 
encoding=&quot;UTF-8&quot;?&gt;</span>
+<span class="nt">&lt;svg</span> <span class="na">xmlns=</span><span 
class="s">&quot;http://www.w3.org/2000/svg&quot;</span> <span 
class="na">version=</span><span class="s">&quot;1.1&quot;</span> <span 
class="na">viewBox=</span><span class="s">&quot;0 0 100 100&quot;</span><span 
class="nt">&gt;</span>
+    <span class="nt">&lt;g</span> <span class="na">stroke=</span><span 
class="s">&quot;darkmagenta&quot;</span> <span 
class="na">stroke-width=</span><span class="s">&quot;16&quot;</span> <span 
class="na">fill=</span><span class="s">&quot;crimson&quot;</span><span 
class="nt">&gt;</span>
+        <span class="nt">&lt;circle</span> <span class="na">cx=</span><span 
class="s">&quot;50&quot;</span> <span class="na">cy=</span><span 
class="s">&quot;50&quot;</span> <span class="na">r=</span><span 
class="s">&quot;42&quot;</span><span class="nt">/&gt;</span>
+    <span class="nt">&lt;/g&gt;</span>
+<span class="nt">&lt;/svg&gt;</span>
+</pre></div>
+
+
+<p>Update the content of a media entity
+<strong>PUT</strong>  <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)/$value">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)/$value</a>
+Content-Type: text/plain</p>
+<div class="codehilite"><pre>Super super nice content
+</pre></div>
+
+
+<p>Update the properties of a media entity
+<strong>PUT</strong> <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)</a>
+Content-Type: application/json</p>
+<div class="codehilite"><pre><span class="p">{</span>
+    <span class="nt">&quot;Name&quot;</span><span class="p">:</span> <span 
class="s2">&quot;New Name&quot;</span><span class="p">,</span>
+    <span class="nt">&quot;AirDate&quot;</span><span class="p">:</span> <span 
class="s2">&quot;2020-06-05T23:00&quot;</span>
+<span class="p">}</span>
+</pre></div>
+
+
+<p>Delete a media entity
+<strong>DELETE</strong> <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(f89dee73-af9f-4cd4-b330-db93c25ff3c7)</a></p>
+<p>Delete a media entity
+<strong>DELETE</strong> <a 
href="http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(db2d2186-1c29-4d1e-88ef-127f521b9c67)/$value">http://localhost:8080/DemoService-Media/DemoService.svc/Advertisments(db2d2186-1c29-4d1e-88ef-127f521b9c67)/$value</a></p>
+<h1 id="5-links">5. Links<a class="headerlink" href="#5-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>
+<ul>
+<li>Tutorial OData V4 service part 1: <a 
href="/doc/odata4/tutorials/read/tutorial_read.html">Read Entity 
Collection</a></li>
+<li>Tutorial OData V4 service part 2: <a 
href="/doc/odata4/tutorials/readep/tutorial_readep.html">Read Entity, Read 
Property</a> </li>
+<li>Tutorial OData V4 service part 3: <a 
href="/doc/odata4/tutorials/write/tutorial_write.html">Write (Create, Update, 
Delete Entity)</a></li>
+<li>Tutorial OData V4 service, part 4: <a 
href="/doc/odata4/tutorials/navigation/tutorial_navigation.html">Navigation</a></li>
+<li>Tutorial OData V4 service, part 5.1: <a 
href="/doc/odata4/tutorials/sqo_tcs/tutorial_sqo_tcs.html">System Query Options 
$top, $skip, $count (this page)</a></li>
+<li>Tutorial OData V4 service, part 5.2: <a 
href="/doc/odata4/tutorials/sqo_es/tutorial_sqo_es.html">System Query Options 
$select, $expand</a></li>
+<li>Tutorial OData V4 service, part 5.3: <a 
href="/doc/odata4/tutorials/sqo_o/tutorial_sqo_o.html">System Query Options 
$orderby</a></li>
+<li>Tutorial OData V4 service, part 5.4: <a 
href="/doc/odata4/tutorials/sqo_f/tutorial_sqo_f.html">System Query Options 
$filter</a></li>
+<li>Tutorial ODATA V4 service, part 6: <a 
href="/doc/odata4/tutorials/action/tutorial_action.html">Action and Function 
Imports</a></li>
+<li>Tutorial ODATA V4 service, part 7: Media Entities</li>
+</ul>
+<h3 id="code-and-repository">Code and Repository<a class="headerlink" 
href="#code-and-repository" title="Permanent link">&para;</a></h3>
+<ul>
+<li><a href="https://git-wip-us.apache.org/repos/asf/olingo-odata4";>Git 
Repository</a></li>
+<li><a href="/doc/odata4/tutorials/prerequisites/prerequisites.html">Guide - 
To fetch the tutorial sources</a></li>
+<li><a 
href="http://www.apache.org/dyn/closer.lua/olingo/odata4/4.0.0/DemoService_Tutorial.zip";>Demo
 Service source code as zip file (contains all tutorials)</a></li>
+</ul>
+<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
+                               Foundation.</p>
+        <small><a href="/doc/odata2/privacy.html">Privacy</a></small>
+      </div>
+    </div><!-- /container -->
+    <!-- Bootstrap core JavaScript
+    ================================================== -->
+    <!-- Placed at the end of the document so the pages load faster -->
+    <script src="/js/jquery.js" type="text/javascript">
+</script>
+         <script src="/js/bootstrap.js" type="text/javascript">
+         <script src="/js/offcanvas.js" type="text/javascript">
+</script>
+        <!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
+        <script>
+            (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
+            function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
+            e=o.createElement(i);r=o.getElementsByTagName(i)[0];
+            e.src='//www.google-analytics.com/analytics.js';
+            r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
+            ga('create','UA-44963757-1');ga('send','pageview');
+        </script>
+  </body>
+</html>


Reply via email to