You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by bu...@apache.org on 2013/09/30 16:11:11 UTC

svn commit: r880521 - in /websites/staging/olingo/trunk/content: ./ doc/tutorials/jpafunctionimport.html

Author: buildbot
Date: Mon Sep 30 14:11:11 2013
New Revision: 880521

Log:
Staging update by buildbot for olingo

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

Propchange: websites/staging/olingo/trunk/content/
------------------------------------------------------------------------------
--- cms:source-revision (original)
+++ cms:source-revision Mon Sep 30 14:11:11 2013
@@ -1 +1 @@
-1527577
+1527579

Modified: websites/staging/olingo/trunk/content/doc/tutorials/jpafunctionimport.html
==============================================================================
--- websites/staging/olingo/trunk/content/doc/tutorials/jpafunctionimport.html (original)
+++ websites/staging/olingo/trunk/content/doc/tutorials/jpafunctionimport.html Mon Sep 30 14:11:11 2013
@@ -87,120 +87,120 @@
 </li>
 <li>
 <p>Create a Java class and annotate the Java methods implementing custom operations with Function Import and Parameter Java annotations as shown below. Java methods can be created in JPA entity types and these methods can be annotated with EDM annotations for function import.</p>
-<div class="codehilite"><pre><span class="n">package</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">jpa</span><span class="p">.</span><span class="n">processor</span><span class="p">.</span><span class="n">ref</span><span class="p">.</span><span class="n">extension</span><span class="p">;</span>
+<div class="codehilite"><pre><span class="kn">package</span> <span class="n">org</span><span class="o">.</span><span class="na">apache</span><span class="o">.</span><span class="na">olingo</span><span class="o">.</span><span class="na">odata2</span><span class="o">.</span><span class="na">jpa</span><span class="o">.</span><span class="na">processor</span><span class="o">.</span><span class="na">ref</span><span class="o">.</span><span class="na">extension</span><span class="o">;</span>
 
-<span class="n">import</span> <span class="n">java</span><span class="p">.</span><span class="n">util</span><span class="p">.</span><span class="n">List</span><span class="p">;</span>
+<span class="kn">import</span> <span class="nn">java.util.List</span><span class="o">;</span>
 
