Author: buildbot
Date: Tue Sep 16 00:19:51 2014
New Revision: 922332
Log:
Production update by buildbot for camel
Modified:
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/olingo2.html
Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/camel/content/olingo2.html
==============================================================================
--- websites/production/camel/content/olingo2.html (original)
+++ websites/production/camel/content/olingo2.html Tue Sep 16 00:19:51 2014
@@ -93,7 +93,7 @@
]]></script>
</div></div><h3 id="Olingo2-URIformat">URI format</h3><div class="code panel
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="theme: Default; brush: java; gutter: false"
type="syntaxhighlighter"><![CDATA[
olingo2://endpoint/<resource-path>?[options]]]></script>
-</div></div><h3 id="Olingo2-Olingo2Component.1">Olingo2Component</h3><p>The
Olingo2 Component can be configured with the options below. These options can
be provided using the component's bean
property <strong><code>configuration</code></strong> of
type <strong><code>org.apache.camel.component.olingo2.Olingo2Configuration</code></strong>. </p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1"
class="confluenceTh">Type</th><th colspan="1" rowspan="1"
class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">serviceUri</td><td colspan="1" rowspan="1"
class="confluenceTd">String</td><td colspan="1" rowspan="1"
class="confluenceTd">Target OData service base URI, e.g. <a shape="rect"
class="external-link"
href="http://services.odata.org/OData/OData.svc/Products?$orderby=Rating"
rel="nofollow">http://services.odata.org/OData/OData.
svc</a></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">contentType</td><td colspan="1" rowspan="1"
class="confluenceTd">String</td><td colspan="1" rowspan="1"
class="confluenceTd">Content-Type header value can be used to specify JSON or
XML message format<span>, defaults to
</span><strong>application/json;charset=utf-8</strong></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">connectTimeout</td><td colspan="1"
rowspan="1" class="confluenceTd">int</td><td colspan="1" rowspan="1"
class="confluenceTd">HTTP connection creation timeout in milliseconds, defaults
to 30,000 (30 seconds)</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">socketTimeout</td><td colspan="1" rowspan="1"
class="confluenceTd">int</td><td colspan="1" rowspan="1"
class="confluenceTd">HTTP request timeout in milliseconds, defaults to 30,000
(30 seconds)</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">httpHeaders</td><td colspan="1" rowspan="1"
class="confluenceTd">
java.util.Map<String, String></td><td colspan="1" rowspan="1"
class="confluenceTd">Custom HTTP headers to inject into every request, this
could include OAuth tokens, etc.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">proxy</td><td colspan="1" rowspan="1"
class="confluenceTd">org.apache.http.HttpHost</td><td colspan="1" rowspan="1"
class="confluenceTd">HTTP proxy server configuration</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">sslContext</td><td colspan="1"
rowspan="1" class="confluenceTd">javax.net.ssl.SSLContext</td><td colspan="1"
rowspan="1" class="confluenceTd">HTTP SSL configuration</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">httpAsyncClientBuilder</td><td
colspan="1" rowspan="1"
class="confluenceTd">org.apache.http.impl.nio.client.HttpAsyncClientBuilder</td><td
colspan="1" rowspan="1" class="confluenceTd">Custom HTTP async client builder
for more complex HTTP client configuration, overrides connectionTimeout,
socketTime
out, proxy and sslContext. Note that a socketTimeout <strong>MUST</strong> be
specified in the builder, otherwise OData requests could block
indefinitely</td></tr></tbody></table></div><h3
id="Olingo2-ProducerEndpoints">Producer Endpoints</h3><p>Producer endpoints can
use endpoint names and options listed next. <span style="line-height:
1.4285715;">Producer endpoints can also use a special
option </span><strong style="line-height:
1.4285715;"><code>inBody</code></strong><span style="line-height:
1.4285715;"> that in turn should contain the name of the endpoint option
whose value will be contained in the Camel Exchange In message. The
<strong>inBody</strong> option defaults to <strong>data</strong> for
endpoints that take that option. </span></p><p>Any of the endpoint
options can be provided in either the endpoint URI, or dynamically in a message
header. The message header name must be of the
format <strong><code>CamelOlingo2.<option></co
de></strong>. Note that
the <strong><code>inBody</code></strong> option overrides message
header, i.e. the endpoint
option <strong><code>inBody=option</code></strong> would override
a <strong><code>CamelOlingo2.option</code></strong> header. In
addition, query parameters can be specified </p><p>Note that the
resourcePath option can either in specified in the URI as a part of the URI
path, as an endpoint option ?resourcePath=<resource-path> or as a header
value CamelOlingo2.resourcePath. The OData entity key predicate can either be a
part of the resource path, e.g. <em>Manufacturers('1')</em>, where
<em>'</em><em>1'</em> is the key predicate, or be specified separately
with resource path <em>Manufacturers</em> and keyPredicate option
<em>'1'</em>. </p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Endpoint</th><th colspan="1" rowspan="1"
class="confluenceTh">Opt
ions</th><th colspan="1" rowspan="1" class="confluenceTh">Result Body
Type</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">batch</td><td colspan="1" rowspan="1"
class="confluenceTd">data</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>java.util.List<org.apache.camel.component.olingo2.api.batch.Olingo2BatchResponse></pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">create</td><td colspan="1"
rowspan="1" class="confluenceTd">data, resourcePath</td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.ep.entry.ODataEntry</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">delete</td><td colspan="1"
rowspan="1" class="confluenceTd">resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">merge</td><td colspan="1"
rowspan="1" class="confluenceTd">data, resourcePat
h</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">patch</td><td colspan="1"
rowspan="1" class="confluenceTd">data, resourcePath</td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">read</td><td colspan="1"
rowspan="1" class="confluenceTd">queryParams, resourcePath</td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Depends on OData resource being queried as
described next</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">update</td><td colspan="1" rowspan="1"
class="confluenceTd">data, resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr></tbody></table></div><h3
id="Olingo2-ODataResourceTypeMapping">OData Resource Type Mappin
g</h3><p>The result of <strong>read</strong> endpoint and data type of
<strong>data</strong> option depends on the OData resource being queried,
created or modified. </p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">OData Resource Type</th><th colspan="1" rowspan="1"
class="confluenceTh">Resource URI from resourcePath and keyPredicate</th><th
colspan="1" rowspan="1" class="confluenceTh">In or Out Body
Type</th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Entity data
model</td><td colspan="1" rowspan="1" class="confluenceTd">$metadata</td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.edm.Edm</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">Service document</td><td
colspan="1" rowspan="1" class="confluenceTd">/</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.servicedocument.ServiceDocument</pre></td></tr><
tr><td colspan="1" rowspan="1" class="confluenceTd">OData feed</td><td
colspan="1" rowspan="1" class="confluenceTd"><entity-set></td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.ep.feed.ODataFeed</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">OData entry</td><td colspan="1"
rowspan="1"
class="confluenceTd"><entity-set>(<key-predicate>)</td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.ep.entry.ODataEntry for
Out body (response) and java.util.Map<String, Object> for In body
(request)</pre></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Simple property</td><td colspan="1" rowspan="1"
class="confluenceTd"><entity-set>(<key-predicate>)/<simple-property></td><td
colspan="1" rowspan="1" class="confluenceTd">Appropriate Java data type as
described by <a shape="rect" class="external-link"
href="http://olingo.apache.org/javadoc/odata2/index.
html?org/apache/olingo/odata2/api/edm/class-use/EdmProperty.html">Olingo
EdmProperty</a></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Simple property value</td><td colspan="1" rowspan="1"
class="confluenceTd"><entity-set>(<key-predicate>)/<simple-property>/$value</td><td
colspan="1" rowspan="1" class="confluenceTd"><span>Appropriate Java data type
as described by </span><a shape="rect" class="external-link"
href="http://olingo.apache.org/javadoc/odata2/index.html?org/apache/olingo/odata2/api/edm/class-use/EdmProperty.html">Olingo
EdmProperty</a></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Complex property</td><td colspan="1" rowspan="1"
class="confluenceTd"><span><entity-set>(<key-predicate>)/<complex-property></span></td><td
colspan="1" rowspan="1" class="confluenceTd"><pre>java.util.Map<String,
Object></pre></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Zero or one association link</td><td
colspan="1" rowspan="1"
class="confluenceTd"><entity-set>(<key-predicate>/$link/<one-to-one-entity-set-property></td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Zero or many association links</td><td colspan="1"
rowspan="1"
class="confluenceTd"><span><entity-set>(<key-predicate>/$link/<one-to-many-entity-set-property></span></td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>java.util.List<String></pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">Count</td><td colspan="1"
rowspan="1" class="confluenceTd"><resource-uri>/$count</td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>java.lang.Long</pre></td></tr></tbody></table></div><h3
id="Olingo2-URIOptions">URI Options</h3><p>If a value is not provided for
<strong>queryParams</strong> either in the endpoint URI or in a message header,
it will be assumed to be <strong>
<code>null</code></strong>. Note that
the <strong><code>null</code></strong> value will only be used if
other options do not satisfy matching endpoints.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Name</th><th colspan="1" rowspan="1"
class="confluenceTh">Type</th><th colspan="1" rowspan="1"
class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">data</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>Object</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">Data with appropriate type used to create or modify the
OData resource</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">keyPredicate</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">Key predicate to create a parameterized OData resource
endpoint. Useful for create/update operations where the key predicate va
lue is dynamically provided in a header</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">queryParams</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>java.util.Map<String, String></pre></td><td
colspan="1" rowspan="1" class="confluenceTd">OData system options and custom
query options. For more information see <a shape="rect" class="external-link"
href="http://www.odata.org/documentation/odata-version-2-0/uri-conventions"
rel="nofollow">OData 2.0 URI Conventions</a></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">OData resource path, may or may not contain key
predicate</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">*</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">Any other URI option is treated as a query parameter a
nd added to query parameter map, overwriting entries in a
<strong>queryParams</strong> option, if also
specified</td></tr></tbody></table></div><h3
id="Olingo2-ConsumerEndpoints">Consumer Endpoints</h3><p>Only the
<strong>read</strong> endpoint can be used as a consumer endpoint. Consumer
endpoints can use <a shape="rect" class="external-link"
href="http://camel.apache.org/polling-consumer.html#PollingConsumer-ScheduledPollConsumerOptions">Scheduled
Poll Consumer Options</a> with
a <strong><code>consumer.</code></strong> prefix to schedule endpoint
invocation. By default consumer endpoints that return an array or collection
will generate one exchange per element, and their routes will be executed once
for each exchange. This behavior can be disabled by setting the endpoint
property <strong>consumer.splitResult=false</strong>. </p><h3
id="Olingo2-MessageHeaders">Message Headers</h3><p>Any URI option can be
provided in a message header for producer endpoints w
ith a <strong><code>CamelOlingo2.</code></strong> prefix.</p><h3
id="Olingo2-MessageBody">Message Body</h3><p>All result message bodies utilize
objects provided by the underlying <a shape="rect" class="external-link"
href="http://olingo.apache.org/javadoc/odata2/index.html">Apache Olingo 2.0
API</a> used by the Olingo2Component. Producer endpoints can specify the option
name for incoming message body in
the <strong><code>inBody</code></strong> endpoint URI parameter. For
endpoints that return an array or collection, a consumer endpoint will map
every element to distinct messages, unless
<strong>consumer.splitResult</strong> is set to <strong>false</strong>.</p><h3
id="Olingo2-Usecases"><span style="font-size: 16.0px;line-height: 1.5625;">Use
cases</span></h3><div class="wiki-content"><p>The following route reads top 5
entries from the Manufacturer feed ordered by ascending Name
property. </p><div class="syntaxhighlighter nogutter
java"><p> </p><div clas
s="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><div class="container" title="Hint:
double-click to select code"><div class="line number1 index0 alt2"><code
class="java plain">from(</code><code class="java
string">"direct:..."</code><code class="java plain">)</code></div><div
class="line number1 index0 alt2"><code class="java
spaces">    </code><code class="java
plain">.setHeader("CamelOlingo2.$top", "5"</code><code class="java
plain">);</code></div><div class="line number1 index0 alt2"><code class="java
spaces" style="line-height: 1.4285715;">    </code><code
class="java plain" style="line-height: 1.4285715;">.to(</code><code class="java
string" style="line-height: 1.4285715;">"<a shape="rect"
href="box://files/upload/inBody=fileUploadRequest"
rel="nofollow">olingo2://read/Manufacturers?</a>orderBy=Name%20asc"</code><code
class="java plain" style="line-height: 1.4285715;">);</code></di
v></div></td></tr></tbody></table></div><p> </p></div><p>The following
route reads Manufacturer entry using the key property value in
incoming <strong>id</strong> header. </p><div
class="syntaxhighlighter nogutter java"><p> </p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><div class="container" title="Hint:
double-click to select code"><div class="line number1 index0 alt2"><code
class="java plain">from(</code><code class="java
string">"direct:..."</code><code class="java plain">)</code></div><div
class="line number1 index0 alt2"><code class="java
spaces">    </code><code class="java
plain">.setHeader("<span>C</span><span>amelOlingo2.keyPredicate</span>",
<span>header("id")</span></code><code class="java plain">)</code></div><div
class="line number2 index1 alt1"><code class="java
spaces">    </code><code class="java
plain">.to(</code><code class="java stri
ng">"<a shape="rect" href="box://files/upload/inBody=fileUploadRequest"
rel="nofollow">olingo2://read/M</a>anufacturers"</code><code class="java
plain">);</code></div></div></td></tr></tbody></table></div><p>The following
route creates Manufacturer entry using the <strong>java.util.Map<String,
Object></strong> in body message. </p><div class="syntaxhighlighter
nogutter java"><p> </p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><div class="container" title="Hint: double-click to select
code"><div class="line number1 index0 alt2"><code class="java
plain">from(</code><code class="java string">"direct:..."</code><code
class="java plain">)</code></div><div class="line number1 index0 alt2"><code
class="java spaces" style="line-height:
1.4285715;">    </code><code class="java plain"
style="line-height: 1.4285715;">.to(</code><code class="java string"
style="line-height: 1.4285715;">"<a
shape="rect" href="box://files/upload/inBody=fileUploadRequest"
rel="nofollow">olingo2://create/M</a>anufacturers"</code><code class="java
plain" style="line-height:
1.4285715;">);</code></div></div></td></tr></tbody></table></div><p> </p></div></div><p>The
following route polls Manufacturer <a shape="rect" class="external-link"
href="http://olingo.apache.org/doc/tutorials/deltaClient.html">delta
feed</a> every 30 seconds. The bean <strong>blah</strong> updates the
bean <strong>paramsBean</strong> to add an
updated <strong>!deltatoken</strong> property with the value returned in
the <strong>ODataDeltaFeed</strong> result. Since the initial delta token is
not known, the consumer endpoint will produce
an <strong>ODataFeed</strong> value the first time, and
<strong>ODataDeltaFeed</strong> on subsequent polls. </p><div
class="syntaxhighlighter nogutter java"><p> </p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspa
n="1" rowspan="1" class="confluenceTd"><div class="container" title="Hint:
double-click to select code"><div class="line number1 index0 alt2"><code
class="java plain">from(</code><code class="java string">"<a shape="rect"
rel="nofollow">olingo2://read/Manufacturers?queryParams=#paramsBean&consumer.timeUnit=SECONDS&consumer.delay=30</a>"</code><code
class="java plain">)</code></div><div class="line number2 index1 alt1"><code
class="java spaces">    </code><code class="java
plain">.to(</code><code class="java string">"<a shape="rect"
class="external-link" href="http://beanblah"
rel="nofollow">bean:blah</a>"</code><code class="java
plain">);</code></div></div></td></tr></tbody></table></div></div></div></div>
+</div></div><h3 id="Olingo2-Olingo2Component.1">Olingo2Component</h3><p>The
Olingo2 Component can be configured with the options below. These options can
be provided using the component's bean
property <strong><code>configuration</code></strong> of
type <strong><code>org.apache.camel.component.olingo2.Olingo2Configuration</code></strong>. </p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh">Option</th><th colspan="1" rowspan="1"
class="confluenceTh">Type</th><th colspan="1" rowspan="1"
class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">serviceUri</td><td colspan="1" rowspan="1"
class="confluenceTd">String</td><td colspan="1" rowspan="1"
class="confluenceTd">Target OData service base URI, e.g. <a shape="rect"
class="external-link"
href="http://services.odata.org/OData/OData.svc/Products?$orderby=Rating"
rel="nofollow">http://services.odata.org/OData/OData.
svc</a></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">contentType</td><td colspan="1" rowspan="1"
class="confluenceTd">String</td><td colspan="1" rowspan="1"
class="confluenceTd">Content-Type header value can be used to specify JSON or
XML message format<span>, defaults to
</span><strong>application/json;charset=utf-8</strong></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">connectTimeout</td><td colspan="1"
rowspan="1" class="confluenceTd">int</td><td colspan="1" rowspan="1"
class="confluenceTd">HTTP connection creation timeout in milliseconds, defaults
to 30,000 (30 seconds)</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">socketTimeout</td><td colspan="1" rowspan="1"
class="confluenceTd">int</td><td colspan="1" rowspan="1"
class="confluenceTd">HTTP request timeout in milliseconds, defaults to 30,000
(30 seconds)</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">httpHeaders</td><td colspan="1" rowspan="1"
class="confluenceTd">
java.util.Map<String, String></td><td colspan="1" rowspan="1"
class="confluenceTd">Custom HTTP headers to inject into every request, this
could include OAuth tokens, etc.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">proxy</td><td colspan="1" rowspan="1"
class="confluenceTd">org.apache.http.HttpHost</td><td colspan="1" rowspan="1"
class="confluenceTd">HTTP proxy server configuration</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">sslContext</td><td colspan="1"
rowspan="1" class="confluenceTd">javax.net.ssl.SSLContext</td><td colspan="1"
rowspan="1" class="confluenceTd">HTTP SSL configuration</td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">httpAsyncClientBuilder</td><td
colspan="1" rowspan="1"
class="confluenceTd">org.apache.http.impl.nio.client.HttpAsyncClientBuilder</td><td
colspan="1" rowspan="1" class="confluenceTd">Custom HTTP async client builder
for more complex HTTP client configuration, overrides connectionTimeout,
socketTime
out, proxy and sslContext. Note that a socketTimeout <strong>MUST</strong> be
specified in the builder, otherwise OData requests could block
indefinitely</td></tr></tbody></table></div><h3
id="Olingo2-ProducerEndpoints">Producer Endpoints</h3><p>Producer endpoints can
use endpoint names and options listed next. <span style="line-height:
1.4285715;">Producer endpoints can also use a special
option </span><strong style="line-height:
1.4285715;"><code>inBody</code></strong><span style="line-height:
1.4285715;"> that in turn should contain the name of the endpoint option
whose value will be contained in the Camel Exchange In message. The
<strong>inBody</strong> option defaults to <strong>data</strong> for
endpoints that take that option. </span></p><p>Any of the endpoint
options can be provided in either the endpoint URI, or dynamically in a message
header. The message header name must be of the
format <strong><code>CamelOlingo2.<option></co
de></strong>. Note that
the <strong><code>inBody</code></strong> option overrides message
header, i.e. the endpoint
option <strong><code>inBody=option</code></strong> would override
a <strong><code>CamelOlingo2.option</code></strong> header. In
addition, query parameters can be specified </p><p>Note that the
resourcePath option can either in specified in the URI as a part of the URI
path, as an endpoint option ?resourcePath=<resource-path> or as a header
value CamelOlingo2.resourcePath. The OData entity key predicate can either be a
part of the resource path, e.g. <em>Manufacturers('1')</em>, where
<em>'</em><em>1'</em> is the key predicate, or be specified separately
with resource path <em>Manufacturers</em> and keyPredicate option
<em>'1'</em>. </p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Endpoint</th><th colspan="1" rowspan="1"
class="confluenceTh">Opt
ions</th><th colspan="1" rowspan="1" class="confluenceTh">HTTP Method</th><th
colspan="1" rowspan="1" class="confluenceTh">Result Body Type</th></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">batch</td><td colspan="1"
rowspan="1" class="confluenceTd">data</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>POST with multipart/mixed batch request</pre></td><td
colspan="1" rowspan="1"
class="confluenceTd"><pre>java.util.List<org.apache.camel.component.olingo2.api.batch.Olingo2BatchResponse></pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">create</td><td colspan="1"
rowspan="1" class="confluenceTd">data, resourcePath</td><td colspan="1"
rowspan="1" class="confluenceTd"><pre>POST</pre></td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.ep.entry.ODataEntry for
new entries</pre><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes for
other OData resources</pre></td></tr><tr><td colspan="1" rowspan="1" class=
"confluenceTd">delete</td><td colspan="1" rowspan="1"
class="confluenceTd">resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>DELETE</pre></td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">merge</td><td colspan="1"
rowspan="1" class="confluenceTd">data, resourcePath</td><td colspan="1"
rowspan="1" class="confluenceTd"><pre>MERGE</pre></td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">patch</td><td colspan="1"
rowspan="1" class="confluenceTd">data, resourcePath</td><td colspan="1"
rowspan="1" class="confluenceTd"><pre>PATCH</pre></td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">read<
/td><td colspan="1" rowspan="1" class="confluenceTd">queryParams,
resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>GET</pre></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Depends on OData resource being queried as described
next</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">update</td><td colspan="1" rowspan="1"
class="confluenceTd">data, resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>PUT</pre></td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.commons.HttpStatusCodes</pre></td></tr></tbody></table></div><h3
id="Olingo2-ODataResourceTypeMapping">OData Resource Type Mapping</h3><p>The
result of <strong>read</strong> endpoint and data type of <strong>data</strong>
option depends on the OData resource being queried, created or
modified. </p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">OData Resource Ty
pe</th><th colspan="1" rowspan="1" class="confluenceTh">Resource URI from
resourcePath and keyPredicate</th><th colspan="1" rowspan="1"
class="confluenceTh">In or Out Body Type</th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">Entity data model</td><td colspan="1"
rowspan="1" class="confluenceTd">$metadata</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.edm.Edm</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">Service document</td><td
colspan="1" rowspan="1" class="confluenceTd">/</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.servicedocument.ServiceDocument</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd">OData feed</td><td colspan="1"
rowspan="1" class="confluenceTd"><entity-set></td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>org.apache.olingo.odata2.api.ep.feed.ODataFeed</pre></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"
>OData entry</td><td colspan="1" rowspan="1"
>class="confluenceTd"><entity-set>(<key-predicate>)</td><td
>colspan="1" rowspan="1"
>class="confluenceTd"><pre>org.apache.olingo.odata2.api.ep.entry.ODataEntry
>for Out body (response)</pre><pre>java.util.Map<String, Object> for In
>body (request)</pre></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd">Simple property</td><td colspan="1" rowspan="1"
>class="confluenceTd"><entity-set>(<key-predicate>)/<simple-property></td><td
> colspan="1" rowspan="1" class="confluenceTd">Appropriate Java data type as
>described by <a shape="rect" class="external-link"
>href="http://olingo.apache.org/javadoc/odata2/index.html?org/apache/olingo/odata2/api/edm/class-use/EdmProperty.html">Olingo
> EdmProperty</a></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd">Simple property value</td><td colspan="1" rowspan="1"
>class="confluenceTd"><entity-set>(<key-predicate>)/<simple-property>/$value</t
d><td colspan="1" rowspan="1" class="confluenceTd"><span>Appropriate Java data
type as described by </span><a shape="rect" class="external-link"
href="http://olingo.apache.org/javadoc/odata2/index.html?org/apache/olingo/odata2/api/edm/class-use/EdmProperty.html">Olingo
EdmProperty</a></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Complex property</td><td colspan="1" rowspan="1"
class="confluenceTd"><span><entity-set>(<key-predicate>)/<complex-property></span></td><td
colspan="1" rowspan="1" class="confluenceTd"><pre>java.util.Map<String,
Object></pre></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Zero or one association link</td><td colspan="1"
rowspan="1"
class="confluenceTd"><entity-set>(<key-predicate>/$link/<one-to-one-entity-set-property></td><td
colspan="1" rowspan="1" class="confluenceTd"><pre>String for
response</pre><pre>java.util.Map<String, Object> with key property names
and values for reques
t</pre></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">Zero or
many association links</td><td colspan="1" rowspan="1"
class="confluenceTd"><span><entity-set>(<key-predicate>/$link/<one-to-many-entity-set-property></span></td><td
colspan="1" rowspan="1" class="confluenceTd"><pre>java.util.List<String>
for response</pre><pre>java.util.List<java.util.Map<String,
Object>> containing list of key property names and values for
request</pre></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">Count</td><td colspan="1" rowspan="1"
class="confluenceTd"><resource-uri>/$count</td><td colspan="1"
rowspan="1"
class="confluenceTd"><pre>java.lang.Long</pre></td></tr></tbody></table></div><h3
id="Olingo2-URIOptions">URI Options</h3><p>If a value is not provided for
<strong>queryParams</strong> either in the endpoint URI or in a message header,
it will be assumed to be <strong><code>null</code></strong>. Note that
the <stron
g><code>null</code></strong> value will only be used if other options do
not satisfy matching endpoints.</p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh">Name</th><th colspan="1" rowspan="1"
class="confluenceTh">Type</th><th colspan="1" rowspan="1"
class="confluenceTh">Description</th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">data</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>Object</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">Data with appropriate type used to create or modify the
OData resource</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">keyPredicate</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">Key predicate to create a parameterized OData resource
endpoint. Useful for create/update operations where the key predicate value is
dynamically provided in a header</td></tr><tr>
<td colspan="1" rowspan="1" class="confluenceTd">queryParams</td><td
colspan="1" rowspan="1" class="confluenceTd"><pre>java.util.Map<String,
String></pre></td><td colspan="1" rowspan="1" class="confluenceTd">OData
system options and custom query options. For more information see <a
shape="rect" class="external-link"
href="http://www.odata.org/documentation/odata-version-2-0/uri-conventions"
rel="nofollow">OData 2.0 URI Conventions</a></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">resourcePath</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">OData resource path, may or may not contain key
predicate</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">*</td><td colspan="1" rowspan="1"
class="confluenceTd"><pre>String</pre></td><td colspan="1" rowspan="1"
class="confluenceTd">Any other URI option is treated as a query parameter and
added to query parameter map, overwriting entries
in a <strong>queryParams</strong> option, if also
specified</td></tr></tbody></table></div><h3
id="Olingo2-ConsumerEndpoints">Consumer Endpoints</h3><p>Only the
<strong>read</strong> endpoint can be used as a consumer endpoint. Consumer
endpoints can use <a shape="rect" class="external-link"
href="http://camel.apache.org/polling-consumer.html#PollingConsumer-ScheduledPollConsumerOptions">Scheduled
Poll Consumer Options</a> with
a <strong><code>consumer.</code></strong> prefix to schedule endpoint
invocation. By default consumer endpoints that return an array or collection
will generate one exchange per element, and their routes will be executed once
for each exchange. This behavior can be disabled by setting the endpoint
property <strong>consumer.splitResult=false</strong>. </p><h3
id="Olingo2-MessageHeaders">Message Headers</h3><p>Any URI option can be
provided in a message header for producer endpoints with
a <strong><code>CamelOlingo2.</code></strong
> prefix.</p><h3 id="Olingo2-MessageBody">Message Body</h3><p>All result
>message bodies utilize objects provided by the underlying <a shape="rect"
>class="external-link"
>href="http://olingo.apache.org/javadoc/odata2/index.html">Apache Olingo 2.0
>API</a> used by the Olingo2Component. Producer endpoints can specify the
>option name for incoming message body in
>the <strong><code>inBody</code></strong> endpoint URI parameter.
>For endpoints that return an array or collection, a consumer endpoint will
>map every element to distinct messages, unless
><strong>consumer.splitResult</strong> is set to
><strong>false</strong>.</p><h3 id="Olingo2-Usecases"><span style="font-size:
>16.0px;line-height: 1.5625;">Use cases</span></h3><div
>class="wiki-content"><p>The following route reads top 5 entries from the
>Manufacturer feed ordered by ascending Name property. </p><div
>class="syntaxhighlighter nogutter java"><p> </p><div
>class="table-wrap"><table class="confluenceTable"><tbody>
<tr><td colspan="1" rowspan="1" class="confluenceTd"><div class="container"
title="Hint: double-click to select code"><div class="line number1 index0
alt2"><code class="java plain">from(</code><code class="java
string">"direct:..."</code><code class="java plain">)</code></div><div
class="line number1 index0 alt2"><code class="java
spaces">    </code><code class="java
plain">.setHeader("CamelOlingo2.$top", "5"</code><code class="java
plain">);</code></div><div class="line number1 index0 alt2"><code class="java
spaces" style="line-height: 1.4285715;">    </code><code
class="java plain" style="line-height: 1.4285715;">.to(</code><code class="java
string" style="line-height: 1.4285715;">"<a shape="rect"
href="box://files/upload/inBody=fileUploadRequest"
rel="nofollow">olingo2://read/Manufacturers?</a>orderBy=Name%20asc"</code><code
class="java plain" style="line-height:
1.4285715;">);</code></div></div></td></tr></tbody></table></div><p> </p>
</div><p>The following route reads Manufacturer entry using the key property
value in incoming <strong>id</strong> header. </p><div
class="syntaxhighlighter nogutter java"><p> </p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><div class="container" title="Hint:
double-click to select code"><div class="line number1 index0 alt2"><code
class="java plain">from(</code><code class="java
string">"direct:..."</code><code class="java plain">)</code></div><div
class="line number1 index0 alt2"><code class="java
spaces">    </code><code class="java
plain">.setHeader("<span>C</span><span>amelOlingo2.keyPredicate</span>",
<span>header("id")</span></code><code class="java plain">)</code></div><div
class="line number2 index1 alt1"><code class="java
spaces">    </code><code class="java
plain">.to(</code><code class="java string">"<a shape="rect"
href="box://files/upload/inBody=
fileUploadRequest"
rel="nofollow">olingo2://read/M</a>anufacturers"</code><code class="java
plain">);</code></div></div></td></tr></tbody></table></div><p>The following
route creates Manufacturer entry using the <strong>java.util.Map<String,
Object></strong> in body message. </p><div class="syntaxhighlighter
nogutter java"><p> </p><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><div class="container" title="Hint: double-click to select
code"><div class="line number1 index0 alt2"><code class="java
plain">from(</code><code class="java string">"direct:..."</code><code
class="java plain">)</code></div><div class="line number1 index0 alt2"><code
class="java spaces" style="line-height:
1.4285715;">    </code><code class="java plain"
style="line-height: 1.4285715;">.to(</code><code class="java string"
style="line-height: 1.4285715;">"<a shape="rect"
href="box://files/upload/inBody=fileUpl
oadRequest" rel="nofollow">olingo2://create/M</a>anufacturers"</code><code
class="java plain" style="line-height:
1.4285715;">);</code></div></div></td></tr></tbody></table></div><p> </p></div></div><p>The
following route polls Manufacturer <a shape="rect" class="external-link"
href="http://olingo.apache.org/doc/tutorials/deltaClient.html">delta
feed</a> every 30 seconds. The bean <strong>blah</strong> updates the
bean <strong>paramsBean</strong> to add an
updated <strong>!deltatoken</strong> property with the value returned in
the <strong>ODataDeltaFeed</strong> result. Since the initial delta token is
not known, the consumer endpoint will produce
an <strong>ODataFeed</strong> value the first time, and
<strong>ODataDeltaFeed</strong> on subsequent polls. </p><div
class="syntaxhighlighter nogutter java"><p> </p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><div class="co
ntainer" title="Hint: double-click to select code"><div class="line number1
index0 alt2"><code class="java plain">from(</code><code class="java string">"<a
shape="rect"
rel="nofollow">olingo2://read/Manufacturers?queryParams=#paramsBean&consumer.timeUnit=SECONDS&consumer.delay=30</a>"</code><code
class="java plain">)</code></div><div class="line number2 index1 alt1"><code
class="java spaces">    </code><code class="java
plain">.to(</code><code class="java string">"<a shape="rect"
class="external-link" href="http://beanblah"
rel="nofollow">bean:blah</a>"</code><code class="java
plain">);</code></div></div></td></tr></tbody></table></div></div></div></div>
</td>
<td valign="top">
<div class="navigation">