This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.4.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-3.4.x by this push:
     new 775af5f  camel-olingo2 improvements (#4098) (#4102)
775af5f is described below

commit 775af5f1c3ada53382199752f42f11fcf80fa62a
Author: Christoph Deppisch <[email protected]>
AuthorDate: Wed Aug 19 17:08:40 2020 +0200

    camel-olingo2 improvements (#4098) (#4102)
    
    * fix(CAMEL-15405): Propagate inline count in camel-olingo2 component
    
    Add result count (coming from system query option $inlinecount) to OData 
entries when using splitResults
    
    * fix(CAMEL-15406): Configure entity provider properties on camel-olingo2
    
    Add uri param configuration settings for read/write entity provider 
properties. The entity provider properties are used for each read/write 
operation and specify the way to serialize OData entries as Json/Xml/Atom data.
    
    * fix(CAMEL-15407): Fix merge operation in camel-olingo2
    
    Merge operation must enable isDataBasedPropertySerialization setting in the 
entity provider write properties in order to not overwrite unspecified fields 
with null values.
    
    (cherry picked from commit 26392dfd37f7bd079a11bb48defb587d827df5b5)
---
 .../camel/component/olingo2/api/Olingo2App.java    |  58 ++++--
 .../component/olingo2/api/impl/Olingo2AppImpl.java | 111 ++++++++----
 .../olingo2/Olingo2ComponentConfigurer.java        |  10 ++
 .../olingo2/Olingo2EndpointConfigurer.java         |  10 ++
 .../apache/camel/component/olingo2/olingo2.json    |   4 +
 .../src/main/docs/olingo2-component.adoc           |   8 +-
 .../camel/component/olingo2/Olingo2Component.java  |   6 +-
 .../component/olingo2/Olingo2Configuration.java    |  73 ++++++--
 .../camel/component/olingo2/Olingo2Consumer.java   |   7 +
 .../olingo2/Olingo2ComponentConsumerTest.java      |  45 ++++-
 .../olingo2/Olingo2ComponentProducerTest.java      |  62 ++++++-
 .../dsl/Olingo2ComponentBuilderFactory.java        |  35 ++++
 .../dsl/Olingo2EndpointBuilderFactory.java         | 198 +++++++++++++++++++++
 .../modules/ROOT/pages/olingo2-component.adoc      |   8 +-
 14 files changed, 557 insertions(+), 78 deletions(-)

diff --git 
a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
 
b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
index d44d46a..07b9c3e 100644
--- 
a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
+++ 
b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/Olingo2App.java
@@ -23,6 +23,8 @@ import java.util.Map;
 import org.apache.camel.component.olingo2.api.batch.Olingo2BatchResponse;
 import org.apache.olingo.odata2.api.commons.HttpStatusCodes;
 import org.apache.olingo.odata2.api.edm.Edm;
+import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
 
 /**
  * Olingo2 Client Api Interface.
@@ -31,28 +33,56 @@ public interface Olingo2App {
 
     /**
      * Sets Service base URI.
-     * 
+     *
      * @param serviceUri
      */
     void setServiceUri(String serviceUri);
 
     /**
      * Returns Service base URI.
-     * 
+     *
      * @return service base URI.
      */
     String getServiceUri();
 
     /**
      * Sets custom Http headers to add to every service request.
-     * 
+     *
      * @param httpHeaders custom Http headers.
      */
     void setHttpHeaders(Map<String, String> httpHeaders);
 
     /**
+     * Specify custom entity provider read properties.
+     *
+     * @param entityProviderReadProperties the custom properties to set.
+     */
+    void setEntityProviderReadProperties(EntityProviderReadProperties 
entityProviderReadProperties);
+
+    /**
+     * Obtains the custom entity provider read properties.
+     *
+     * @return the custom read properties.
+     */
+    EntityProviderReadProperties getEntityProviderReadProperties();
+
+    /**
+     * Specify custom entity provider write properties.
+     *
+     * @param entityProviderWriteProperties the custom properties to set.
+     */
+    void setEntityProviderWriteProperties(EntityProviderWriteProperties 
entityProviderWriteProperties);
+
+    /**
+     * Obtains the custom entity provider write properties.
+     *
+     * @return the custom write properties.
+     */
+    EntityProviderWriteProperties getEntityProviderWriteProperties();
+
+    /**
      * Returns custom Http headers.
-     * 
+     *
      * @return custom Http headers.
      */
     Map<String, String> getHttpHeaders();
@@ -60,14 +90,14 @@ public interface Olingo2App {
     /**
      * Returns content type for service calls. Defaults to
      * <code>application/json;charset=utf-8</code>.
-     * 
+     *
      * @return content type.
      */
     String getContentType();
 
     /**
      * Set default service call content type.
-     * 
+     *
      * @param contentType content type.
      */
     void setContentType(String contentType);
@@ -79,7 +109,7 @@ public interface Olingo2App {
 
     /**
      * Reads an OData resource and invokes callback with appropriate result.
-     * 
+     *
      * @param edm Service Edm, read from calling
      *            <code>read(null, "$metdata", null, responseHandler)</code>
      * @param resourcePath OData Resource path
@@ -94,7 +124,7 @@ public interface Olingo2App {
     /**
      * Reads an OData resource and invokes callback with the unparsed input
      * stream.
-     * 
+     *
      * @param edm Service Edm, read from calling
      *            <code>read(null, "$metdata", null, responseHandler)</code>
      * @param resourcePath OData Resource path
@@ -110,7 +140,7 @@ public interface Olingo2App {
      * Deletes an OData resource and invokes callback with
      * {@link org.apache.olingo.odata2.api.commons.HttpStatusCodes} on success,
      * or with exception on failure.
-     * 
+     *
      * @param resourcePath resource path for Entry
      * @param endpointHttpHeaders HTTP Headers to add/override the component
      *            versions
@@ -122,7 +152,7 @@ public interface Olingo2App {
 
     /**
      * Creates a new OData resource.
-     * 
+     *
      * @param edm service Edm
      * @param resourcePath resource path to create
      * @param endpointHttpHeaders HTTP Headers to add/override the component
@@ -134,7 +164,7 @@ public interface Olingo2App {
 
     /**
      * Updates an OData resource.
-     * 
+     *
      * @param edm service Edm
      * @param resourcePath resource path to update
      * @param endpointHttpHeaders HTTP Headers to add/override the component
@@ -148,7 +178,7 @@ public interface Olingo2App {
 
     /**
      * Patches/merges an OData resource using HTTP PATCH.
-     * 
+     *
      * @param edm service Edm
      * @param resourcePath resource path to update
      * @param endpointHttpHeaders HTTP Headers to add/override the component
@@ -162,7 +192,7 @@ public interface Olingo2App {
 
     /**
      * Patches/merges an OData resource using HTTP MERGE.
-     * 
+     *
      * @param edm service Edm
      * @param resourcePath resource path to update
      * @param endpointHttpHeaders HTTP Headers to add/override the component
@@ -176,7 +206,7 @@ public interface Olingo2App {
 
     /**
      * Executes a batch request.
-     * 
+     *
      * @param edm service Edm
      * @param endpointHttpHeaders HTTP Headers to add/override the component
      *            versions
diff --git 
a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
 
b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
index 8ad7774..301a6a2 100644
--- 
a/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
+++ 
b/components/camel-olingo2/camel-olingo2-api/src/main/java/org/apache/camel/component/olingo2/api/impl/Olingo2AppImpl.java
@@ -128,6 +128,8 @@ public final class Olingo2AppImpl implements Olingo2App {
     private String serviceUri;
     private ContentType contentType;
     private Map<String, String> httpHeaders;
+    private EntityProviderReadProperties entityProviderReadProperties;
+    private EntityProviderWriteProperties entityProviderWriteProperties;
 
     /**
      * Create Olingo2 Application with default HTTP configuration.
@@ -197,6 +199,34 @@ public final class Olingo2AppImpl implements Olingo2App {
     }
 
     @Override
+    public void setEntityProviderReadProperties(EntityProviderReadProperties 
entityProviderReadProperties) {
+        this.entityProviderReadProperties = entityProviderReadProperties;
+    }
+
+    @Override
+    public EntityProviderReadProperties getEntityProviderReadProperties() {
+        if (entityProviderReadProperties == null) {
+            entityProviderReadProperties = 
EntityProviderReadProperties.init().build();
+        }
+
+        return entityProviderReadProperties;
+    }
+
+    @Override
+    public void setEntityProviderWriteProperties(EntityProviderWriteProperties 
entityProviderWriteProperties) {
+        this.entityProviderWriteProperties = entityProviderWriteProperties;
+    }
+
+    @Override
+    public EntityProviderWriteProperties getEntityProviderWriteProperties() {
+        if (entityProviderWriteProperties == null) {
+            entityProviderWriteProperties = 
EntityProviderWriteProperties.serviceRoot(null).build();
+        }
+
+        return entityProviderWriteProperties;
+    }
+
+    @Override
     public String getContentType() {
         return contentType.toString();
     }
@@ -300,7 +330,8 @@ public final class Olingo2AppImpl implements Olingo2App {
                            final Olingo2ResponseHandler<T> responseHandler) {
         final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
 
-        writeContent(edm, new HttpPost(createUri(resourcePath, null)), 
uriInfo, endpointHttpHeaders, data, responseHandler);
+        writeContent(edm, new HttpPost(createUri(resourcePath, null)), uriInfo,
+                endpointHttpHeaders, data, responseHandler, 
getEntityProviderWriteProperties());
     }
 
     @Override
@@ -309,7 +340,9 @@ public final class Olingo2AppImpl implements Olingo2App {
         final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
 
         augmentWithETag(edm, resourcePath, endpointHttpHeaders, new 
HttpPut(createUri(resourcePath, null)),
-            request -> writeContent(edm, (HttpPut)request, uriInfo, 
endpointHttpHeaders, data, responseHandler), responseHandler);
+                request -> writeContent(edm, (HttpPut) request, uriInfo,
+                endpointHttpHeaders, data, responseHandler, 
getEntityProviderWriteProperties()),
+                responseHandler);
     }
 
     @Override
@@ -318,7 +351,9 @@ public final class Olingo2AppImpl implements Olingo2App {
         final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
 
         augmentWithETag(edm, resourcePath, endpointHttpHeaders, new 
HttpPatch(createUri(resourcePath, null)),
-            request -> writeContent(edm, (HttpPatch)request, uriInfo, 
endpointHttpHeaders, data, responseHandler), responseHandler);
+                request -> writeContent(edm, (HttpPatch) request, uriInfo,
+                endpointHttpHeaders, data, responseHandler, 
getEntityProviderWriteProperties()),
+                responseHandler);
     }
 
     @Override
@@ -326,15 +361,23 @@ public final class Olingo2AppImpl implements Olingo2App {
                           final Olingo2ResponseHandler<T> responseHandler) {
         final UriInfoWithType uriInfo = parseUri(edm, resourcePath, null);
 
+        // merge operation must use data based property serialization in order 
to not overwrite
+        // unspecified properties with null values
+        EntityProviderWriteProperties entityProviderWriteProperties =
+                
EntityProviderWriteProperties.fromProperties(getEntityProviderWriteProperties())
+                                             
.isDataBasedPropertySerialization(true).build();
         augmentWithETag(edm, resourcePath, endpointHttpHeaders, new 
HttpMerge(createUri(resourcePath, null)),
-            request -> writeContent(edm, (HttpMerge)request, uriInfo, 
endpointHttpHeaders, data, responseHandler), responseHandler);
+                request -> writeContent(edm, (HttpMerge) request, uriInfo,
+                endpointHttpHeaders, data, responseHandler, 
entityProviderWriteProperties),
+                responseHandler);
     }
 
     @Override
     public void batch(final Edm edm, final Map<String, String> 
endpointHttpHeaders, final Object data, final 
Olingo2ResponseHandler<List<Olingo2BatchResponse>> responseHandler) {
         final UriInfoWithType uriInfo = parseUri(edm, BATCH, null);
 
-        writeContent(edm, new HttpPost(createUri(BATCH, null)), uriInfo, 
endpointHttpHeaders, data, responseHandler);
+        writeContent(edm, new HttpPost(createUri(BATCH, null)), uriInfo,
+                endpointHttpHeaders, data, responseHandler, 
getEntityProviderWriteProperties());
     }
 
     @Override
@@ -481,7 +524,8 @@ public final class Olingo2AppImpl implements Olingo2App {
                 // complex property
                 final List<EdmProperty> complexPropertyPath = 
uriInfo.getPropertyPath();
                 final EdmProperty complexProperty = 
complexPropertyPath.get(complexPropertyPath.size() - 1);
-                response = (T)EntityProvider.readProperty(getContentType(), 
complexProperty, content, EntityProviderReadProperties.init().build());
+                response = (T)EntityProvider.readProperty(getContentType(), 
complexProperty, content,
+                        getEntityProviderReadProperties());
                 break;
 
             case URI4:
@@ -492,7 +536,8 @@ public final class Olingo2AppImpl implements Olingo2App {
                 if (uriInfo.isValue()) {
                     response = 
(T)EntityProvider.readPropertyValue(simpleProperty, content);
                 } else {
-                    response = 
(T)EntityProvider.readProperty(getContentType(), simpleProperty, content, 
EntityProviderReadProperties.init().build());
+                    response = 
(T)EntityProvider.readProperty(getContentType(), simpleProperty, content,
+                            getEntityProviderReadProperties());
                 }
                 break;
 
@@ -509,16 +554,19 @@ public final class Olingo2AppImpl implements Olingo2App {
             case URI6B:
                 if 
(uriInfo.getCustomQueryOptions().containsKey("!deltatoken")) {
                     // ODataDeltaFeed
-                    response = 
(T)EntityProvider.readDeltaFeed(getContentType(), uriInfo.getTargetEntitySet(), 
content, EntityProviderReadProperties.init().build());
+                    response = 
(T)EntityProvider.readDeltaFeed(getContentType(), uriInfo.getTargetEntitySet(), 
content,
+                            getEntityProviderReadProperties());
                 } else {
                     // ODataFeed
-                    response = (T)EntityProvider.readFeed(getContentType(), 
uriInfo.getTargetEntitySet(), content, 
EntityProviderReadProperties.init().build());
+                    response = (T)EntityProvider.readFeed(getContentType(), 
uriInfo.getTargetEntitySet(), content,
+                            getEntityProviderReadProperties());
                 }
                 break;
 
             case URI2:
             case URI6A:
-                response = (T)EntityProvider.readEntry(getContentType(), 
uriInfo.getTargetEntitySet(), content, 
EntityProviderReadProperties.init().build());
+                response = (T)EntityProvider.readEntry(getContentType(), 
uriInfo.getTargetEntitySet(), content,
+                        getEntityProviderReadProperties());
                 break;
 
             // Function Imports
@@ -527,7 +575,8 @@ public final class Olingo2AppImpl implements Olingo2App {
             case URI12:
             case URI13:
             case URI14:
-                response = 
(T)EntityProvider.readFunctionImport(getContentType(), 
uriInfo.getFunctionImport(), content, 
EntityProviderReadProperties.init().build());
+                response = 
(T)EntityProvider.readFunctionImport(getContentType(), 
uriInfo.getFunctionImport(), content,
+                        getEntityProviderReadProperties());
                 break;
 
             default:
@@ -538,11 +587,12 @@ public final class Olingo2AppImpl implements Olingo2App {
     }
 
     private <T> void writeContent(final Edm edm, final 
HttpEntityEnclosingRequestBase httpEntityRequest, final UriInfoWithType uriInfo,
-                                  final Map<String, String> 
endpointHttpHeaders, final Object content, final Olingo2ResponseHandler<T> 
responseHandler) {
+            final Map<String, String> endpointHttpHeaders, final Object 
content,
+            final Olingo2ResponseHandler<T> responseHandler, 
EntityProviderWriteProperties entityProviderWriteProperties) {
 
         try {
             // process resource by UriType
-            final ODataResponse response = writeContent(edm, uriInfo, content);
+            final ODataResponse response = writeContent(edm, uriInfo, content, 
entityProviderWriteProperties);
 
             // copy all response headers
             for (String header : response.getHeaderNames()) {
@@ -623,8 +673,8 @@ public final class Olingo2AppImpl implements Olingo2App {
                                     
responseHandler.onResponse((T)EntityProvider.readPropertyValue(simpleProperty, 
result.getEntity().getContent()),
                                             
headersToMap(result.getAllHeaders()));
                                 } else {
-                                    
responseHandler.onResponse((T)EntityProvider.readProperty(getContentType(), 
simpleProperty, result.getEntity().getContent(),
-                                            
EntityProviderReadProperties.init().build()),
+                                    
responseHandler.onResponse((T)EntityProvider.readProperty(getContentType(), 
simpleProperty,
+                                                    
result.getEntity().getContent(), getEntityProviderReadProperties()),
                                             
headersToMap(result.getAllHeaders()));
                                 }
                                 break;
@@ -634,8 +684,8 @@ public final class Olingo2AppImpl implements Olingo2App {
                                 // get the response content as Map<String, 
Object>
                                 final List<EdmProperty> complexPropertyPath = 
uriInfo.getPropertyPath();
                                 final EdmProperty complexProperty = 
complexPropertyPath.get(complexPropertyPath.size() - 1);
-                                
responseHandler.onResponse((T)EntityProvider.readProperty(getContentType(), 
complexProperty, result.getEntity().getContent(),
-                                        
EntityProviderReadProperties.init().build()),
+                                
responseHandler.onResponse((T)EntityProvider.readProperty(getContentType(), 
complexProperty,
+                                                
result.getEntity().getContent(), getEntityProviderReadProperties()),
                                         headersToMap(result.getAllHeaders()));
                                 break;
 
@@ -662,8 +712,8 @@ public final class Olingo2AppImpl implements Olingo2App {
                             case URI6B:
                                 // Entity
                                 // get the response content as an ODataEntry 
object
-                                
responseHandler.onResponse((T)EntityProvider.readEntry(response.getContentHeader(),
 uriInfo.getTargetEntitySet(), result.getEntity().getContent(),
-                                        
EntityProviderReadProperties.init().build()),
+                                
responseHandler.onResponse((T)EntityProvider.readEntry(response.getContentHeader(),
 uriInfo.getTargetEntitySet(),
+                                                
result.getEntity().getContent(), getEntityProviderReadProperties()),
                                         headersToMap(result.getAllHeaders()));
                                 break;
 
@@ -681,7 +731,8 @@ public final class Olingo2AppImpl implements Olingo2App {
         }
     }
 
-    private ODataResponse writeContent(Edm edm, UriInfoWithType uriInfo, 
Object content)
+    private ODataResponse writeContent(Edm edm, UriInfoWithType uriInfo,
+                                       Object content, 
EntityProviderWriteProperties entityProviderWriteProperties)
             throws ODataApplicationException, EdmException, 
EntityProviderException, URISyntaxException, IOException {
 
         String responseContentType = getContentType();
@@ -712,7 +763,8 @@ public final class Olingo2AppImpl implements Olingo2App {
             case URI7A:
                 // $links with 0..1 cardinality property
                 final EdmEntitySet targetLinkEntitySet = 
uriInfo.getTargetEntitySet();
-                EntityProviderWriteProperties linkProperties = 
EntityProviderWriteProperties.serviceRoot(new URI(serviceUri + 
SEPARATOR)).build();
+                EntityProviderWriteProperties linkProperties = 
EntityProviderWriteProperties.fromProperties(entityProviderWriteProperties)
+                                                       .serviceRoot(new 
URI(serviceUri + SEPARATOR)).build();
                 @SuppressWarnings("unchecked")
                 final Map<String, Object> linkMap = (Map<String, 
Object>)content;
                 response = EntityProvider.writeLink(responseContentType, 
targetLinkEntitySet, linkMap, linkProperties);
@@ -721,7 +773,8 @@ public final class Olingo2AppImpl implements Olingo2App {
             case URI7B:
                 // $links with * cardinality property
                 final EdmEntitySet targetLinksEntitySet = 
uriInfo.getTargetEntitySet();
-                EntityProviderWriteProperties linksProperties = 
EntityProviderWriteProperties.serviceRoot(new URI(serviceUri + 
SEPARATOR)).build();
+                EntityProviderWriteProperties linksProperties = 
EntityProviderWriteProperties.fromProperties(entityProviderWriteProperties)
+                                                       .serviceRoot(new 
URI(serviceUri + SEPARATOR)).build();
                 @SuppressWarnings("unchecked")
                 final List<Map<String, Object>> linksMap = (List<Map<String, 
Object>>)content;
                 response = EntityProvider.writeLinks(responseContentType, 
targetLinksEntitySet, linksMap, linksProperties);
@@ -733,7 +786,8 @@ public final class Olingo2AppImpl implements Olingo2App {
             case URI6B:
                 // Entity
                 final EdmEntitySet targetEntitySet = 
uriInfo.getTargetEntitySet();
-                EntityProviderWriteProperties properties = 
EntityProviderWriteProperties.serviceRoot(new URI(serviceUri + 
SEPARATOR)).build();
+                EntityProviderWriteProperties properties = 
EntityProviderWriteProperties.fromProperties(entityProviderWriteProperties)
+                                                       .serviceRoot(new 
URI(serviceUri + SEPARATOR)).build();
                 @SuppressWarnings("unchecked")
                 final Map<String, Object> objectMap = (Map<String, 
Object>)content;
                 response = EntityProvider.writeEntry(responseContentType, 
targetEntitySet, objectMap, properties);
@@ -825,7 +879,8 @@ public final class Olingo2AppImpl implements Olingo2App {
 
         if (batchRequest.getBody() != null && 
!Operation.DELETE.equals(batchRequest.getOperation())) {
 
-            final ODataResponse response = writeContent(edm, uriInfo, 
batchRequest.getBody());
+            final ODataResponse response = writeContent(edm, uriInfo, 
batchRequest.getBody(),
+                    getEntityProviderWriteProperties());
             // copy response headers
             for (String header : response.getHeaderNames()) {
                 headers.put(header, response.getHeader(header));
@@ -952,9 +1007,7 @@ public final class Olingo2AppImpl implements Olingo2App {
             }
 
             AbstractFutureCallback.checkStatus(httpResponse);
-        } catch (ODataApplicationException e) {
-            return new Olingo2BatchResponse(statusCode, statusInfo, 
response.getContentId(), response.getHeaders(), e);
-        } catch (UnsupportedEncodingException e) {
+        } catch (ODataApplicationException | UnsupportedEncodingException e) {
             return new Olingo2BatchResponse(statusCode, statusInfo, 
response.getContentId(), response.getHeaders(), e);
         }
 
@@ -1066,9 +1119,7 @@ public final class Olingo2AppImpl implements Olingo2App {
                 }
             }
             result = new UriInfoWithType(UriParser.parse(edm, pathSegments, 
queryParams), resourcePath);
-        } catch (URISyntaxException e) {
-            throw new IllegalArgumentException("resourcePath: " + 
e.getMessage(), e);
-        } catch (ODataException e) {
+        } catch (URISyntaxException | ODataException e) {
             throw new IllegalArgumentException("resourcePath: " + 
e.getMessage(), e);
         }
 
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2ComponentConfigurer.java
 
b/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2ComponentConfigurer.java
index 9fe3d6e..c3469aa 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2ComponentConfigurer.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2ComponentConfigurer.java
@@ -35,6 +35,10 @@ public class Olingo2ComponentConfigurer extends 
PropertyConfigurerSupport implem
         case "connectTimeout": 
getOrCreateConfiguration(target).setConnectTimeout(property(camelContext, 
int.class, value)); return true;
         case "contenttype":
         case "contentType": 
getOrCreateConfiguration(target).setContentType(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "entityproviderreadproperties":
+        case "entityProviderReadProperties": 
getOrCreateConfiguration(target).setEntityProviderReadProperties(property(camelContext,
 org.apache.olingo.odata2.api.ep.EntityProviderReadProperties.class, value)); 
return true;
+        case "entityproviderwriteproperties":
+        case "entityProviderWriteProperties": 
getOrCreateConfiguration(target).setEntityProviderWriteProperties(property(camelContext,
 org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.class, value)); 
return true;
         case "filteralreadyseen":
         case "filterAlreadySeen": 
getOrCreateConfiguration(target).setFilterAlreadySeen(property(camelContext, 
boolean.class, value)); return true;
         case "httpasyncclientbuilder":
@@ -68,6 +72,8 @@ public class Olingo2ComponentConfigurer extends 
PropertyConfigurerSupport implem
         answer.put("configuration", 
org.apache.camel.component.olingo2.Olingo2Configuration.class);
         answer.put("connectTimeout", int.class);
         answer.put("contentType", java.lang.String.class);
+        answer.put("entityProviderReadProperties", 
org.apache.olingo.odata2.api.ep.EntityProviderReadProperties.class);
+        answer.put("entityProviderWriteProperties", 
org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.class);
         answer.put("filterAlreadySeen", boolean.class);
         answer.put("httpAsyncClientBuilder", 
org.apache.http.impl.nio.client.HttpAsyncClientBuilder.class);
         answer.put("httpClientBuilder", 
org.apache.http.impl.client.HttpClientBuilder.class);
@@ -95,6 +101,10 @@ public class Olingo2ComponentConfigurer extends 
PropertyConfigurerSupport implem
         case "connectTimeout": return 
getOrCreateConfiguration(target).getConnectTimeout();
         case "contenttype":
         case "contentType": return 
getOrCreateConfiguration(target).getContentType();
+        case "entityproviderreadproperties":
+        case "entityProviderReadProperties": return 
getOrCreateConfiguration(target).getEntityProviderReadProperties();
+        case "entityproviderwriteproperties":
+        case "entityProviderWriteProperties": return 
getOrCreateConfiguration(target).getEntityProviderWriteProperties();
         case "filteralreadyseen":
         case "filterAlreadySeen": return 
getOrCreateConfiguration(target).isFilterAlreadySeen();
         case "httpasyncclientbuilder":
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
 
b/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
index dcde97e..25c616e 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/generated/java/org/apache/camel/component/olingo2/Olingo2EndpointConfigurer.java
@@ -34,6 +34,10 @@ public class Olingo2EndpointConfigurer extends 
PropertyConfigurerSupport impleme
         case "contenttype":
         case "contentType": 
target.getConfiguration().setContentType(property(camelContext, 
java.lang.String.class, value)); return true;
         case "delay": target.setDelay(property(camelContext, long.class, 
value)); return true;
+        case "entityproviderreadproperties":
+        case "entityProviderReadProperties": 
target.getConfiguration().setEntityProviderReadProperties(property(camelContext,
 org.apache.olingo.odata2.api.ep.EntityProviderReadProperties.class, value)); 
return true;
+        case "entityproviderwriteproperties":
+        case "entityProviderWriteProperties": 
target.getConfiguration().setEntityProviderWriteProperties(property(camelContext,
 org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.class, value)); 
return true;
         case "exceptionhandler":
         case "exceptionHandler": 
target.setExceptionHandler(property(camelContext, 
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
         case "exchangepattern":
@@ -97,6 +101,8 @@ public class Olingo2EndpointConfigurer extends 
PropertyConfigurerSupport impleme
         answer.put("connectTimeout", int.class);
         answer.put("contentType", java.lang.String.class);
         answer.put("delay", long.class);
+        answer.put("entityProviderReadProperties", 
org.apache.olingo.odata2.api.ep.EntityProviderReadProperties.class);
+        answer.put("entityProviderWriteProperties", 
org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties.class);
         answer.put("exceptionHandler", 
org.apache.camel.spi.ExceptionHandler.class);
         answer.put("exchangePattern", org.apache.camel.ExchangePattern.class);
         answer.put("filterAlreadySeen", boolean.class);
@@ -145,6 +151,10 @@ public class Olingo2EndpointConfigurer extends 
PropertyConfigurerSupport impleme
         case "contenttype":
         case "contentType": return target.getConfiguration().getContentType();
         case "delay": return target.getDelay();
+        case "entityproviderreadproperties":
+        case "entityProviderReadProperties": return 
target.getConfiguration().getEntityProviderReadProperties();
+        case "entityproviderwriteproperties":
+        case "entityProviderWriteProperties": return 
target.getConfiguration().getEntityProviderWriteProperties();
         case "exceptionhandler":
         case "exceptionHandler": return target.getExceptionHandler();
         case "exchangepattern":
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
 
b/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
index 78dc5bb..042ddf1 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/generated/resources/org/apache/camel/component/olingo2/olingo2.json
@@ -24,6 +24,8 @@
     "configuration": { "kind": "property", "displayName": "Configuration", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "org.apache.camel.component.olingo2.Olingo2Configuration", 
"deprecated": false, "secret": false, "description": "To use the shared 
configuration" },
     "connectTimeout": { "kind": "property", "displayName": "Connect Timeout", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "secret": false, "defaultValue": 
"30000", "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "HTTP connection creation 
timeout in milliseconds, defaults to 30,000 (30 seconds)" },
     "contentType": { "kind": "property", "displayName": "Content Type", 
"group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": false, 
"defaultValue": "application\/json;charset=utf-8", "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Content-Type header 
value can be used to specify JSON or XML message format, defaults to appli [...]
+    "entityProviderReadProperties": { "kind": "property", "displayName": 
"Entity Provider Read Properties", "group": "common", "label": "", "required": 
false, "type": "object", "javaType": 
"org.apache.olingo.odata2.api.ep.EntityProviderReadProperties", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom entity provider 
read properties applied to all read operat [...]
+    "entityProviderWriteProperties": { "kind": "property", "displayName": 
"Entity Provider Write Properties", "group": "common", "label": "", "required": 
false, "type": "object", "javaType": 
"org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom entity provider 
write properties applied to create, upd [...]
     "filterAlreadySeen": { "kind": "property", "displayName": "Filter Already 
Seen", "group": "common", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Set this to true to 
filter out results that have already been communicated by this component." },
     "httpHeaders": { "kind": "property", "displayName": "Http Headers", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.String>", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom HTTP headers to 
inject into every request, this could include OAuth tokens, etc." },
     "proxy": { "kind": "property", "displayName": "Proxy", "group": "common", 
"label": "", "required": false, "type": "object", "javaType": 
"org.apache.http.HttpHost", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "HTTP proxy server 
configuration" },
@@ -43,6 +45,8 @@
     "methodName": { "kind": "path", "displayName": "Method Name", "group": 
"common", "label": "", "required": true, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "deprecationNote": "", "secret": 
false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "What sub operation to 
use for the selected operation" },
     "connectTimeout": { "kind": "parameter", "displayName": "Connect Timeout", 
"group": "common", "label": "", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "secret": false, "defaultValue": 
"30000", "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "HTTP connection creation 
timeout in milliseconds, defaults to 30,000 (30 seconds)" },
     "contentType": { "kind": "parameter", "displayName": "Content Type", 
"group": "common", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": false, 
"defaultValue": "application\/json;charset=utf-8", "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Content-Type header 
value can be used to specify JSON or XML message format, defaults to appl [...]
+    "entityProviderReadProperties": { "kind": "parameter", "displayName": 
"Entity Provider Read Properties", "group": "common", "label": "", "required": 
false, "type": "object", "javaType": 
"org.apache.olingo.odata2.api.ep.EntityProviderReadProperties", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom entity provider 
read properties applied to all read opera [...]
+    "entityProviderWriteProperties": { "kind": "parameter", "displayName": 
"Entity Provider Write Properties", "group": "common", "label": "", "required": 
false, "type": "object", "javaType": 
"org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom entity provider 
write properties applied to create, up [...]
     "filterAlreadySeen": { "kind": "parameter", "displayName": "Filter Already 
Seen", "group": "common", "label": "", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Set this to true to 
filter out results that have already been communicated by this component." },
     "httpHeaders": { "kind": "parameter", "displayName": "Http Headers", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "java.util.Map<java.lang.String, java.lang.String>", "deprecated": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.olingo2.Olingo2Configuration", 
"configurationField": "configuration", "description": "Custom HTTP headers to 
inject into every request, this could include OAuth tokens, etc." },
     "inBody": { "kind": "parameter", "displayName": "In Body", "group": 
"common", "label": "", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "description": "Sets 
the name of a parameter to be passed in the exchange In Body" },
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
 
b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
index c81dad4..bd2e800 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/main/docs/olingo2-component.adoc
@@ -52,7 +52,7 @@ for this component:
 
 
 // component options: START
-The Olingo2 component supports 16 options, which are listed below.
+The Olingo2 component supports 18 options, which are listed below.
 
 
 
@@ -62,6 +62,8 @@ The Olingo2 component supports 16 options, which are listed 
below.
 | *configuration* (common) | To use the shared configuration |  | 
Olingo2Configuration
 | *connectTimeout* (common) | HTTP connection creation timeout in 
milliseconds, defaults to 30,000 (30 seconds) | 30000 | int
 | *contentType* (common) | Content-Type header value can be used to specify 
JSON or XML message format, defaults to application/json;charset=utf-8 | 
application/json;charset=utf-8 | String
+| *entityProviderReadProperties* (common) | Custom entity provider read 
properties applied to all read operations. |  | EntityProviderReadProperties
+| *entityProviderWriteProperties* (common) | Custom entity provider write 
properties applied to create, update, patch, batch and merge operations. For 
instance users can skip the Json object wrapper or enable content only mode 
when sending request data. A service URI set in the properties will always be 
overwritten by the serviceUri configuration parameter. Please consider to using 
the serviceUri configuration parameter instead of setting the respective write 
property here. |  | EntityPr [...]
 | *filterAlreadySeen* (common) | Set this to true to filter out results that 
have already been communicated by this component. | false | boolean
 | *httpHeaders* (common) | Custom HTTP headers to inject into every request, 
this could include OAuth tokens, etc. |  | Map
 | *proxy* (common) | HTTP proxy server configuration |  | HttpHost
@@ -103,7 +105,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (34 parameters):
+=== Query Parameters (36 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -111,6 +113,8 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *connectTimeout* (common) | HTTP connection creation timeout in 
milliseconds, defaults to 30,000 (30 seconds) | 30000 | int
 | *contentType* (common) | Content-Type header value can be used to specify 
JSON or XML message format, defaults to application/json;charset=utf-8 | 
application/json;charset=utf-8 | String
+| *entityProviderReadProperties* (common) | Custom entity provider read 
properties applied to all read operations. |  | EntityProviderReadProperties
+| *entityProviderWriteProperties* (common) | Custom entity provider write 
properties applied to create, update, patch, batch and merge operations. For 
instance users can skip the Json object wrapper or enable content only mode 
when sending request data. A service URI set in the properties will always be 
overwritten by the serviceUri configuration parameter. Please consider to using 
the serviceUri configuration parameter instead of setting the respective write 
property here. |  | EntityPr [...]
 | *filterAlreadySeen* (common) | Set this to true to filter out results that 
have already been communicated by this component. | false | boolean
 | *httpHeaders* (common) | Custom HTTP headers to inject into every request, 
this could include OAuth tokens, etc. |  | Map
 | *inBody* (common) | Sets the name of a parameter to be passed in the 
exchange In Body |  | String
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
index a7f8995..af58c18 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Component.java
@@ -169,9 +169,7 @@ public class Olingo2Component extends 
AbstractApiComponent<Olingo2ApiName, Oling
             }
             try {
                 
asyncClientBuilder.setSSLContext(sslContextParameters.createSSLContext(getCamelContext()));
-            } catch (GeneralSecurityException e) {
-                throw RuntimeCamelException.wrapRuntimeCamelException(e);
-            } catch (IOException e) {
+            } catch (GeneralSecurityException | IOException e) {
                 throw RuntimeCamelException.wrapRuntimeCamelException(e);
             }
 
@@ -187,6 +185,8 @@ public class Olingo2Component extends 
AbstractApiComponent<Olingo2ApiName, Oling
         apiProxy = new Olingo2AppWrapper(olingo2App);
         
apiProxy.getOlingo2App().setContentType(configuration.getContentType());
         
apiProxy.getOlingo2App().setHttpHeaders(configuration.getHttpHeaders());
+        
apiProxy.getOlingo2App().setEntityProviderReadProperties(configuration.getEntityProviderReadProperties());
+        
apiProxy.getOlingo2App().setEntityProviderWriteProperties(configuration.getEntityProviderWriteProperties());
 
         return apiProxy;
     }
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
index 15940a3..d8d290c 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Configuration.java
@@ -29,6 +29,8 @@ import org.apache.http.HttpHost;
 import org.apache.http.entity.ContentType;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
+import org.apache.olingo.odata2.api.ep.EntityProviderReadProperties;
+import org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties;
 
 /**
  * Component configuration for Olingo2 component.
@@ -51,6 +53,10 @@ public class Olingo2Configuration {
     private String contentType = DEFAULT_CONTENT_TYPE;
     @UriParam
     private Map<String, String> httpHeaders;
+    @UriParam
+    private EntityProviderReadProperties entityProviderReadProperties;
+    @UriParam
+    private EntityProviderWriteProperties entityProviderWriteProperties;
     @UriParam(defaultValue = "" + DEFAULT_TIMEOUT)
     private int connectTimeout = DEFAULT_TIMEOUT;
     @UriParam(defaultValue = "" + DEFAULT_TIMEOUT)
@@ -126,6 +132,31 @@ public class Olingo2Configuration {
         this.httpHeaders = httpHeaders;
     }
 
+    public EntityProviderReadProperties getEntityProviderReadProperties() {
+        return entityProviderReadProperties;
+    }
+
+    /**
+     * Custom entity provider read properties applied to all read operations.
+     */
+    public void setEntityProviderReadProperties(EntityProviderReadProperties 
entityProviderReadProperties) {
+        this.entityProviderReadProperties = entityProviderReadProperties;
+    }
+
+    public EntityProviderWriteProperties getEntityProviderWriteProperties() {
+        return entityProviderWriteProperties;
+    }
+
+    /**
+     * Custom entity provider write properties applied to create, update, 
patch, batch and merge operations. For
+     * instance users can skip the Json object wrapper or enable content only 
mode when sending request data. A service
+     * URI set in the properties will always be overwritten by the serviceUri 
configuration parameter. Please consider
+     * to using the serviceUri configuration parameter instead of setting the 
respective write property here.
+     */
+    public void setEntityProviderWriteProperties(EntityProviderWriteProperties 
entityProviderWriteProperties) {
+        this.entityProviderWriteProperties = entityProviderWriteProperties;
+    }
+
     public int getConnectTimeout() {
         return connectTimeout;
     }
@@ -209,7 +240,7 @@ public class Olingo2Configuration {
     /**
      * Set this to true to filter out results that have already been
      * communicated by this component.
-     * 
+     *
      * @param filterAlreadySeen
      */
     public void setFilterAlreadySeen(boolean filterAlreadySeen) {
@@ -230,27 +261,39 @@ public class Olingo2Configuration {
 
     @Override
     public int hashCode() {
-        return new 
HashCodeBuilder().append(serviceUri).append(contentType).append(httpHeaders).append(connectTimeout).append(socketTimeout).append(proxy)
-            
.append(sslContextParameters).append(httpAsyncClientBuilder).append(httpClientBuilder).hashCode();
+        return new HashCodeBuilder().append(serviceUri).append(contentType)
+                .append(httpHeaders).append(connectTimeout)
+                .append(socketTimeout).append(proxy)
+                
.append(entityProviderReadProperties).append(entityProviderWriteProperties)
+                .append(filterAlreadySeen).append(splitResult)
+                
.append(sslContextParameters).append(httpAsyncClientBuilder).append(httpClientBuilder).hashCode();
     }
 
     @Override
     public boolean equals(Object obj) {
         if (obj instanceof Olingo2Configuration) {
-            Olingo2Configuration other = (Olingo2Configuration)obj;
-            return serviceUri == null
-                ? other.serviceUri == null
-                : serviceUri.equals(other.serviceUri) && contentType == null
-                    ? other.contentType == null
+            Olingo2Configuration other = (Olingo2Configuration) obj;
+            return connectTimeout == other.connectTimeout && filterAlreadySeen 
== other.filterAlreadySeen
+                    && splitResult == other.splitResult && socketTimeout == 
other.socketTimeout && serviceUri == null
+                    ? other.serviceUri == null
+                    : serviceUri.equals(other.serviceUri) && contentType == 
null
+                            ? other.contentType == null
                     : contentType.equals(other.contentType) && httpHeaders == 
null
-                        ? other.httpHeaders == null
-                        : httpHeaders.equals(other.httpHeaders) && 
connectTimeout == other.connectTimeout && socketTimeout == other.socketTimeout 
&& proxy == null
+                            ? other.httpHeaders == null
+                    : httpHeaders.equals(other.httpHeaders) && 
entityProviderReadProperties == null
+                            ? other.entityProviderReadProperties == null
+                    : 
entityProviderReadProperties.equals(other.entityProviderReadProperties) && 
proxy == null
                             ? other.proxy == null
-                            : proxy.equals(other.proxy) && 
sslContextParameters == null
-                                ? other.sslContextParameters == null
-                                : 
sslContextParameters.equals(other.sslContextParameters) && 
httpAsyncClientBuilder == null
-                                    ? other.httpAsyncClientBuilder == null : 
httpAsyncClientBuilder.equals(other.httpAsyncClientBuilder) && 
httpClientBuilder == null
-                                        ? other.httpClientBuilder == null : 
httpClientBuilder.equals(other.httpClientBuilder);
+                    : proxy.equals(other.proxy) && 
entityProviderWriteProperties == null
+                            ? other.entityProviderWriteProperties == null
+                    : 
entityProviderWriteProperties.equals(other.entityProviderWriteProperties)
+                            && sslContextParameters == null
+                            ? other.sslContextParameters == null
+                    : sslContextParameters.equals(other.sslContextParameters) 
&& httpAsyncClientBuilder == null
+                            ? other.httpAsyncClientBuilder == null
+                    : 
httpAsyncClientBuilder.equals(other.httpAsyncClientBuilder) && 
httpClientBuilder == null
+                            ? other.httpClientBuilder == null
+                    : httpClientBuilder.equals(other.httpClientBuilder);
         }
         return false;
     }
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
index 4077ff8..285369f 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/main/java/org/apache/camel/component/olingo2/Olingo2Consumer.java
@@ -145,6 +145,13 @@ public class Olingo2Consumer extends 
AbstractApiConsumer<Olingo2ApiName, Olingo2
         if (result instanceof ODataFeed) {
             ODataFeed odataFeed = (ODataFeed)result;
             for (ODataEntry entry : odataFeed.getEntries()) {
+                if (odataFeed.getFeedMetadata().getInlineCount() != null) {
+                    //
+                    // If $inlinecount was set to true in the query then
+                    // need to include the count in the entities
+                    //
+                    entry.getProperties().put("ResultCount", 
odataFeed.getFeedMetadata().getInlineCount());
+                }
                 splitResult.add(entry);
             }
         } else if (result instanceof List) {
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentConsumerTest.java
 
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentConsumerTest.java
index e24df0d..af32b9d 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentConsumerTest.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentConsumerTest.java
@@ -29,10 +29,9 @@ import org.junit.jupiter.api.Test;
 
 import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * Test class for {@link org.apache.camel.component.olingo2.api.Olingo2App}
@@ -261,7 +260,7 @@ public class Olingo2ComponentConsumerTest extends 
AbstractOlingo2TestSupport {
     }
 
     /**
-     * Read value of the People object and split the results into individual
+     * Read value of the Address object and split the results into individual
      * messages
      */
     @SuppressWarnings("unchecked")
@@ -330,4 +329,44 @@ public class Olingo2ComponentConsumerTest extends 
AbstractOlingo2TestSupport {
             assertTrue(name.toString().contains("Powered Racing"));
         }
     }
+
+    /**
+     * Read entity set of the Manufacturers object and split the results into 
individual messages. Auto add inline count
+     * or results to entities.
+     */
+    @Test
+    public void testConsumerReadSplitResultsWithInlineCount() throws Exception 
{
+        int expectedMsgCount = 2;
+        MockEndpoint mockEndpoint = 
getMockEndpoint("mock:consumer-splitresult-with-count");
+        mockEndpoint.expectedMinimumMessageCount(expectedMsgCount);
+
+        RouteBuilder builder = new RouteBuilder() {
+            public void configure() {
+                
from("olingo2://read/Manufacturers/?$inlinecount=allpages&splitResult=true")
+                        .to("mock:consumer-splitresult-with-count");
+            }
+        };
+
+        addRouteAndStartContext(builder);
+
+        mockEndpoint.assertIsSatisfied();
+
+        //
+        // 2 individual messages in the exchange,
+        // each containing a different entity.
+        //
+        for (int i = 0; i < expectedMsgCount; ++i) {
+            Object body = mockEndpoint.getExchanges().get(i).getIn().getBody();
+            assertTrue(body instanceof ODataEntry);
+            ODataEntry entry = (ODataEntry) body;
+            Map<String, Object> properties = entry.getProperties();
+            assertNotNull(properties);
+
+            Object name = properties.get("Name");
+            assertNotNull(name);
+            assertTrue(name.toString().contains("Powered Racing"));
+            Object resultCount = properties.get("ResultCount");
+            assertTrue(((Integer) resultCount) > 0);
+        }
+    }
 }
diff --git 
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentProducerTest.java
 
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentProducerTest.java
index 04b64aa..32b5781 100644
--- 
a/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentProducerTest.java
+++ 
b/components/camel-olingo2/camel-olingo2-component/src/test/java/org/apache/camel/component/olingo2/Olingo2ComponentProducerTest.java
@@ -46,9 +46,8 @@ import org.slf4j.LoggerFactory;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Test class for {@link org.apache.camel.component.olingo2.api.Olingo2App}
@@ -70,7 +69,10 @@ public class Olingo2ComponentProducerTest extends 
AbstractOlingo2TestSupport {
     private static final String ADDRESS = "Address";
     private static final String TEST_RESOURCE = "$1";
     private static final String TEST_RESOURCE_ADDRESS = TEST_RESOURCE + 
"/Address";
-    private static final String TEST_CREATE_MANUFACTURER = 
"DefaultContainer.Manufacturers('123')";
+    private static final String TEST_MERGE_MANUFACTURER_ID = "124";
+    private static final String TEST_CREATE_MANUFACTURER_ID = "123";
+    private static final String TEST_CREATE_MANUFACTURER
+            = String.format("DefaultContainer.Manufacturers('%s')", 
TEST_CREATE_MANUFACTURER_ID);
     private static final String TEST_SERVICE_URL = "http://localhost:"; + PORT 
+ "/MyFormula.svc";
 
     private static Olingo2SampleServer server;
@@ -138,7 +140,7 @@ public class Olingo2ComponentProducerTest extends 
AbstractOlingo2TestSupport {
         final ODataEntry manufacturer = requestBody("direct:CREATE", data);
         assertNotNull(manufacturer, "Created Manufacturer");
         final Map<String, Object> properties = manufacturer.getProperties();
-        assertEquals("123", properties.get(ID_PROPERTY), "Created Manufacturer 
Id");
+        assertEquals(TEST_CREATE_MANUFACTURER_ID, properties.get(ID_PROPERTY), 
"Created Manufacturer Id");
         LOG.info("Created Manufacturer: {}", properties);
 
         // update
@@ -151,6 +153,15 @@ public class Olingo2ComponentProducerTest extends 
AbstractOlingo2TestSupport {
         assertEquals(HttpStatusCodes.NO_CONTENT.getStatusCode(), 
status.getStatusCode(), "Update status");
         LOG.info("Update status: {}", status);
 
+        final Map<String, Object> headers = new HashMap<>();
+        headers.put(Olingo2Constants.PROPERTY_PREFIX + "keyPredicate", 
String.format("'%s'", TEST_CREATE_MANUFACTURER_ID));
+        final ODataEntry updatedManufacturer = 
requestBodyAndHeaders("direct:READENTRY", null, headers);
+        assertNotNull(updatedManufacturer);
+        final Map<String, Object> updatedProperties = 
updatedManufacturer.getProperties();
+        assertEquals(TEST_CREATE_MANUFACTURER_ID, 
updatedProperties.get(ID_PROPERTY), "Manufacturer Id");
+        assertEquals("MyCarManufacturer Renamed", 
updatedProperties.get("Name"), "Manufacturer Name");
+        LOG.info("Updated Manufacturer: {}", updatedProperties);
+
         // delete
         status = requestBody("direct:DELETE", null);
         assertNotNull(status, "Delete status");
@@ -158,9 +169,40 @@ public class Olingo2ComponentProducerTest extends 
AbstractOlingo2TestSupport {
         LOG.info("Delete status: {}", status);
     }
 
+    @Test
+    public void testCreateMerge() throws Exception {
+        final Map<String, Object> data = getEntityData();
+        data.put(ID_PROPERTY, TEST_MERGE_MANUFACTURER_ID);
+
+        final ODataEntry manufacturer = requestBody("direct:CREATE", data);
+        assertNotNull(manufacturer, "Created Manufacturer");
+        final Map<String, Object> properties = manufacturer.getProperties();
+        assertEquals(TEST_MERGE_MANUFACTURER_ID, properties.get(ID_PROPERTY), 
"Created Manufacturer Id");
+        LOG.info("Created Manufacturer: {}", properties);
+
+        final Map<String, Object> propertiesToUpdate = new HashMap<>();
+        propertiesToUpdate.put(ID_PROPERTY, TEST_MERGE_MANUFACTURER_ID);
+        propertiesToUpdate.put("Name", "MyCarManufacturer Updated");
+
+        HttpStatusCodes status = requestBody("direct:MERGE", 
propertiesToUpdate);
+        assertNotNull(status, "Merge status");
+        assertEquals(HttpStatusCodes.NO_CONTENT.getStatusCode(), 
status.getStatusCode(), "Merge status");
+        LOG.info("Merge status: {}", status);
+
+        final Map<String, Object> headers = new HashMap<>();
+        headers.put(Olingo2Constants.PROPERTY_PREFIX + "keyPredicate", 
String.format("'%s'", TEST_MERGE_MANUFACTURER_ID));
+        final ODataEntry mergedManufacturer = 
requestBodyAndHeaders("direct:READENTRY", null, headers);
+        assertNotNull(mergedManufacturer);
+        final Map<String, Object> mergedProperties = 
mergedManufacturer.getProperties();
+        assertEquals(TEST_MERGE_MANUFACTURER_ID, 
mergedProperties.get(ID_PROPERTY), "Manufacturer Id");
+        assertEquals("MyCarManufacturer Updated", 
mergedProperties.get("Name"), "Manufacturer Name");
+        assertNotNull(mergedProperties.get("Address"), "Manufacturer Address");
+        LOG.info("Merged Manufacturer: {}", mergedProperties);
+    }
+
     private Map<String, Object> getEntityData() {
         final Map<String, Object> data = new HashMap<>();
-        data.put("Id", "123");
+        data.put(ID_PROPERTY, TEST_CREATE_MANUFACTURER_ID);
         data.put("Name", "MyCarManufacturer");
         data.put("Founded", new Date());
         Map<String, Object> address = new HashMap<>();
@@ -350,14 +392,16 @@ public class Olingo2ComponentProducerTest extends 
AbstractOlingo2TestSupport {
                 from("direct:CREATE").to("olingo2://create/Manufacturers");
 
                 // test route for update
-                
from("direct:UPDATE").to("olingo2://update/Manufacturers('123')");
+                
from("direct:UPDATE").to(String.format("olingo2://update/Manufacturers('%s')", 
TEST_CREATE_MANUFACTURER_ID));
 
                 // test route for delete
-                
from("direct:DELETE").to("olingo2://delete/Manufacturers('123')");
+                
from("direct:DELETE").to(String.format("olingo2://delete/Manufacturers('%s')", 
TEST_CREATE_MANUFACTURER_ID));
+
+                // test route for merge
+                
from("direct:MERGE").to(String.format("olingo2://merge/Manufacturers('%s')", 
TEST_MERGE_MANUFACTURER_ID));
 
                 /*
-                 * // test route for merge from("direct:MERGE")
-                 * .to("olingo2://merge"); // test route for patch
+                 * // test route for patch
                  * from("direct:PATCH") .to("olingo2://patch");
                  */
 
diff --git 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Olingo2ComponentBuilderFactory.java
 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Olingo2ComponentBuilderFactory.java
index 04f042c..96a7fed 100644
--- 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Olingo2ComponentBuilderFactory.java
+++ 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Olingo2ComponentBuilderFactory.java
@@ -89,6 +89,39 @@ public interface Olingo2ComponentBuilderFactory {
             return this;
         }
         /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2ComponentBuilder entityProviderReadProperties(
+                org.apache.olingo.odata2.api.ep.EntityProviderReadProperties 
entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2ComponentBuilder entityProviderWriteProperties(
+                org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties 
entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
          * Set this to true to filter out results that have already been
          * communicated by this component.
          * 
@@ -306,6 +339,8 @@ public interface Olingo2ComponentBuilderFactory {
             case "configuration": ((Olingo2Component) 
component).setConfiguration((org.apache.camel.component.olingo2.Olingo2Configuration)
 value); return true;
             case "connectTimeout": getOrCreateConfiguration((Olingo2Component) 
component).setConnectTimeout((int) value); return true;
             case "contentType": getOrCreateConfiguration((Olingo2Component) 
component).setContentType((java.lang.String) value); return true;
+            case "entityProviderReadProperties": 
getOrCreateConfiguration((Olingo2Component) 
component).setEntityProviderReadProperties((org.apache.olingo.odata2.api.ep.EntityProviderReadProperties)
 value); return true;
+            case "entityProviderWriteProperties": 
getOrCreateConfiguration((Olingo2Component) 
component).setEntityProviderWriteProperties((org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties)
 value); return true;
             case "filterAlreadySeen": 
getOrCreateConfiguration((Olingo2Component) 
component).setFilterAlreadySeen((boolean) value); return true;
             case "httpHeaders": getOrCreateConfiguration((Olingo2Component) 
component).setHttpHeaders((java.util.Map) value); return true;
             case "proxy": getOrCreateConfiguration((Olingo2Component) 
component).setProxy((org.apache.http.HttpHost) value); return true;
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Olingo2EndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Olingo2EndpointBuilderFactory.java
index c51467f..26fa6f5 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Olingo2EndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/Olingo2EndpointBuilderFactory.java
@@ -87,6 +87,72 @@ public interface Olingo2EndpointBuilderFactory {
             return this;
         }
         /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointConsumerBuilder entityProviderReadProperties(
+                Object entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointConsumerBuilder entityProviderReadProperties(
+                String entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointConsumerBuilder entityProviderWriteProperties(
+                Object entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointConsumerBuilder entityProviderWriteProperties(
+                String entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
          * Set this to true to filter out results that have already been
          * communicated by this component.
          * 
@@ -982,6 +1048,72 @@ public interface Olingo2EndpointBuilderFactory {
             return this;
         }
         /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointProducerBuilder entityProviderReadProperties(
+                Object entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointProducerBuilder entityProviderReadProperties(
+                String entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointProducerBuilder entityProviderWriteProperties(
+                Object entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointProducerBuilder entityProviderWriteProperties(
+                String entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
          * Set this to true to filter out results that have already been
          * communicated by this component.
          * 
@@ -1363,6 +1495,72 @@ public interface Olingo2EndpointBuilderFactory {
             return this;
         }
         /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointBuilder entityProviderReadProperties(
+                Object entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider read properties applied to all read
+         * operations.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderReadProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointBuilder entityProviderReadProperties(
+                String entityProviderReadProperties) {
+            doSetProperty("entityProviderReadProperties", 
entityProviderReadProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option is a:
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointBuilder entityProviderWriteProperties(
+                Object entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
+         * Custom entity provider write properties applied to create, update,
+         * patch, batch and merge operations. For instance users can skip the
+         * Json object wrapper or enable content only mode when sending request
+         * data. A service URI set in the properties will always be overwritten
+         * by the serviceUri configuration parameter. Please consider to using
+         * the serviceUri configuration parameter instead of setting the
+         * respective write property here.
+         * 
+         * The option will be converted to a
+         * 
<code>org.apache.olingo.odata2.api.ep.EntityProviderWriteProperties</code> type.
+         * 
+         * Group: common
+         */
+        default Olingo2EndpointBuilder entityProviderWriteProperties(
+                String entityProviderWriteProperties) {
+            doSetProperty("entityProviderWriteProperties", 
entityProviderWriteProperties);
+            return this;
+        }
+        /**
          * Set this to true to filter out results that have already been
          * communicated by this component.
          * 
diff --git a/docs/components/modules/ROOT/pages/olingo2-component.adoc 
b/docs/components/modules/ROOT/pages/olingo2-component.adoc
index 588ce96..3abfd05 100644
--- a/docs/components/modules/ROOT/pages/olingo2-component.adoc
+++ b/docs/components/modules/ROOT/pages/olingo2-component.adoc
@@ -54,7 +54,7 @@ for this component:
 
 
 // component options: START
-The Olingo2 component supports 16 options, which are listed below.
+The Olingo2 component supports 18 options, which are listed below.
 
 
 
@@ -64,6 +64,8 @@ The Olingo2 component supports 16 options, which are listed 
below.
 | *configuration* (common) | To use the shared configuration |  | 
Olingo2Configuration
 | *connectTimeout* (common) | HTTP connection creation timeout in 
milliseconds, defaults to 30,000 (30 seconds) | 30000 | int
 | *contentType* (common) | Content-Type header value can be used to specify 
JSON or XML message format, defaults to application/json;charset=utf-8 | 
application/json;charset=utf-8 | String
+| *entityProviderReadProperties* (common) | Custom entity provider read 
properties applied to all read operations. |  | EntityProviderReadProperties
+| *entityProviderWriteProperties* (common) | Custom entity provider write 
properties applied to create, update and merge operations. For instance users 
can enable content only settings and skip meta data wrappers when sending 
request data. |  | EntityProviderWriteProperties
 | *filterAlreadySeen* (common) | Set this to true to filter out results that 
have already been communicated by this component. | false | boolean
 | *httpHeaders* (common) | Custom HTTP headers to inject into every request, 
this could include OAuth tokens, etc. |  | Map
 | *proxy* (common) | HTTP proxy server configuration |  | HttpHost
@@ -105,7 +107,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (34 parameters):
+=== Query Parameters (36 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -113,6 +115,8 @@ with the following path and query parameters:
 | Name | Description | Default | Type
 | *connectTimeout* (common) | HTTP connection creation timeout in 
milliseconds, defaults to 30,000 (30 seconds) | 30000 | int
 | *contentType* (common) | Content-Type header value can be used to specify 
JSON or XML message format, defaults to application/json;charset=utf-8 | 
application/json;charset=utf-8 | String
+| *entityProviderReadProperties* (common) | Custom entity provider read 
properties applied to all read operations. |  | EntityProviderReadProperties
+| *entityProviderWriteProperties* (common) | Custom entity provider write 
properties applied to create, update and merge operations. For instance users 
can enable content only settings and skip meta data wrappers when sending 
request data. |  | EntityProviderWriteProperties
 | *filterAlreadySeen* (common) | Set this to true to filter out results that 
have already been communicated by this component. | false | boolean
 | *httpHeaders* (common) | Custom HTTP headers to inject into every request, 
this could include OAuth tokens, etc. |  | Map
 | *inBody* (common) | Sets the name of a parameter to be passed in the 
exchange In Body |  | String

Reply via email to