-<span class="n">import</span> <span class="n">javax</span><span class="p">.</span><span class="n">persistence</span><span class="p">.</span><span class="n">EntityManager</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">javax</span><span class="p">.</span><span class="n">persistence</span><span class="p">.</span><span class="n">Persistence</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">javax</span><span class="p">.</span><span class="n">persistence</span><span class="p">.</span><span class="n">Query</span><span class="p">;</span>
-
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edm</span><span class="p">.</span><span class="n">Facets</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edm</span><span class="p">.</span><span class="n">FunctionImport</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edm</span><span class="p">.</span><span class="n">Parameter</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edm</span><span class="p">.</span><span class="n">Parameter</span><span class="p">.</span><span class="n">Mode</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edmx</span><span class="p">.</span><span class="n">HttpMethod</span><span class="p">.</span><span class="n">Name</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edmx</span><span class="p">.</span><span class="n">HttpMethod</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edm</span><span class="p">.</span><span class="n">FunctionImport</span><span class="p">.</span><span class="n">ReturnType</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">annotation</span><span class="p">.</span><span class="n">edm</span><span class="p">.</span><span class="n">FunctionImport</span><span class="p">.</span><span class="n">Multiplicity</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">api</span><span class="p">.</span><span class="n">exception</span><span class="p">.</span><span class="n">ODataException</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">jpa</span><span class="p">.</span><span class="n">processor</span><span class="p">.</span><span class="n">ref</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">Address</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">jpa</span><span class="p">.</span><span class="n">processor</span><span class="p">.</span><span class="n">ref</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">SalesOrderHeader</span><span class="p">;</span>
-<span class="n">import</span> <span class="n">org</span><span class="p">.</span><span class="n">apache</span><span class="p">.</span><span class="n">olingo</span><span class="p">.</span><span class="n">odata2</span><span class="p">.</span><span class="n">jpa</span><span class="p">.</span><span class="n">processor</span><span class="p">.</span><span class="n">ref</span><span class="p">.</span><span class="n">model</span><span class="p">.</span><span class="n">SalesOrderItem</span><span class="p">;</span>
-
-<span class="n">public</span> <span class="n">class</span> <span class="n">SalesOrderHeaderProcessor</span> <span class="p">{</span>
-
-  <span class="n">private</span> <span class="n">EntityManager</span> <span class="n">em</span><span class="p">;</span>
-
-   <span class="n">public</span> <span class="n">SalesOrderHeaderProcessor</span><span class="p">()</span> 
-    <span class="n">em</span> <span class="p">=</span> <span class="n">Persistence</span><span class="p">.</span><span class="n">createEntityManagerFactory</span><span class="p">(</span>&quot;<span class="n">salesorderprocessing</span>&quot;<span class="p">)</span>
-      <span class="p">.</span><span class="n">createEntityManager</span><span class="p">();</span>
-  <span class="p">}</span>
-
-  <span class="p">@</span><span class="n">SuppressWarnings</span><span class="p">(</span>&quot;<span class="n">unchecked</span>&quot;<span class="p">)</span>
-  <span class="p">@</span><span class="n">FunctionImport</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">FindAllSalesOrders</span>&quot;<span class="p">,</span> <span class="n">entitySet</span> <span class="p">=</span> &quot;<span class="n">SalesOrders</span>&quot;<span class="p">,</span> <span class="n">returnType</span> <span class="p">=</span> <span class="n">ReturnType</span><span class="p">.</span><span class="n">ENTITY_TYPE</span><span class="p">,</span> <span class="n">multiplicity</span> <span class="p">=</span> <span class="n">Multiplicity</span><span class="p">.</span><span class="n">MANY</span><span class="p">)</span>
-  <span class="n">public</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span> <span class="n">findAllSalesOrders</span><span class="p">(</span>
-    <span class="p">@</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">DeliveryStatusCode</span>&quot;<span class="p">,</span> <span class="n">facets</span> <span class="p">=</span> <span class="p">@</span><span class="n">Facets</span><span class="p">(</span><span class="n">maxLength</span> <span class="p">=</span> 2<span class="p">))</span> <span class="n">final</span> <span class="n">String</span> <span class="n">status</span><span class="p">)</span> <span class="p">{</span>
-
-        <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span>&quot;<span class="n">SELECT</span> <span class="n">E1</span> <span class="n">from</span> <span class="n">SalesOrderHeader</span> <span class="n">E1</span> <span class="n">WHERE</span> <span class="n">E1</span><span class="p">.</span><span class="n">deliveryStatus</span> <span class="p">=</span> <span class="s">&#39;&quot;+ status + &quot;&#39;</span>&quot;<span class="p">);</span>
-        <span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span> <span class="n">soList</span> <span class="p">=</span> <span class="p">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span><span class="p">)</span> <span class="n">q</span><span class="p">.</span><span class="n">getResultList</span><span class="p">();</span>
-        <span class="k">return</span> <span class="n">soList</span><span class="p">;</span>
-  <span class="p">}</span>
-
-  <span class="p">@</span><span class="n">FunctionImport</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">CheckATP</span>&quot;<span class="p">,</span> <span class="n">returnType</span> <span class="p">=</span> <span class="n">ReturnType</span><span class="p">.</span><span class="n">SCALAR</span><span class="p">,</span> <span class="n">multiplicity</span> <span class="p">=</span> <span class="n">Multiplicity</span><span class="p">.</span><span class="n">ONE</span><span class="p">,</span> <span class="n">httpMethod</span> <span class="p">=</span> <span class="p">@</span><span class="n">HttpMethod</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> <span class="n">Name</span><span class="p">.</span><span class="n">GET</span><span class="p">))</span>
-  <span class="n">public</span> <span class="n">boolean</span> <span class="n">checkATP</span><span class="p">(</span>
-    <span class="p">@</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">SoID</span>&quot;<span class="p">,</span> <span class="n">facets</span> <span class="p">=</span> <span class="p">@</span><span class="n">Facets</span><span class="p">(</span><span class="n">nullable</span> <span class="p">=</span> <span class="n">false</span><span class="p">),</span> <span class="n">mode</span> <span class="p">=</span> <span class="n">Mode</span><span class="p">.</span><span class="n">IN</span><span class="p">)</span> <span class="n">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="p">,</span>
-    <span class="p">@</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">LiId</span>&quot;<span class="p">,</span> <span class="n">facets</span> <span class="p">=</span> <span class="p">@</span><span class="n">Facets</span><span class="p">(</span><span class="n">nullable</span> <span class="p">=</span> <span class="n">false</span><span class="p">),</span> <span class="n">mode</span> <span class="p">=</span> <span class="n">Mode</span><span class="p">.</span><span class="n">IN</span><span class="p">)</span> <span class="n">final</span> <span class="n">Long</span> <span class="n">lineItemID</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">if</span> <span class="p">(</span><span class="n">soID</span> <span class="o">==</span> 2<span class="n">L</span><span class="p">)</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">false</span><span class="p">;</span>
-    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">true</span><span class="p">;</span>
-    <span class="p">}</span>
-  <span class="p">}</span>
-
-  <span class="p">@</span><span class="n">FunctionImport</span><span class="p">(</span><span class="n">returnType</span> <span class="p">=</span> <span class="n">ReturnType</span><span class="p">.</span><span class="n">ENTITY_TYPE</span><span class="p">,</span> <span class="n">entitySet</span> <span class="p">=</span> &quot;<span class="n">SalesOrders</span>&quot;<span class="p">)</span>
-  <span class="n">public</span> <span class="n">SalesOrderHeader</span> <span class="n">calculateNetAmount</span><span class="p">(</span>
-    <span class="p">@</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">SoID</span>&quot;<span class="p">,</span> <span class="n">facets</span> <span class="p">=</span> <span class="p">@</span><span class="n">Facets</span><span class="p">(</span><span class="n">nullable</span> <span class="p">=</span> <span class="n">false</span><span class="p">))</span> <span class="n">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="p">)</span>
-    <span class="n">throws</span> <span class="n">ODataException</span> <span class="p">{</span>
-
-          <span class="k">if</span> <span class="p">(</span><span class="n">soID</span> <span class="o">&lt;</span><span class="p">=</span> 0<span class="n">L</span><span class="p">)</span> <span class="p">{</span>
-            <span class="n">throw</span> <span class="n">new</span> <span class="n">ODataException</span><span class="p">(</span>&quot;<span class="n">Invalid</span> <span class="n">SoID</span>&quot;<span class="p">);</span>
-          <span class="p">}</span>
-
-          <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span>&quot;<span class="n">SELECT</span> <span class="n">E1</span> <span class="n">from</span> <span class="n">SalesOrderHeader</span> <span class="n">E1</span> <span class="n">WHERE</span> <span class="n">E1</span><span class="p">.</span><span class="n">soId</span> <span class="p">=</span> &quot;<span class="o">+</span> <span class="n">soID</span> <span class="o">+</span> &quot;<span class="n">l</span>&quot;<span class="p">);</span>
-          <span class="k">if</span> <span class="p">(</span><span class="n">q</span><span class="p">.</span><span class="n">getResultList</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span> <span class="p">{</span>
-            <span class="k">return</span> <span class="n">null</span><span class="p">;</span>
-          <span class="p">}</span>
-          <span class="n">SalesOrderHeader</span> <span class="n">so</span> <span class="p">=</span> <span class="p">(</span><span class="n">SalesOrderHeader</span><span class="p">)</span> <span class="n">q</span><span class="p">.</span><span class="n">getResultList</span><span class="p">().</span><span class="n">get</span><span class="p">(</span>0<span class="p">);</span>
-          <span class="n">double</span> <span class="n">amount</span> <span class="p">=</span> 0<span class="p">;</span>
-          <span class="k">for</span> <span class="p">(</span><span class="n">SalesOrderItem</span> <span class="n">soi</span> <span class="p">:</span> <span class="n">so</span><span class="p">.</span><span class="n">getSalesOrderItem</span><span class="p">())</span> <span class="p">{</span>
-            <span class="n">amount</span> <span class="p">=</span> <span class="n">amount</span> <span class="o">+</span> <span class="p">(</span><span class="n">soi</span><span class="p">.</span><span class="n">getAmount</span><span class="p">()</span> <span class="o">*</span> <span class="n">soi</span><span class="p">.</span><span class="n">getDiscount</span><span class="p">()</span> <span class="o">*</span> <span class="n">soi</span><span class="p">.</span><span class="n">getQuantity</span><span class="p">());</span>
-          <span class="p">}</span>
-          <span class="n">so</span><span class="p">.</span><span class="n">setNetAmount</span><span class="p">(</span><span class="n">amount</span><span class="p">);</span>
-          <span class="k">return</span> <span class="n">so</span><span class="p">;</span>
-      <span class="p">}</span>
-
-  <span class="p">@</span><span class="n">SuppressWarnings</span><span class="p">(</span>&quot;<span class="n">unchecked</span>&quot;<span class="p">)</span>
-  <span class="p">@</span><span class="n">FunctionImport</span><span class="p">(</span><span class="n">returnType</span> <span class="p">=</span> <span class="n">ReturnType</span><span class="p">.</span><span class="n">COMPLEX_TYPE</span><span class="p">)</span>
-  <span class="n">public</span> <span class="n">Address</span> <span class="n">getAddress</span><span class="p">(</span>        
-    <span class="p">@</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">SoID</span>&quot;<span class="p">,</span> <span class="n">facets</span> <span class="p">=</span> <span class="p">@</span><span class="n">Facets</span><span class="p">(</span><span class="n">nullable</span> <span class="p">=</span> <span class="n">false</span><span class="p">))</span> <span class="n">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="p">)</span> <span class="p">{</span>
-    <span class="n">Query</span> <span class="n">q</span> <span class="p">=</span> <span class="n">em</span><span class="p">.</span><span class="n">createQuery</span><span class="p">(</span>&quot;<span class="n">SELECT</span> <span class="n">E1</span> <span class="n">from</span> <span class="n">SalesOrderHeader</span> <span class="n">E1</span> <span class="n">WHERE</span> <span class="n">E1</span><span class="p">.</span><span class="n">soId</span> <span class="p">=</span> &quot; <span class="o">+</span> <span class="n">soID</span> <span class="o">+</span> &quot;<span class="n">l</span>&quot;<span class="p">);</span>
-    <span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span> <span class="n">soList</span> <span class="p">=</span> <span class="p">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span><span class="p">)</span> <span class="n">q</span><span class="p">.</span><span class="n">getResultList</span><span class="p">();</span>
-    <span class="k">if</span> <span class="p">(</span>!<span class="n">soList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">soList</span><span class="p">.</span><span class="n">get</span><span class="p">(</span>0<span class="p">).</span><span class="n">getBuyerAddress</span><span class="p">();</span>
-    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
-      <span class="k">return</span> <span class="n">null</span><span class="p">;</span>
-    <span class="p">}</span>
-  <span class="p">}</span>
-
-  <span class="o">/*</span>
-   <span class="o">*</span> <span class="n">This</span> <span class="n">method</span> <span class="n">will</span> <span class="n">not</span> <span class="n">be</span> <span class="n">transformed</span> <span class="n">into</span> <span class="n">Function</span>
-   <span class="o">*</span> <span class="n">Import</span><span class="p">.</span> <span class="n">Function</span> <span class="n">Import</span> <span class="n">with</span> <span class="k">return</span> <span class="n">type</span> <span class="n">as</span> <span class="n">void</span> <span class="n">is</span> <span class="n">not</span>
-   <span class="o">*</span> <span class="n">supported</span> <span class="n">yet</span><span class="p">.</span>
-   <span class="o">*/</span>
-  <span class="p">@</span><span class="n">FunctionImport</span><span class="p">(</span><span class="n">returnType</span> <span class="p">=</span> <span class="n">ReturnType</span><span class="p">.</span><span class="n">NONE</span><span class="p">)</span>
-  <span class="n">public</span> <span class="n">void</span> <span class="n">process</span><span class="p">(</span>
-    <span class="p">@</span><span class="n">Parameter</span><span class="p">(</span><span class="n">name</span> <span class="p">=</span> &quot;<span class="n">SoID</span>&quot;<span class="p">,</span> <span class="n">facets</span> <span class="p">=</span> <span class="p">@</span><span class="n">Facets</span><span class="p">(</span><span class="n">nullable</span> <span class="p">=</span> <span class="n">false</span><span class="p">))</span> <span class="n">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="p">)</span> <span class="p">{</span>
-    <span class="k">return</span><span class="p">;</span>
-  <span class="p">}</span>
-<span class="p">}</span>
+<span class="kn">import</span> <span class="nn">javax.persistence.EntityManager</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">javax.persistence.Persistence</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">javax.persistence.Query</span><span class="o">;</span>
+
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edm.Facets</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edm.FunctionImport</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edm.Parameter</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edm.Parameter.Mode</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edmx.HttpMethod.Name</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edmx.HttpMethod</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edm.FunctionImport.ReturnType</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.annotation.edm.FunctionImport.Multiplicity</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.api.exception.ODataException</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.jpa.processor.ref.model.Address</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.jpa.processor.ref.model.SalesOrderHeader</span><span class="o">;</span>
+<span class="kn">import</span> <span class="nn">org.apache.olingo.odata2.jpa.processor.ref.model.SalesOrderItem</span><span class="o">;</span>
+
+<span class="kd">public</span> <span class="kd">class</span> <span class="nc">SalesOrderHeaderProcessor</span> <span class="o">{</span>
+
+  <span class="kd">private</span> <span class="n">EntityManager</span> <span class="n">em</span><span class="o">;</span>
+
+   <span class="kd">public</span> <span class="nf">SalesOrderHeaderProcessor</span><span class="o">()</span> 
+    <span class="n">em</span> <span class="o">=</span> <span class="n">Persistence</span><span class="o">.</span><span class="na">createEntityManagerFactory</span><span class="o">(</span><span class="s">&quot;salesorderprocessing&quot;</span><span class="o">)</span>
+      <span class="o">.</span><span class="na">createEntityManager</span><span class="o">();</span>
+  <span class="o">}</span>
+
+  <span class="nd">@SuppressWarnings</span><span class="o">(</span><span class="s">&quot;unchecked&quot;</span><span class="o">)</span>
+  <span class="nd">@FunctionImport</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;FindAllSalesOrders&quot;</span><span class="o">,</span> <span class="n">entitySet</span> <span class="o">=</span> <span class="s">&quot;SalesOrders&quot;</span><span class="o">,</span> <span class="n">returnType</span> <span class="o">=</span> <span class="n">ReturnType</span><span class="o">.</span><span class="na">ENTITY_TYPE</span><span class="o">,</span> <span class="n">multiplicity</span> <span class="o">=</span> <span class="n">Multiplicity</span><span class="o">.</span><span class="na">MANY</span><span class="o">)</span>
+  <span class="kd">public</span> <span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span> <span class="n">findAllSalesOrders</span><span class="o">(</span>
+    <span class="nd">@Parameter</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;DeliveryStatusCode&quot;</span><span class="o">,</span> <span class="n">facets</span> <span class="o">=</span> <span class="nd">@Facets</span><span class="o">(</span><span class="n">maxLength</span> <span class="o">=</span> <span class="mi">2</span><span class="o">))</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">status</span><span class="o">)</span> <span class="o">{</span>
+
+        <span class="n">Query</span> <span class="n">q</span> <span class="o">=</span> <span class="n">em</span><span class="o">.</span><span class="na">createQuery</span><span class="o">(</span><span class="s">&quot;SELECT E1 from SalesOrderHeader E1 WHERE E1.deliveryStatus = &#39;&quot;</span><span class="o">+</span> <span class="n">status</span> <span class="o">+</span> <span class="s">&quot;&#39;&quot;</span><span class="o">);</span>
+        <span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span> <span class="n">soList</span> <span class="o">=</span> <span class="o">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;)</span> <span class="n">q</span><span class="o">.</span><span class="na">getResultList</span><span class="o">();</span>
+        <span class="k">return</span> <span class="n">soList</span><span class="o">;</span>
+  <span class="o">}</span>
+
+  <span class="nd">@FunctionImport</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;CheckATP&quot;</span><span class="o">,</span> <span class="n">returnType</span> <span class="o">=</span> <span class="n">ReturnType</span><span class="o">.</span><span class="na">SCALAR</span><span class="o">,</span> <span class="n">multiplicity</span> <span class="o">=</span> <span class="n">Multiplicity</span><span class="o">.</span><span class="na">ONE</span><span class="o">,</span> <span class="n">httpMethod</span> <span class="o">=</span> <span class="nd">@HttpMethod</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="n">Name</span><span class="o">.</span><span class="na">GET</span><span class="o">))</span>
+  <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">checkATP</span><span class="o">(</span>
+    <span class="nd">@Parameter</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;SoID&quot;</span><span class="o">,</span> <span class="n">facets</span> <span class="o">=</span> <span class="nd">@Facets</span><span class="o">(</span><span class="n">nullable</span> <span class="o">=</span> <span class="kc">false</span><span class="o">),</span> <span class="n">mode</span> <span class="o">=</span> <span class="n">Mode</span><span class="o">.</span><span class="na">IN</span><span class="o">)</span> <span class="kd">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="o">,</span>
+    <span class="nd">@Parameter</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;LiId&quot;</span><span class="o">,</span> <span class="n">facets</span> <span class="o">=</span> <span class="nd">@Facets</span><span class="o">(</span><span class="n">nullable</span> <span class="o">=</span> <span class="kc">false</span><span class="o">),</span> <span class="n">mode</span> <span class="o">=</span> <span class="n">Mode</span><span class="o">.</span><span class="na">IN</span><span class="o">)</span> <span class="kd">final</span> <span class="n">Long</span> <span class="n">lineItemID</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">if</span> <span class="o">(</span><span class="n">soID</span> <span class="o">==</span> <span class="mi">2L</span><span class="o">)</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
+    <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="kc">true</span><span class="o">;</span>
+    <span class="o">}</span>
+  <span class="o">}</span>
+
+  <span class="nd">@FunctionImport</span><span class="o">(</span><span class="n">returnType</span> <span class="o">=</span> <span class="n">ReturnType</span><span class="o">.</span><span class="na">ENTITY_TYPE</span><span class="o">,</span> <span class="n">entitySet</span> <span class="o">=</span> <span class="s">&quot;SalesOrders&quot;</span><span class="o">)</span>
+  <span class="kd">public</span> <span class="n">SalesOrderHeader</span> <span class="nf">calculateNetAmount</span><span class="o">(</span>
+    <span class="nd">@Parameter</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;SoID&quot;</span><span class="o">,</span> <span class="n">facets</span> <span class="o">=</span> <span class="nd">@Facets</span><span class="o">(</span><span class="n">nullable</span> <span class="o">=</span> <span class="kc">false</span><span class="o">))</span> <span class="kd">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="o">)</span>
+    <span class="kd">throws</span> <span class="n">ODataException</span> <span class="o">{</span>
+
+          <span class="k">if</span> <span class="o">(</span><span class="n">soID</span> <span class="o">&lt;=</span> <span class="mi">0L</span><span class="o">)</span> <span class="o">{</span>
+            <span class="k">throw</span> <span class="k">new</span> <span class="nf">ODataException</span><span class="o">(</span><span class="s">&quot;Invalid SoID&quot;</span><span class="o">);</span>
+          <span class="o">}</span>
+
+          <span class="n">Query</span> <span class="n">q</span> <span class="o">=</span> <span class="n">em</span><span class="o">.</span><span class="na">createQuery</span><span class="o">(</span><span class="s">&quot;SELECT E1 from SalesOrderHeader E1 WHERE E1.soId = &quot;</span><span class="o">+</span> <span class="n">soID</span> <span class="o">+</span> <span class="s">&quot;l&quot;</span><span class="o">);</span>
+          <span class="k">if</span> <span class="o">(</span><span class="n">q</span><span class="o">.</span><span class="na">getResultList</span><span class="o">().</span><span class="na">isEmpty</span><span class="o">())</span> <span class="o">{</span>
+            <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
+          <span class="o">}</span>
+          <span class="n">SalesOrderHeader</span> <span class="n">so</span> <span class="o">=</span> <span class="o">(</span><span class="n">SalesOrderHeader</span><span class="o">)</span> <span class="n">q</span><span class="o">.</span><span class="na">getResultList</span><span class="o">().</span><span class="na">get</span><span class="o">(</span><span class="mi">0</span><span class="o">);</span>
+          <span class="kt">double</span> <span class="n">amount</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span>
+          <span class="k">for</span> <span class="o">(</span><span class="n">SalesOrderItem</span> <span class="n">soi</span> <span class="o">:</span> <span class="n">so</span><span class="o">.</span><span class="na">getSalesOrderItem</span><span class="o">())</span> <span class="o">{</span>
+            <span class="n">amount</span> <span class="o">=</span> <span class="n">amount</span> <span class="o">+</span> <span class="o">(</span><span class="n">soi</span><span class="o">.</span><span class="na">getAmount</span><span class="o">()</span> <span class="o">*</span> <span class="n">soi</span><span class="o">.</span><span class="na">getDiscount</span><span class="o">()</span> <span class="o">*</span> <span class="n">soi</span><span class="o">.</span><span class="na">getQuantity</span><span class="o">());</span>
+          <span class="o">}</span>
+          <span class="n">so</span><span class="o">.</span><span class="na">setNetAmount</span><span class="o">(</span><span class="n">amount</span><span class="o">);</span>
+          <span class="k">return</span> <span class="n">so</span><span class="o">;</span>
+      <span class="o">}</span>
+
+  <span class="nd">@SuppressWarnings</span><span class="o">(</span><span class="s">&quot;unchecked&quot;</span><span class="o">)</span>
+  <span class="nd">@FunctionImport</span><span class="o">(</span><span class="n">returnType</span> <span class="o">=</span> <span class="n">ReturnType</span><span class="o">.</span><span class="na">COMPLEX_TYPE</span><span class="o">)</span>
+  <span class="kd">public</span> <span class="n">Address</span> <span class="nf">getAddress</span><span class="o">(</span>        
+    <span class="nd">@Parameter</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;SoID&quot;</span><span class="o">,</span> <span class="n">facets</span> <span class="o">=</span> <span class="nd">@Facets</span><span class="o">(</span><span class="n">nullable</span> <span class="o">=</span> <span class="kc">false</span><span class="o">))</span> <span class="kd">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">Query</span> <span class="n">q</span> <span class="o">=</span> <span class="n">em</span><span class="o">.</span><span class="na">createQuery</span><span class="o">(</span><span class="s">&quot;SELECT E1 from SalesOrderHeader E1 WHERE E1.soId = &quot;</span> <span class="o">+</span> <span class="n">soID</span> <span class="o">+</span> <span class="s">&quot;l&quot;</span><span class="o">);</span>
+    <span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;</span> <span class="n">soList</span> <span class="o">=</span> <span class="o">(</span><span class="n">List</span><span class="o">&lt;</span><span class="n">SalesOrderHeader</span><span class="o">&gt;)</span> <span class="n">q</span><span class="o">.</span><span class="na">getResultList</span><span class="o">();</span>
+    <span class="k">if</span> <span class="o">(!</span><span class="n">soList</span><span class="o">.</span><span class="na">isEmpty</span><span class="o">())</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="n">soList</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="na">getBuyerAddress</span><span class="o">();</span>
+    <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
+      <span class="k">return</span> <span class="kc">null</span><span class="o">;</span>
+    <span class="o">}</span>
+  <span class="o">}</span>
+
+  <span class="cm">/*</span>
+<span class="cm">   * This method will not be transformed into Function</span>
+<span class="cm">   * Import. Function Import with return type as void is not</span>
+<span class="cm">   * supported yet.</span>
+<span class="cm">   */</span>
+  <span class="nd">@FunctionImport</span><span class="o">(</span><span class="n">returnType</span> <span class="o">=</span> <span class="n">ReturnType</span><span class="o">.</span><span class="na">NONE</span><span class="o">)</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">process</span><span class="o">(</span>
+    <span class="nd">@Parameter</span><span class="o">(</span><span class="n">name</span> <span class="o">=</span> <span class="s">&quot;SoID&quot;</span><span class="o">,</span> <span class="n">facets</span> <span class="o">=</span> <span class="nd">@Facets</span><span class="o">(</span><span class="n">nullable</span> <span class="o">=</span> <span class="kc">false</span><span class="o">))</span> <span class="kd">final</span> <span class="n">Long</span> <span class="n">soID</span><span class="o">)</span> <span class="o">{</span>
+    <span class="k">return</span><span class="o">;</span>
+  <span class="o">}</span>
+<span class="o">}</span>
 </pre></div>
 
 
 </li>
 <li>
 <p>Create a Java class by implementing the interface <em>org.apache.olingo.odata2.processor.api.jpa.model</em> to register the annotated Java methods.</p>
-<div class="codehilite"><pre><span class="n">public</span> <span class="n">class</span> <span class="n">SalesOrderProcessingExtension</span> <span class="n">implements</span> <span class="n">JPAEdmExtension</span> <span class="p">{</span>
-  <span class="p">@</span><span class="n">Override</span>
-  <span class="n">public</span> <span class="n">void</span> <span class="n">extendJPAEdmSchema</span><span class="p">(</span><span class="n">final</span> <span class="n">JPAEdmSchemaView</span> <span class="n">arg0</span> <span class="p">{</span>
-    <span class="o">//</span> <span class="n">TODO</span> <span class="n">Auto</span><span class="o">-</span><span class="n">generated</span> <span class="n">method</span> <span class="n">stub</span>
-  <span class="p">}</span>
-
-  <span class="p">@</span><span class="n">Override</span>
-  <span class="n">public</span> <span class="n">void</span> <span class="n">extendWithOperation</span><span class="p">(</span><span class="n">final</span> <span class="n">JPAEdmSchemaView</span> <span class="n">view</span><span class="p">)</span> <span class="p">{</span>
-    <span class="n">view</span><span class="p">.</span><span class="n">registerOperations</span><span class="p">(</span><span class="n">SalesOrderHeaderProcessor</span><span class="p">.</span><span class="n">class</span><span class="p">,</span> <span class="n">null</span><span class="p">);</span>
-  <span class="p">}</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span class="kd">class</span> <span class="nc">SalesOrderProcessingExtension</span> <span class="kd">implements</span> <span class="n">JPAEdmExtension</span> <span class="o">{</span>
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">extendJPAEdmSchema</span><span class="o">(</span><span class="kd">final</span> <span class="n">JPAEdmSchemaView</span> <span class="n">arg0</span> <span class="o">{</span>
+    <span class="c1">// TODO Auto-generated method stub</span>
+  <span class="o">}</span>
+
+  <span class="nd">@Override</span>
+  <span class="kd">public</span> <span class="kt">void</span> <span class="nf">extendWithOperation</span><span class="o">(</span><span class="kd">final</span> <span class="n">JPAEdmSchemaView</span> <span class="n">view</span><span class="o">)</span> <span class="o">{</span>
+    <span class="n">view</span><span class="o">.</span><span class="na">registerOperations</span><span class="o">(</span><span class="n">SalesOrderHeaderProcessor</span><span class="o">.</span><span class="na">class</span><span class="o">,</span> <span class="kc">null</span><span class="o">);</span>
+  <span class="o">}</span>
+<span class="o">}</span>
 </pre></div>
 
 
@@ -208,7 +208,7 @@
 </li>
 <li>
 <p>Register the class created in step 3 with <em>ODataJPAContext</em> as shown below. The registration can be done during the initialization of <em>ODataJPAContext</em> in OData JPA Service Factory along with initializing persistence unit name, entity manager factory instance and optional mapping model.</p>
-<div class="codehilite"><pre><span class="n">oDataJPAContext</span><span class="p">.</span><span class="n">setJPAEdmExtension</span><span class="p">((</span><span class="n">JPAEdmExtension</span><span class="p">)</span> <span class="n">new</span> <span class="n">SalesOrderProcessingExtension</span><span class="p">());</span>
+<div class="codehilite"><pre><span class="n">oDataJPAContext</span><span class="o">.</span><span class="na">setJPAEdmExtension</span><span class="o">((</span><span class="n">JPAEdmExtension</span><span class="o">)</span> <span class="k">new</span> <span class="n">SalesOrderProcessingExtension</span><span class="o">());</span>
 </pre></div>