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

oalsafi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/master by this push:
     new 3deb2cd  CAMEL-15198: Add more configurations from headers 
configurations into component/endpoint configurations (#4042)
3deb2cd is described below

commit 3deb2cd5aaf14b39faa178cafec931dad4d0b694
Author: Omar Al-Safi <omars...@gmail.com>
AuthorDate: Fri Jul 24 15:27:51 2020 +0200

    CAMEL-15198: Add more configurations from headers configurations into 
component/endpoint configurations (#4042)
    
    * CAMEL-15198: Start refactor the configurations
    
    * CAMEL-15198: Finish up the refactor configuration
---
 .../storage/blob/BlobComponentConfigurer.java      |  46 +++
 .../azure/storage/blob/BlobEndpointConfigurer.java |  46 +++
 .../azure/storage/blob/azure-storage-blob.json     |  20 +
 .../main/docs/azure-storage-blob-component.adoc    |  24 +-
 .../azure/storage/blob/BlobConfiguration.java      | 133 +++++++
 .../blob/BlobConfigurationOptionsProxy.java        | 201 ++++++++++
 .../component/azure/storage/blob/BlobProducer.java |  17 +-
 .../component/azure/storage/blob/BlobUtils.java    |  11 -
 .../blob/operations/BlobContainerOperations.java   |  41 +--
 .../storage/blob/operations/BlobOperations.java    | 124 +++----
 .../blob/operations/BlobServiceOperations.java     |  11 +-
 .../blob/BlobConfigurationOptionsProxyTest.java    |  52 +++
 .../azure/storage/blob/BlobProducerIT.java         |  13 +
 .../blob/operations/BlobContainerOperationsIT.java |   2 +-
 .../operations/BlobContainerOperationsTest.java    |   6 +-
 .../AzureStorageBlobComponentBuilderFactory.java   | 147 ++++++++
 .../builder/endpoint/StaticEndpointBuilders.java   |   4 +-
 .../endpoint/dsl/BlobEndpointBuilderFactory.java   | 403 +++++++++++++++++++++
 18 files changed, 1179 insertions(+), 122 deletions(-)

diff --git 
a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
 
b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
index d12376e..4206e08 100644
--- 
a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
+++ 
b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java
@@ -34,27 +34,45 @@ public class BlobComponentConfigurer extends 
PropertyConfigurerSupport implement
         case "blobName": 
getOrCreateConfiguration(target).setBlobName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "bloboffset":
         case "blobOffset": 
getOrCreateConfiguration(target).setBlobOffset(property(camelContext, 
long.class, value)); return true;
+        case "blobsequencenumber":
+        case "blobSequenceNumber": 
getOrCreateConfiguration(target).setBlobSequenceNumber(property(camelContext, 
java.lang.Long.class, value)); return true;
         case "blobtype":
         case "blobType": 
getOrCreateConfiguration(target).setBlobType(property(camelContext, 
org.apache.camel.component.azure.storage.blob.BlobType.class, value)); return 
true;
+        case "blocklisttype":
+        case "blockListType": 
getOrCreateConfiguration(target).setBlockListType(property(camelContext, 
com.azure.storage.blob.models.BlockListType.class, value)); return true;
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": 
target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); 
return true;
         case "closestreamafterread":
         case "closeStreamAfterRead": 
getOrCreateConfiguration(target).setCloseStreamAfterRead(property(camelContext, 
boolean.class, value)); return true;
         case "closestreamafterwrite":
         case "closeStreamAfterWrite": 
getOrCreateConfiguration(target).setCloseStreamAfterWrite(property(camelContext,
 boolean.class, value)); return true;
+        case "commitblocklistlater":
+        case "commitBlockListLater": 
getOrCreateConfiguration(target).setCommitBlockListLater(property(camelContext, 
boolean.class, value)); return true;
         case "configuration": target.setConfiguration(property(camelContext, 
org.apache.camel.component.azure.storage.blob.BlobConfiguration.class, value)); 
return true;
+        case "createappendblob":
+        case "createAppendBlob": 
getOrCreateConfiguration(target).setCreateAppendBlob(property(camelContext, 
boolean.class, value)); return true;
+        case "createpageblob":
+        case "createPageBlob": 
getOrCreateConfiguration(target).setCreatePageBlob(property(camelContext, 
boolean.class, value)); return true;
         case "credentials": 
getOrCreateConfiguration(target).setCredentials(property(camelContext, 
com.azure.storage.common.StorageSharedKeyCredential.class, value)); return true;
         case "datacount":
         case "dataCount": 
getOrCreateConfiguration(target).setDataCount(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "downloadlinkexpiration":
+        case "downloadLinkExpiration": 
getOrCreateConfiguration(target).setDownloadLinkExpiration(property(camelContext,
 java.lang.Long.class, value)); return true;
         case "filedir":
         case "fileDir": 
getOrCreateConfiguration(target).setFileDir(property(camelContext, 
java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "maxresultsperpage":
+        case "maxResultsPerPage": 
getOrCreateConfiguration(target).setMaxResultsPerPage(property(camelContext, 
java.lang.Integer.class, value)); return true;
         case "maxretryrequests":
         case "maxRetryRequests": 
getOrCreateConfiguration(target).setMaxRetryRequests(property(camelContext, 
int.class, value)); return true;
         case "operation": 
getOrCreateConfiguration(target).setOperation(property(camelContext, 
org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class, 
value)); return true;
+        case "pageblobsize":
+        case "pageBlobSize": 
getOrCreateConfiguration(target).setPageBlobSize(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "prefix": 
getOrCreateConfiguration(target).setPrefix(property(camelContext, 
java.lang.String.class, value)); return true;
         case "serviceclient":
         case "serviceClient": 
getOrCreateConfiguration(target).setServiceClient(property(camelContext, 
com.azure.storage.blob.BlobServiceClient.class, value)); return true;
+        case "timeout": 
getOrCreateConfiguration(target).setTimeout(property(camelContext, 
java.time.Duration.class, value)); return true;
         default: return false;
         }
     }
@@ -66,18 +84,28 @@ public class BlobComponentConfigurer extends 
PropertyConfigurerSupport implement
         answer.put("basicPropertyBinding", boolean.class);
         answer.put("blobName", java.lang.String.class);
         answer.put("blobOffset", long.class);
+        answer.put("blobSequenceNumber", java.lang.Long.class);
         answer.put("blobType", 
org.apache.camel.component.azure.storage.blob.BlobType.class);
+        answer.put("blockListType", 
com.azure.storage.blob.models.BlockListType.class);
         answer.put("bridgeErrorHandler", boolean.class);
         answer.put("closeStreamAfterRead", boolean.class);
         answer.put("closeStreamAfterWrite", boolean.class);
+        answer.put("commitBlockListLater", boolean.class);
         answer.put("configuration", 
org.apache.camel.component.azure.storage.blob.BlobConfiguration.class);
+        answer.put("createAppendBlob", boolean.class);
+        answer.put("createPageBlob", boolean.class);
         answer.put("credentials", 
com.azure.storage.common.StorageSharedKeyCredential.class);
         answer.put("dataCount", java.lang.Long.class);
+        answer.put("downloadLinkExpiration", java.lang.Long.class);
         answer.put("fileDir", java.lang.String.class);
         answer.put("lazyStartProducer", boolean.class);
+        answer.put("maxResultsPerPage", java.lang.Integer.class);
         answer.put("maxRetryRequests", int.class);
         answer.put("operation", 
org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class);
+        answer.put("pageBlobSize", java.lang.Long.class);
+        answer.put("prefix", java.lang.String.class);
         answer.put("serviceClient", 
com.azure.storage.blob.BlobServiceClient.class);
+        answer.put("timeout", java.time.Duration.class);
         return answer;
     }
 
@@ -93,27 +121,45 @@ public class BlobComponentConfigurer extends 
PropertyConfigurerSupport implement
         case "blobName": return getOrCreateConfiguration(target).getBlobName();
         case "bloboffset":
         case "blobOffset": return 
getOrCreateConfiguration(target).getBlobOffset();
+        case "blobsequencenumber":
+        case "blobSequenceNumber": return 
getOrCreateConfiguration(target).getBlobSequenceNumber();
         case "blobtype":
         case "blobType": return getOrCreateConfiguration(target).getBlobType();
+        case "blocklisttype":
+        case "blockListType": return 
getOrCreateConfiguration(target).getBlockListType();
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "closestreamafterread":
         case "closeStreamAfterRead": return 
getOrCreateConfiguration(target).isCloseStreamAfterRead();
         case "closestreamafterwrite":
         case "closeStreamAfterWrite": return 
getOrCreateConfiguration(target).isCloseStreamAfterWrite();
+        case "commitblocklistlater":
+        case "commitBlockListLater": return 
getOrCreateConfiguration(target).isCommitBlockListLater();
         case "configuration": return target.getConfiguration();
+        case "createappendblob":
+        case "createAppendBlob": return 
getOrCreateConfiguration(target).isCreateAppendBlob();
+        case "createpageblob":
+        case "createPageBlob": return 
getOrCreateConfiguration(target).isCreatePageBlob();
         case "credentials": return 
getOrCreateConfiguration(target).getCredentials();
         case "datacount":
         case "dataCount": return 
getOrCreateConfiguration(target).getDataCount();
+        case "downloadlinkexpiration":
+        case "downloadLinkExpiration": return 
getOrCreateConfiguration(target).getDownloadLinkExpiration();
         case "filedir":
         case "fileDir": return getOrCreateConfiguration(target).getFileDir();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "maxresultsperpage":
+        case "maxResultsPerPage": return 
getOrCreateConfiguration(target).getMaxResultsPerPage();
         case "maxretryrequests":
         case "maxRetryRequests": return 
getOrCreateConfiguration(target).getMaxRetryRequests();
         case "operation": return 
getOrCreateConfiguration(target).getOperation();
+        case "pageblobsize":
+        case "pageBlobSize": return 
getOrCreateConfiguration(target).getPageBlobSize();
+        case "prefix": return getOrCreateConfiguration(target).getPrefix();
         case "serviceclient":
         case "serviceClient": return 
getOrCreateConfiguration(target).getServiceClient();
+        case "timeout": return getOrCreateConfiguration(target).getTimeout();
         default: return null;
         }
     }
diff --git 
a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
 
b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
index dcb2a89..3e0bc8e 100644
--- 
a/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
+++ 
b/components/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java
@@ -27,19 +27,31 @@ public class BlobEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "blobName": 
target.getConfiguration().setBlobName(property(camelContext, 
java.lang.String.class, value)); return true;
         case "bloboffset":
         case "blobOffset": 
target.getConfiguration().setBlobOffset(property(camelContext, long.class, 
value)); return true;
+        case "blobsequencenumber":
+        case "blobSequenceNumber": 
target.getConfiguration().setBlobSequenceNumber(property(camelContext, 
java.lang.Long.class, value)); return true;
         case "blobserviceclient":
         case "blobServiceClient": 
target.setBlobServiceClient(property(camelContext, 
com.azure.storage.blob.BlobServiceClient.class, value)); return true;
         case "blobtype":
         case "blobType": 
target.getConfiguration().setBlobType(property(camelContext, 
org.apache.camel.component.azure.storage.blob.BlobType.class, value)); return 
true;
+        case "blocklisttype":
+        case "blockListType": 
target.getConfiguration().setBlockListType(property(camelContext, 
com.azure.storage.blob.models.BlockListType.class, value)); return true;
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": 
target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); 
return true;
         case "closestreamafterread":
         case "closeStreamAfterRead": 
target.getConfiguration().setCloseStreamAfterRead(property(camelContext, 
boolean.class, value)); return true;
         case "closestreamafterwrite":
         case "closeStreamAfterWrite": 
target.getConfiguration().setCloseStreamAfterWrite(property(camelContext, 
boolean.class, value)); return true;
+        case "commitblocklistlater":
+        case "commitBlockListLater": 
target.getConfiguration().setCommitBlockListLater(property(camelContext, 
boolean.class, value)); return true;
+        case "createappendblob":
+        case "createAppendBlob": 
target.getConfiguration().setCreateAppendBlob(property(camelContext, 
boolean.class, value)); return true;
+        case "createpageblob":
+        case "createPageBlob": 
target.getConfiguration().setCreatePageBlob(property(camelContext, 
boolean.class, value)); return true;
         case "credentials": 
target.getConfiguration().setCredentials(property(camelContext, 
com.azure.storage.common.StorageSharedKeyCredential.class, value)); return true;
         case "datacount":
         case "dataCount": 
target.getConfiguration().setDataCount(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "downloadlinkexpiration":
+        case "downloadLinkExpiration": 
target.getConfiguration().setDownloadLinkExpiration(property(camelContext, 
java.lang.Long.class, value)); return true;
         case "exceptionhandler":
         case "exceptionHandler": 
target.setExceptionHandler(property(camelContext, 
org.apache.camel.spi.ExceptionHandler.class, value)); return true;
         case "exchangepattern":
@@ -48,12 +60,18 @@ public class BlobEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "fileDir": 
target.getConfiguration().setFileDir(property(camelContext, 
java.lang.String.class, value)); return true;
         case "lazystartproducer":
         case "lazyStartProducer": 
target.setLazyStartProducer(property(camelContext, boolean.class, value)); 
return true;
+        case "maxresultsperpage":
+        case "maxResultsPerPage": 
target.getConfiguration().setMaxResultsPerPage(property(camelContext, 
java.lang.Integer.class, value)); return true;
         case "maxretryrequests":
         case "maxRetryRequests": 
target.getConfiguration().setMaxRetryRequests(property(camelContext, int.class, 
value)); return true;
         case "operation": 
target.getConfiguration().setOperation(property(camelContext, 
org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class, 
value)); return true;
+        case "pageblobsize":
+        case "pageBlobSize": 
target.getConfiguration().setPageBlobSize(property(camelContext, 
java.lang.Long.class, value)); return true;
+        case "prefix": 
target.getConfiguration().setPrefix(property(camelContext, 
java.lang.String.class, value)); return true;
         case "serviceclient":
         case "serviceClient": 
target.getConfiguration().setServiceClient(property(camelContext, 
com.azure.storage.blob.BlobServiceClient.class, value)); return true;
         case "synchronous": target.setSynchronous(property(camelContext, 
boolean.class, value)); return true;
+        case "timeout": 
target.getConfiguration().setTimeout(property(camelContext, 
java.time.Duration.class, value)); return true;
         default: return false;
         }
     }
@@ -65,21 +83,31 @@ public class BlobEndpointConfigurer extends 
PropertyConfigurerSupport implements
         answer.put("basicPropertyBinding", boolean.class);
         answer.put("blobName", java.lang.String.class);
         answer.put("blobOffset", long.class);
+        answer.put("blobSequenceNumber", java.lang.Long.class);
         answer.put("blobServiceClient", 
com.azure.storage.blob.BlobServiceClient.class);
         answer.put("blobType", 
org.apache.camel.component.azure.storage.blob.BlobType.class);
+        answer.put("blockListType", 
com.azure.storage.blob.models.BlockListType.class);
         answer.put("bridgeErrorHandler", boolean.class);
         answer.put("closeStreamAfterRead", boolean.class);
         answer.put("closeStreamAfterWrite", boolean.class);
+        answer.put("commitBlockListLater", boolean.class);
+        answer.put("createAppendBlob", boolean.class);
+        answer.put("createPageBlob", boolean.class);
         answer.put("credentials", 
com.azure.storage.common.StorageSharedKeyCredential.class);
         answer.put("dataCount", java.lang.Long.class);
+        answer.put("downloadLinkExpiration", java.lang.Long.class);
         answer.put("exceptionHandler", 
org.apache.camel.spi.ExceptionHandler.class);
         answer.put("exchangePattern", org.apache.camel.ExchangePattern.class);
         answer.put("fileDir", java.lang.String.class);
         answer.put("lazyStartProducer", boolean.class);
+        answer.put("maxResultsPerPage", java.lang.Integer.class);
         answer.put("maxRetryRequests", int.class);
         answer.put("operation", 
org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class);
+        answer.put("pageBlobSize", java.lang.Long.class);
+        answer.put("prefix", java.lang.String.class);
         answer.put("serviceClient", 
com.azure.storage.blob.BlobServiceClient.class);
         answer.put("synchronous", boolean.class);
+        answer.put("timeout", java.time.Duration.class);
         return answer;
     }
 
@@ -95,19 +123,31 @@ public class BlobEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "blobName": return target.getConfiguration().getBlobName();
         case "bloboffset":
         case "blobOffset": return target.getConfiguration().getBlobOffset();
+        case "blobsequencenumber":
+        case "blobSequenceNumber": return 
target.getConfiguration().getBlobSequenceNumber();
         case "blobserviceclient":
         case "blobServiceClient": return target.getBlobServiceClient();
         case "blobtype":
         case "blobType": return target.getConfiguration().getBlobType();
+        case "blocklisttype":
+        case "blockListType": return 
target.getConfiguration().getBlockListType();
         case "bridgeerrorhandler":
         case "bridgeErrorHandler": return target.isBridgeErrorHandler();
         case "closestreamafterread":
         case "closeStreamAfterRead": return 
target.getConfiguration().isCloseStreamAfterRead();
         case "closestreamafterwrite":
         case "closeStreamAfterWrite": return 
target.getConfiguration().isCloseStreamAfterWrite();
+        case "commitblocklistlater":
+        case "commitBlockListLater": return 
target.getConfiguration().isCommitBlockListLater();
+        case "createappendblob":
+        case "createAppendBlob": return 
target.getConfiguration().isCreateAppendBlob();
+        case "createpageblob":
+        case "createPageBlob": return 
target.getConfiguration().isCreatePageBlob();
         case "credentials": return target.getConfiguration().getCredentials();
         case "datacount":
         case "dataCount": return target.getConfiguration().getDataCount();
+        case "downloadlinkexpiration":
+        case "downloadLinkExpiration": return 
target.getConfiguration().getDownloadLinkExpiration();
         case "exceptionhandler":
         case "exceptionHandler": return target.getExceptionHandler();
         case "exchangepattern":
@@ -116,12 +156,18 @@ public class BlobEndpointConfigurer extends 
PropertyConfigurerSupport implements
         case "fileDir": return target.getConfiguration().getFileDir();
         case "lazystartproducer":
         case "lazyStartProducer": return target.isLazyStartProducer();
+        case "maxresultsperpage":
+        case "maxResultsPerPage": return 
target.getConfiguration().getMaxResultsPerPage();
         case "maxretryrequests":
         case "maxRetryRequests": return 
target.getConfiguration().getMaxRetryRequests();
         case "operation": return target.getConfiguration().getOperation();
+        case "pageblobsize":
+        case "pageBlobSize": return 
target.getConfiguration().getPageBlobSize();
+        case "prefix": return target.getConfiguration().getPrefix();
         case "serviceclient":
         case "serviceClient": return 
target.getConfiguration().getServiceClient();
         case "synchronous": return target.isSynchronous();
+        case "timeout": return target.getConfiguration().getTimeout();
         default: return null;
         }
     }
diff --git 
a/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
 
b/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
index d5dfa55..4feb63c 100644
--- 
a/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
+++ 
b/components/camel-azure-storage-blob/src/generated/resources/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json
@@ -29,12 +29,22 @@
     "credentials": { "kind": "property", "displayName": "Credentials", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "com.azure.storage.common.StorageSharedKeyCredential", 
"deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": 
"StorageSharedKeyCredential can be injected to create the azure client, this 
holds the important authent [...]
     "dataCount": { "kind": "property", "displayName": "Data Count", "group": 
"common", "label": "common", "required": false, "type": "integer", "javaType": 
"java.lang.Long", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "How many bytes to 
include in the range. Must be greater than or equal to 0 if specified." },
     "fileDir": { "kind": "property", "displayName": "File Dir", "group": 
"common", "label": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "The file directory where 
the downloaded blobs will be saved to, this can be used in both, producer and 
consumer" },
+    "maxResultsPerPage": { "kind": "property", "displayName": "Max Results Per 
Page", "group": "common", "label": "common", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": 
false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies the maximum 
number of blobs to return, including all BlobPrefix elements. If the request 
does not specify [...]
     "maxRetryRequests": { "kind": "property", "displayName": "Max Retry 
Requests", "group": "common", "label": "common", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "secret": false, 
"defaultValue": "0", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies the maximum 
number of additional HTTP Get requests that will be made while reading the data 
from a re [...]
+    "prefix": { "kind": "property", "displayName": "Prefix", "group": 
"common", "label": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Filters the results to 
return only blobs whose names begin with the specified prefix. May be null to 
return all blobs." },
     "serviceClient": { "kind": "property", "displayName": "Service Client", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "com.azure.storage.blob.BlobServiceClient", "deprecated": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Client to a storage 
account. This client does not hold any state about a particular storage account 
but is in [...]
+    "timeout": { "kind": "property", "displayName": "Timeout", "group": 
"common", "label": "common", "required": false, "type": "object", "javaType": 
"java.time.Duration", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "An optional timeout 
value beyond which a RuntimeException will be raised." },
     "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled by [...]
+    "blobSequenceNumber": { "kind": "property", "displayName": "Blob Sequence 
Number", "group": "producer", "label": "producer", "required": false, "type": 
"integer", "javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"defaultValue": "0", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "A user-controlled value 
that you can use to track requests. The value of the sequence number [...]
+    "blockListType": { "kind": "property", "displayName": "Block List Type", 
"group": "producer", "label": "producer", "required": false, "type": "object", 
"javaType": "com.azure.storage.blob.models.BlockListType", "enum": [ 
"committed", "uncommitted", "all" ], "deprecated": false, "secret": false, 
"defaultValue": "committed", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies which typ [...]
     "closeStreamAfterWrite": { "kind": "property", "displayName": "Close 
Stream After Write", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": 
false, "defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Close the stream after 
write or keep it open, default is true" },
+    "commitBlockListLater": { "kind": "property", "displayName": "Commit Block 
List Later", "group": "producer", "label": "producer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "When is set to true, the 
staged blocks will not be committed directly." },
+    "createAppendBlob": { "kind": "property", "displayName": "Create Append 
Blob", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "When is set to true, the 
append blocks will be created when committing append blocks." },
+    "createPageBlob": { "kind": "property", "displayName": "Create Page Blob", 
"group": "producer", "label": "producer", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
"true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "When is set to true, the 
page blob will be created when uploading page blob." },
+    "downloadLinkExpiration": { "kind": "property", "displayName": "Download 
Link Expiration", "group": "producer", "label": "producer", "required": false, 
"type": "integer", "javaType": "java.lang.Long", "deprecated": false, "secret": 
false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Override the default 
expiration (millis) of URL download link." },
     "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a producer may otherwise 
fail during starting and cause the r [...]
     "operation": { "kind": "property", "displayName": "Operation", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", 
"enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", 
"listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", 
"uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", 
"getBlobBlockList", "createAppendBlob", "c [...]
+    "pageBlobSize": { "kind": "property", "displayName": "Page Blob Size", 
"group": "producer", "label": "producer", "required": false, "type": "integer", 
"javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"defaultValue": "512", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies the maximum 
size for the page blob, up to 8 TB. The page blob size must be aligned to a 
512- [...]
     "basicPropertyBinding": { "kind": "property", "displayName": "Basic 
Property Binding", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the component should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities" },
     "accessKey": { "kind": "property", "displayName": "Access Key", "group": 
"security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Access key for the 
associated azure account name to be used for authentication with azure blob 
services" }
   },
@@ -49,14 +59,24 @@
     "credentials": { "kind": "parameter", "displayName": "Credentials", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "com.azure.storage.common.StorageSharedKeyCredential", 
"deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": 
"StorageSharedKeyCredential can be injected to create the azure client, this 
holds the important authen [...]
     "dataCount": { "kind": "parameter", "displayName": "Data Count", "group": 
"common", "label": "common", "required": false, "type": "integer", "javaType": 
"java.lang.Long", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "How many bytes to 
include in the range. Must be greater than or equal to 0 if specified." },
     "fileDir": { "kind": "parameter", "displayName": "File Dir", "group": 
"common", "label": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "The file directory where 
the downloaded blobs will be saved to, this can be used in both, producer and 
consumer" },
+    "maxResultsPerPage": { "kind": "parameter", "displayName": "Max Results 
Per Page", "group": "common", "label": "common", "required": false, "type": 
"integer", "javaType": "java.lang.Integer", "deprecated": false, "secret": 
false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies the maximum 
number of blobs to return, including all BlobPrefix elements. If the request 
does not specif [...]
     "maxRetryRequests": { "kind": "parameter", "displayName": "Max Retry 
Requests", "group": "common", "label": "common", "required": false, "type": 
"integer", "javaType": "int", "deprecated": false, "secret": false, 
"defaultValue": "0", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies the maximum 
number of additional HTTP Get requests that will be made while reading the data 
from a r [...]
+    "prefix": { "kind": "parameter", "displayName": "Prefix", "group": 
"common", "label": "common", "required": false, "type": "string", "javaType": 
"java.lang.String", "deprecated": false, "secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Filters the results to 
return only blobs whose names begin with the specified prefix. May be null to 
return all blobs." },
     "serviceClient": { "kind": "parameter", "displayName": "Service Client", 
"group": "common", "label": "", "required": false, "type": "object", 
"javaType": "com.azure.storage.blob.BlobServiceClient", "deprecated": false, 
"secret": false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Client to a storage 
account. This client does not hold any state about a particular storage account 
but is i [...]
+    "timeout": { "kind": "parameter", "displayName": "Timeout", "group": 
"common", "label": "common", "required": false, "type": "object", "javaType": 
"java.time.Duration", "deprecated": false, "secret": false, 
"configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "An optional timeout 
value beyond which a RuntimeException will be raised." },
     "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error 
Handler", "group": "consumer", "label": "consumer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled b [...]
     "exceptionHandler": { "kind": "parameter", "displayName": "Exception 
Handler", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", 
"deprecated": false, "secret": false, "description": "To let the consumer use a 
custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled 
then this option is not in use. By default the consumer will deal with [...]
     "exchangePattern": { "kind": "parameter", "displayName": "Exchange 
Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", 
"InOptionalOut" ], "deprecated": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
+    "blobSequenceNumber": { "kind": "parameter", "displayName": "Blob Sequence 
Number", "group": "producer", "label": "producer", "required": false, "type": 
"integer", "javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"defaultValue": "0", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "A user-controlled value 
that you can use to track requests. The value of the sequence numbe [...]
+    "blockListType": { "kind": "parameter", "displayName": "Block List Type", 
"group": "producer", "label": "producer", "required": false, "type": "object", 
"javaType": "com.azure.storage.blob.models.BlockListType", "enum": [ 
"committed", "uncommitted", "all" ], "deprecated": false, "secret": false, 
"defaultValue": "committed", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies which ty [...]
     "closeStreamAfterWrite": { "kind": "parameter", "displayName": "Close 
Stream After Write", "group": "producer", "label": "producer", "required": 
false, "type": "boolean", "javaType": "boolean", "deprecated": false, "secret": 
false, "defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Close the stream after 
write or keep it open, default is true" },
+    "commitBlockListLater": { "kind": "parameter", "displayName": "Commit 
Block List Later", "group": "producer", "label": "producer", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "When is set to true, the 
staged blocks will not be committed directly." },
+    "createAppendBlob": { "kind": "parameter", "displayName": "Create Append 
Blob", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "When is set to true, the 
append blocks will be created when committing append blocks." },
+    "createPageBlob": { "kind": "parameter", "displayName": "Create Page 
Blob", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": "true", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "When is set to true, the 
page blob will be created when uploading page blob." },
+    "downloadLinkExpiration": { "kind": "parameter", "displayName": "Download 
Link Expiration", "group": "producer", "label": "producer", "required": false, 
"type": "integer", "javaType": "java.lang.Long", "deprecated": false, "secret": 
false, "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Override the default 
expiration (millis) of URL download link." },
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start 
Producer", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the producer should be started 
lazy (on the first message). By starting lazy you can use this to allow 
CamelContext and routes to startup in situations where a producer may otherwise 
fail during starting and cause the  [...]
     "operation": { "kind": "parameter", "displayName": "Operation", "group": 
"producer", "label": "producer", "required": false, "type": "object", 
"javaType": 
"org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", 
"enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", 
"listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", 
"uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", 
"getBlobBlockList", "createAppendBlob", " [...]
+    "pageBlobSize": { "kind": "parameter", "displayName": "Page Blob Size", 
"group": "producer", "label": "producer", "required": false, "type": "integer", 
"javaType": "java.lang.Long", "deprecated": false, "secret": false, 
"defaultValue": "512", "configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Specifies the maximum 
size for the page blob, up to 8 TB. The page blob size must be aligned to a 512 
[...]
     "basicPropertyBinding": { "kind": "parameter", "displayName": "Basic 
Property Binding", "group": "advanced", "label": "advanced", "required": false, 
"type": "boolean", "javaType": "boolean", "deprecated": false, "secret": false, 
"defaultValue": false, "description": "Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities" },
     "synchronous": { "kind": "parameter", "displayName": "Synchronous", 
"group": "advanced", "label": "advanced", "required": false, "type": "boolean", 
"javaType": "boolean", "deprecated": false, "secret": false, "defaultValue": 
"false", "description": "Sets whether synchronous processing should be strictly 
used, or Camel is allowed to use asynchronous processing (if supported)." },
     "accessKey": { "kind": "parameter", "displayName": "Access Key", "group": 
"security", "label": "security", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "secret": true, 
"configurationClass": 
"org.apache.camel.component.azure.storage.blob.BlobConfiguration", 
"configurationField": "configuration", "description": "Access key for the 
associated azure account name to be used for authentication with azure blob 
services" }
diff --git 
a/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
 
b/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
index fd5e2ea..417054d 100644
--- 
a/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
+++ 
b/components/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc
@@ -64,7 +64,7 @@ to("file://blobdirectory");
 
 
 // component options: START
-The Azure Storage Blob Service component supports 16 options, which are listed 
below.
+The Azure Storage Blob Service component supports 26 options, which are listed 
below.
 
 
 
@@ -79,12 +79,22 @@ The Azure Storage Blob Service component supports 16 
options, which are listed b
 | *credentials* (common) | StorageSharedKeyCredential can be injected to 
create the azure client, this holds the important authentication information |  
| StorageSharedKeyCredential
 | *dataCount* (common) | How many bytes to include in the range. Must be 
greater than or equal to 0 if specified. |  | Long
 | *fileDir* (common) | The file directory where the downloaded blobs will be 
saved to, this can be used in both, producer and consumer |  | String
+| *maxResultsPerPage* (common) | Specifies the maximum number of blobs to 
return, including all BlobPrefix elements. If the request does not specify 
maxResultsPerPage or specifies a value greater than 5,000, the server will 
return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional 
HTTP Get requests that will be made while reading the data from a response 
body. | 0 | int
+| *prefix* (common) | Filters the results to return only blobs whose names 
begin with the specified prefix. May be null to return all blobs. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not 
hold any state about a particular storage account but is instead a convenient 
way of sending off appropriate requests to the resource on the service. It may 
also be used to construct URLs to blobs and containers. This client contains 
operations on a service account. Operations on a container are available on 
BlobContainerClient through getBlobContainerClient(String), and operations on a 
blob are available on B [...]
+| *timeout* (common) | An optional timeout value beyond which a 
RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled by the routing Error Handler. By default the 
consumer will use the org.apache.camel.spi.ExceptionHandler to deal with 
exceptions, that will be logged at WARN or ERROR level and ignored. | false | 
boolean
+| *blobSequenceNumber* (producer) | A user-controlled value that you can use 
to track requests. The value of the sequence number must be between 0 and 263 - 
1.The default value is 0. | 0 | Long
+| *blockListType* (producer) | Specifies which type of blocks to return. The 
value can be one of: committed, uncommitted, all | committed | BlockListType
 | *closeStreamAfterWrite* (producer) | Close the stream after write or keep it 
open, default is true | true | boolean
+| *commitBlockListLater* (producer) | When is set to true, the staged blocks 
will not be committed directly. | true | boolean
+| *createAppendBlob* (producer) | When is set to true, the append blocks will 
be created when committing append blocks. | true | boolean
+| *createPageBlob* (producer) | When is set to true, the page blob will be 
created when uploading page blob. | true | boolean
+| *downloadLinkExpiration* (producer) | Override the default expiration 
(millis) of URL download link. |  | Long
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy 
(on the first message). By starting lazy you can use this to allow CamelContext 
and routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
 | *operation* (producer) | The blob operation that can be used with this 
component on the producer. The value can be one of: listBlobContainers, 
createBlobContainer, deleteBlobContainer, listBlobs, getBlob, deleteBlob, 
downloadBlobToFile, downloadLink, uploadBlockBlob, stageBlockBlobList, 
commitBlobBlockList, getBlobBlockList, createAppendBlob, commitAppendBlob, 
createPageBlob, uploadPageBlob, resizePageBlob, clearPageBlob, 
getPageBlobRanges | listBlobContainers | BlobOperationsDefinition
+| *pageBlobSize* (producer) | Specifies the maximum size for the page blob, up 
to 8 TB. The page blob size must be aligned to a 512-byte boundary. | 512 | Long
 | *basicPropertyBinding* (advanced) | Whether the component should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
 | *accessKey* (security) | Access key for the associated azure account name to 
be used for authentication with azure blob services |  | String
 |===
@@ -110,7 +120,7 @@ with the following path and query parameters:
 |===
 
 
-=== Query Parameters (19 parameters):
+=== Query Parameters (29 parameters):
 
 
 [width="100%",cols="2,5,^1,2",options="header"]
@@ -124,14 +134,24 @@ with the following path and query parameters:
 | *credentials* (common) | StorageSharedKeyCredential can be injected to 
create the azure client, this holds the important authentication information |  
| StorageSharedKeyCredential
 | *dataCount* (common) | How many bytes to include in the range. Must be 
greater than or equal to 0 if specified. |  | Long
 | *fileDir* (common) | The file directory where the downloaded blobs will be 
saved to, this can be used in both, producer and consumer |  | String
+| *maxResultsPerPage* (common) | Specifies the maximum number of blobs to 
return, including all BlobPrefix elements. If the request does not specify 
maxResultsPerPage or specifies a value greater than 5,000, the server will 
return up to 5,000 items. |  | Integer
 | *maxRetryRequests* (common) | Specifies the maximum number of additional 
HTTP Get requests that will be made while reading the data from a response 
body. | 0 | int
+| *prefix* (common) | Filters the results to return only blobs whose names 
begin with the specified prefix. May be null to return all blobs. |  | String
 | *serviceClient* (common) | Client to a storage account. This client does not 
hold any state about a particular storage account but is instead a convenient 
way of sending off appropriate requests to the resource on the service. It may 
also be used to construct URLs to blobs and containers. This client contains 
operations on a service account. Operations on a container are available on 
BlobContainerClient through getBlobContainerClient(String), and operations on a 
blob are available on B [...]
+| *timeout* (common) | An optional timeout value beyond which a 
RuntimeException will be raised. |  | Duration
 | *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the 
Camel routing Error Handler, which mean any exceptions occurred while the 
consumer is trying to pickup incoming messages, or the likes, will now be 
processed as a message and handled by the routing Error Handler. By default the 
consumer will use the org.apache.camel.spi.ExceptionHandler to deal with 
exceptions, that will be logged at WARN or ERROR level and ignored. | false | 
boolean
 | *exceptionHandler* (consumer) | To let the consumer use a custom 
ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this 
option is not in use. By default the consumer will deal with exceptions, that 
will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
 | *exchangePattern* (consumer) | Sets the exchange pattern when the consumer 
creates an exchange. The value can be one of: InOnly, InOut, InOptionalOut |  | 
ExchangePattern
+| *blobSequenceNumber* (producer) | A user-controlled value that you can use 
to track requests. The value of the sequence number must be between 0 and 263 - 
1.The default value is 0. | 0 | Long
+| *blockListType* (producer) | Specifies which type of blocks to return. The 
value can be one of: committed, uncommitted, all | committed | BlockListType
 | *closeStreamAfterWrite* (producer) | Close the stream after write or keep it 
open, default is true | true | boolean
+| *commitBlockListLater* (producer) | When is set to true, the staged blocks 
will not be committed directly. | true | boolean
+| *createAppendBlob* (producer) | When is set to true, the append blocks will 
be created when committing append blocks. | true | boolean
+| *createPageBlob* (producer) | When is set to true, the page blob will be 
created when uploading page blob. | true | boolean
+| *downloadLinkExpiration* (producer) | Override the default expiration 
(millis) of URL download link. |  | Long
 | *lazyStartProducer* (producer) | Whether the producer should be started lazy 
(on the first message). By starting lazy you can use this to allow CamelContext 
and routes to startup in situations where a producer may otherwise fail during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
 | *operation* (producer) | The blob operation that can be used with this 
component on the producer. The value can be one of: listBlobContainers, 
createBlobContainer, deleteBlobContainer, listBlobs, getBlob, deleteBlob, 
downloadBlobToFile, downloadLink, uploadBlockBlob, stageBlockBlobList, 
commitBlobBlockList, getBlobBlockList, createAppendBlob, commitAppendBlob, 
createPageBlob, uploadPageBlob, resizePageBlob, clearPageBlob, 
getPageBlobRanges | listBlobContainers | BlobOperationsDefinition
+| *pageBlobSize* (producer) | Specifies the maximum size for the page blob, up 
to 8 TB. The page blob size must be aligned to a 512-byte boundary. | 512 | Long
 | *basicPropertyBinding* (advanced) | Whether the endpoint should use basic 
property binding (Camel 2.x) or the newer property binding with additional 
capabilities | false | boolean
 | *synchronous* (advanced) | Sets whether synchronous processing should be 
strictly used, or Camel is allowed to use asynchronous processing (if 
supported). | false | boolean
 | *accessKey* (security) | Access key for the associated azure account name to 
be used for authentication with azure blob services |  | String
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
index ca8e151..f4c9209 100644
--- 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java
@@ -16,9 +16,12 @@
  */
 package org.apache.camel.component.azure.storage.blob;
 
+import java.time.Duration;
+
 import com.azure.storage.blob.BlobClient;
 import com.azure.storage.blob.BlobContainerClient;
 import com.azure.storage.blob.BlobServiceClient;
+import com.azure.storage.blob.models.BlockListType;
 import com.azure.storage.common.StorageSharedKeyCredential;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.UriParam;
@@ -52,12 +55,32 @@ public class BlobConfiguration implements Cloneable {
     private long blobOffset;
     @UriParam(label = "common")
     private Long dataCount;
+    @UriParam(label = "common")
+    private Duration timeout;
+    @UriParam(label = "common")
+    private String prefix;
+    @UriParam(label = "common")
+    private Integer maxResultsPerPage;
     @UriParam(label = "common", defaultValue = "0")
     private int maxRetryRequests;
     @UriParam(defaultValue = "true")
     private boolean closeStreamAfterRead = true;
     @UriParam(label = "producer", defaultValue = "true")
     private boolean closeStreamAfterWrite = true;
+    @UriParam(label = "producer")
+    private Long downloadLinkExpiration;
+    @UriParam(label = "producer", defaultValue = "true")
+    private boolean commitBlockListLater = true;
+    @UriParam(label = "producer", defaultValue = "true")
+    private boolean createAppendBlob = true;
+    @UriParam(label = "producer", defaultValue = "true")
+    private boolean createPageBlob = true;
+    @UriParam(label = "producer", defaultValue = "0")
+    private Long blobSequenceNumber;
+    @UriParam(label = "producer", defaultValue = "512")
+    private Long pageBlobSize = BlobConstants.PAGE_BLOB_DEFAULT_SIZE;
+    @UriParam(label = "producer", enums = "committed,uncommitted,all", 
defaultValue = "committed")
+    private BlockListType blockListType = BlockListType.COMMITTED;
 
 
     /**
@@ -199,6 +222,39 @@ public class BlobConfiguration implements Cloneable {
     }
 
     /**
+     * An optional timeout value beyond which a {@link RuntimeException} will 
be raised.
+     */
+    public Duration getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Duration timeout) {
+        this.timeout = timeout;
+    }
+
+    /**
+     * Filters the results to return only blobs whose names begin with the 
specified prefix. May be null to return all blobs.
+     */
+    public String getPrefix() {
+        return prefix;
+    }
+
+    public void setPrefix(String prefix) {
+        this.prefix = prefix;
+    }
+
+    /**
+     * Specifies the maximum number of blobs to return, including all 
BlobPrefix elements. If the request does not specify maxResultsPerPage or 
specifies a value greater than 5,000, the server will return up to 5,000 items.
+     */
+    public Integer getMaxResultsPerPage() {
+        return maxResultsPerPage;
+    }
+
+    public void setMaxResultsPerPage(Integer maxResultsPerPage) {
+        this.maxResultsPerPage = maxResultsPerPage;
+    }
+
+    /**
      * Close the stream after read or keep it open, default is true
      */
     public boolean isCloseStreamAfterRead() {
@@ -220,6 +276,83 @@ public class BlobConfiguration implements Cloneable {
         this.closeStreamAfterWrite = closeStreamAfterWrite;
     }
 
+    /**
+     * Specifies the maximum size for the page blob, up to 8 TB. The page blob 
size must be aligned to a 512-byte boundary.
+     */
+    public Long getPageBlobSize() {
+        return pageBlobSize;
+    }
+
+    public void setPageBlobSize(Long pageBlobSize) {
+        this.pageBlobSize = pageBlobSize;
+    }
+
+    /**
+     * Override the default expiration (millis) of URL download link.
+     */
+    public Long getDownloadLinkExpiration() {
+        return downloadLinkExpiration;
+    }
+
+    public void setDownloadLinkExpiration(Long downloadLinkExpiration) {
+        this.downloadLinkExpiration = downloadLinkExpiration;
+    }
+
+    /**
+     * When is set to `true`, the staged blocks will not be committed directly.
+     */
+    public boolean isCommitBlockListLater() {
+        return commitBlockListLater;
+    }
+
+    public void setCommitBlockListLater(boolean commitBlockListLater) {
+        this.commitBlockListLater = commitBlockListLater;
+    }
+
+    /**
+     * When is set to `true`, the append blocks will be created when 
committing append blocks.
+     */
+    public boolean isCreateAppendBlob() {
+        return createAppendBlob;
+    }
+
+    public void setCreateAppendBlob(boolean createAppendBlob) {
+        this.createAppendBlob = createAppendBlob;
+    }
+
+    /**
+     * When is set to `true`, the page blob will be created when uploading 
page blob.
+     */
+    public boolean isCreatePageBlob() {
+        return createPageBlob;
+    }
+
+    public void setCreatePageBlob(boolean createPageBlob) {
+        this.createPageBlob = createPageBlob;
+    }
+
+    /**
+     * A user-controlled value that you can use to track requests. The value 
of the sequence number must be between 0 and 2^63 - 1.The default value is 0.
+     */
+    public Long getBlobSequenceNumber() {
+        return blobSequenceNumber;
+    }
+
+    public void setBlobSequenceNumber(Long blobSequenceNumber) {
+        this.blobSequenceNumber = blobSequenceNumber;
+    }
+
+    /**
+     *  Specifies which type of blocks to return.
+     */
+    public BlockListType getBlockListType() {
+        return blockListType;
+    }
+
+    public void setBlockListType(BlockListType blockListType) {
+        this.blockListType = blockListType;
+    }
+
     // *************************************************
     //
     // *************************************************
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
new file mode 100644
index 0000000..4143f02
--- /dev/null
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java
@@ -0,0 +1,201 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.azure.storage.blob;
+
+import java.time.Duration;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+import com.azure.storage.blob.models.AccessTier;
+import com.azure.storage.blob.models.BlobHttpHeaders;
+import com.azure.storage.blob.models.BlobListDetails;
+import com.azure.storage.blob.models.BlobRange;
+import com.azure.storage.blob.models.BlobRequestConditions;
+import com.azure.storage.blob.models.BlockListType;
+import com.azure.storage.blob.models.DeleteSnapshotsOptionType;
+import com.azure.storage.blob.models.ListBlobContainersOptions;
+import com.azure.storage.blob.models.ListBlobsOptions;
+import com.azure.storage.blob.models.PageRange;
+import com.azure.storage.blob.models.ParallelTransferOptions;
+import com.azure.storage.blob.models.PublicAccessType;
+import org.apache.camel.Exchange;
+import org.apache.camel.util.ObjectHelper;
+
+/**
+ * A proxy class for {@link BlobConfigurationOptionsProxy} and {@link 
BlobExchangeHeaders}. Ideally this
+ * is responsible to obtain the correct configurations options either from 
configs or exchange headers
+ */
+public class BlobConfigurationOptionsProxy {
+
+    private final BlobConfiguration configuration;
+
+    public BlobConfigurationOptionsProxy(final BlobConfiguration 
configuration) {
+        this.configuration = configuration;
+    }
+
+    public ListBlobContainersOptions getListBlobContainersOptions(final 
Exchange exchange) {
+        return 
BlobExchangeHeaders.getListBlobContainersOptionsFromHeaders(exchange);
+    }
+
+    public Duration getTimeout(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getTimeoutFromHeaders, 
configuration::getTimeout, exchange);
+    }
+
+    public ListBlobsOptions getListBlobsOptions(final Exchange exchange) {
+        return BlobExchangeHeaders.getListBlobsOptionsFromHeaders(exchange);
+    }
+
+    public BlobListDetails getBlobListDetails(final Exchange exchange) {
+        return BlobExchangeHeaders.getBlobListDetailsFromHeaders(exchange);
+    }
+
+    public String getPrefix(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getPrefixFromHeaders, 
configuration::getPrefix, exchange);
+    }
+
+    public Integer getMaxResultsPerPage(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getMaxResultsPerPageFromHeaders, 
configuration::getMaxResultsPerPage, exchange);
+    }
+
+    public ListBlobsOptions getListBlobOptions(final Exchange exchange) {
+        ListBlobsOptions blobsOptions = getListBlobsOptions(exchange);
+
+        if (!ObjectHelper.isEmpty(blobsOptions)) {
+            return blobsOptions;
+        } else {
+            blobsOptions = new ListBlobsOptions();
+        }
+
+        final BlobListDetails blobListDetails = getBlobListDetails(exchange);
+        final String prefix = getPrefix(exchange);
+        final Integer maxResultsPerPage = getMaxResultsPerPage(exchange);
+
+        blobsOptions.setDetails(blobListDetails);
+        blobsOptions.setMaxResultsPerPage(maxResultsPerPage);
+        blobsOptions.setPrefix(prefix);
+
+        return blobsOptions;
+    }
+
+    public Map<String, String> getMetadata(final Exchange exchange) {
+        return BlobExchangeHeaders.getMetadataFromHeaders(exchange);
+    }
+
+    public PublicAccessType getPublicAccessType(final Exchange exchange) {
+        return BlobExchangeHeaders.getPublicAccessTypeFromHeaders(exchange);
+    }
+
+    public BlobRequestConditions getBlobRequestConditions(final Exchange 
exchange) {
+        return 
BlobExchangeHeaders.getBlobRequestConditionsFromHeaders(exchange);
+    }
+
+    public PageRange getPageRange(final Exchange exchange) {
+        return BlobExchangeHeaders.getPageRangeFromHeaders(exchange);
+    }
+
+    public BlobRange getBlobRange(final Exchange exchange) {
+        if (configuration.getBlobType() == BlobType.pageblob) {
+            final PageRange pageRange = getPageRange(exchange);
+            if (pageRange != null) {
+                final long blobOffset = pageRange.getStart();
+                final long dataCount = pageRange.getEnd() - 
pageRange.getStart();
+
+                return new BlobRange(blobOffset, dataCount);
+            }
+        }
+        return new BlobRange(configuration.getBlobOffset(), 
configuration.getDataCount());
+    }
+
+    public BlobHttpHeaders getBlobHttpHeaders(final Exchange exchange) {
+        return BlobExchangeHeaders.getBlobHttpHeadersFromHeaders(exchange);
+    }
+
+    public AccessTier getAccessTier(final Exchange exchange) {
+        return BlobExchangeHeaders.getAccessTierFromHeaders(exchange);
+    }
+
+    public byte[] getContentMd5(final Exchange exchange) {
+        return BlobExchangeHeaders.getContentMd5FromHeaders(exchange);
+    }
+
+    public String getFileDir(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getFileDirFromHeaders, 
configuration::getFileDir, exchange);
+    }
+
+    public ParallelTransferOptions getParallelTransferOptions(final Exchange 
exchange) {
+        return 
BlobExchangeHeaders.getParallelTransferOptionsFromHeaders(exchange);
+    }
+
+    public DeleteSnapshotsOptionType getDeleteSnapshotsOptionType(final 
Exchange exchange) {
+        return 
BlobExchangeHeaders.getDeleteSnapshotsOptionTypeFromHeaders(exchange);
+    }
+
+    public Long getDownloadLinkExpiration(final Exchange exchange) {
+        return 
getOption(BlobExchangeHeaders::getDownloadLinkExpirationFromHeaders, 
configuration::getDownloadLinkExpiration, exchange);
+    }
+
+    public boolean isCommitBlockListLater(final Exchange exchange) {
+        return 
getOption(BlobExchangeHeaders::getCommitBlockListFlagFromHeaders, 
configuration::isCommitBlockListLater, exchange);
+    }
+
+    public BlockListType getBlockListType(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getBlockListTypeFromHeaders, 
configuration::getBlockListType, exchange);
+    }
+
+    public boolean isCreateAppendBlob(final Exchange exchange) {
+        return 
getOption(BlobExchangeHeaders::getCreateAppendBlobFlagFromHeaders, 
configuration::isCreateAppendBlob, exchange);
+    }
+
+    public Long getPageBlobSize(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getPageBlobSize, 
configuration::getPageBlobSize, exchange);
+    }
+
+    public Long getBlobSequenceNumber(final Exchange exchange) {
+        return 
getOption(BlobExchangeHeaders::getBlobSequenceNumberFromHeaders, 
configuration::getBlobSequenceNumber, exchange);
+    }
+
+    public boolean isCreatePageBlob(final Exchange exchange) {
+        return 
getOption(BlobExchangeHeaders::getCreatePageBlobFlagFromHeaders, 
configuration::isCreatePageBlob, exchange);
+    }
+
+    public String getBlobName(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getBlobNameFromHeaders, 
configuration::getBlobName, exchange);
+    }
+
+    public String getContainerName(final Exchange exchange) {
+        return getOption(BlobExchangeHeaders::getBlobContainerNameFromHeaders, 
configuration::getContainerName, exchange);
+    }
+
+    public BlobOperationsDefinition getOperation(final Exchange exchange) {
+        return 
getOption(BlobExchangeHeaders::getBlobOperationsDefinitionFromHeaders, 
configuration::getOperation, exchange);
+    }
+
+    public int getMaxRetryRequests() {
+        return configuration.getMaxRetryRequests();
+    }
+
+    public BlobConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    private <R> R getOption(final Function<Exchange, R> exchangeFn, final 
Supplier<R> fallbackFn, final Exchange exchange) {
+        // we first try to look if our value in exchange otherwise fallback to 
fallbackFn which could be either a function or constant
+        return ObjectHelper.isEmpty(exchangeFn.apply(exchange)) ? 
fallbackFn.get()
+                : exchangeFn.apply(exchange);
+    }
+}
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
index 0c0c1cc..5069415 100644
--- 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java
@@ -33,6 +33,7 @@ import org.apache.camel.util.ObjectHelper;
 public class BlobProducer extends DefaultProducer {
 
     private final BlobConfiguration configuration;
+    private final BlobConfigurationOptionsProxy configurationProxy;
     private final BlobServiceOperations blobServiceOperations;
     private final BlobServiceClientWrapper blobServiceClientWrapper;
 
@@ -40,7 +41,8 @@ public class BlobProducer extends DefaultProducer {
         super(endpoint);
         this.configuration = getEndpoint().getConfiguration();
         this.blobServiceClientWrapper = new 
BlobServiceClientWrapper(getEndpoint().getBlobServiceClient());
-        this.blobServiceOperations = new 
BlobServiceOperations(blobServiceClientWrapper);
+        this.blobServiceOperations = new BlobServiceOperations(configuration, 
blobServiceClientWrapper);
+        this.configurationProxy = new 
BlobConfigurationOptionsProxy(configuration);
     }
 
     @Override
@@ -131,15 +133,11 @@ public class BlobProducer extends DefaultProducer {
     }
 
     private BlobOperationsDefinition determineOperation(final Exchange 
exchange) {
-        final BlobOperationsDefinition operation = 
BlobExchangeHeaders.getBlobOperationsDefinitionFromHeaders(exchange);
-        if (operation != null) {
-            return operation;
-        }
-        return configuration.getOperation();
+        return configurationProxy.getOperation(exchange);
     }
 
     private BlobContainerOperations getContainerOperations(final Exchange 
exchange) {
-        return new 
BlobContainerOperations(blobServiceClientWrapper.getBlobContainerClientWrapper(determineContainerName(exchange)));
+        return new BlobContainerOperations(configuration, 
blobServiceClientWrapper.getBlobContainerClientWrapper(determineContainerName(exchange)));
     }
 
     private BlobOperations getBlobOperations(final Exchange exchange) {
@@ -150,7 +148,8 @@ public class BlobProducer extends DefaultProducer {
     }
 
     private String determineContainerName(final Exchange exchange) {
-        final String containerName = BlobUtils.getContainerName(configuration, 
exchange);
+        final String containerName = 
configurationProxy.getContainerName(exchange);
+
         if (ObjectHelper.isEmpty(containerName)) {
             throw new IllegalArgumentException("Container name must be 
specified");
         }
@@ -158,7 +157,7 @@ public class BlobProducer extends DefaultProducer {
     }
 
     public String determineBlobName(final Exchange exchange) {
-        final String blobName = BlobUtils.getBlobName(configuration, exchange);
+        final String blobName = configurationProxy.getBlobName(exchange);
 
         if (ObjectHelper.isEmpty(blobName)) {
             throw new IllegalArgumentException("Blob name must be specified");
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobUtils.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobUtils.java
index d5a3ae2..71321fc 100644
--- 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobUtils.java
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobUtils.java
@@ -48,17 +48,6 @@ public final class BlobUtils {
         return length;
     }
 
-    public static BlobCommonRequestOptions getCommonRequestOptions(final 
Exchange exchange) {
-        final BlobHttpHeaders blobHttpHeaders = 
BlobExchangeHeaders.getBlobHttpHeadersFromHeaders(exchange);
-        final Map<String, String> metadata = 
BlobExchangeHeaders.getMetadataFromHeaders(exchange);
-        final AccessTier accessTier = 
BlobExchangeHeaders.getAccessTierFromHeaders(exchange);
-        final BlobRequestConditions blobRequestConditions = 
BlobExchangeHeaders.getBlobRequestConditionsFromHeaders(exchange);
-        final Duration timeout = 
BlobExchangeHeaders.getTimeoutFromHeaders(exchange);
-        final byte[] contentMD5 = 
BlobExchangeHeaders.getContentMd5FromHeaders(exchange);
-
-        return new BlobCommonRequestOptions(blobHttpHeaders, metadata, 
accessTier, blobRequestConditions, contentMD5, timeout);
-    }
-
     public static String getContainerName(final BlobConfiguration 
configuration, final Exchange exchange) {
         return 
ObjectHelper.isEmpty(BlobExchangeHeaders.getBlobContainerNameFromHeaders(exchange))
 ? configuration.getContainerName()
                 : 
BlobExchangeHeaders.getBlobContainerNameFromHeaders(exchange);
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
index d165ffe..09b6fac 100644
--- 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperations.java
@@ -19,11 +19,12 @@ package 
org.apache.camel.component.azure.storage.blob.operations;
 import java.time.Duration;
 import java.util.Map;
 
-import com.azure.storage.blob.models.BlobListDetails;
 import com.azure.storage.blob.models.BlobRequestConditions;
 import com.azure.storage.blob.models.ListBlobsOptions;
 import com.azure.storage.blob.models.PublicAccessType;
 import org.apache.camel.Exchange;
+import org.apache.camel.component.azure.storage.blob.BlobConfiguration;
+import 
org.apache.camel.component.azure.storage.blob.BlobConfigurationOptionsProxy;
 import org.apache.camel.component.azure.storage.blob.BlobExchangeHeaders;
 import 
org.apache.camel.component.azure.storage.blob.client.BlobContainerClientWrapper;
 import org.apache.camel.util.ObjectHelper;
@@ -34,11 +35,13 @@ import org.apache.camel.util.ObjectHelper;
 public class BlobContainerOperations {
 
     private final BlobContainerClientWrapper client;
+    private final BlobConfigurationOptionsProxy configurationProxy;
 
-    public BlobContainerOperations(final BlobContainerClientWrapper client) {
+    public BlobContainerOperations(final BlobConfiguration configuration, 
final BlobContainerClientWrapper client) {
         ObjectHelper.notNull(client, "client cannot be null");
 
         this.client = client;
+        this.configurationProxy = new 
BlobConfigurationOptionsProxy(configuration);
     }
 
     public BlobOperationResponse listBlobs(final Exchange exchange) {
@@ -46,8 +49,8 @@ public class BlobContainerOperations {
             return new BlobOperationResponse(client.listBlobs(new 
ListBlobsOptions(), null));
         }
 
-        final ListBlobsOptions listBlobOptions = getListBlobOptions(exchange);
-        final Duration timeout = 
BlobExchangeHeaders.getTimeoutFromHeaders(exchange);
+        final ListBlobsOptions listBlobOptions = 
configurationProxy.getListBlobOptions(exchange);
+        final Duration timeout = configurationProxy.getTimeout(exchange);
 
         return new BlobOperationResponse(client.listBlobs(listBlobOptions, 
timeout));
     }
@@ -58,9 +61,9 @@ public class BlobContainerOperations {
             return new BlobOperationResponse(true, 
blobExchangeHeaders.toMap());
         }
 
-        final Map<String, String> metadata = 
BlobExchangeHeaders.getMetadataFromHeaders(exchange);
-        final PublicAccessType publicAccessType = 
BlobExchangeHeaders.getPublicAccessTypeFromHeaders(exchange);
-        final Duration timeout = 
BlobExchangeHeaders.getTimeoutFromHeaders(exchange);
+        final Map<String, String> metadata = 
configurationProxy.getMetadata(exchange);
+        final PublicAccessType publicAccessType = 
configurationProxy.getPublicAccessType(exchange);
+        final Duration timeout = configurationProxy.getTimeout(exchange);
 
         final BlobExchangeHeaders blobExchangeHeaders = new 
BlobExchangeHeaders().httpHeaders(client.createContainer(metadata, 
publicAccessType, timeout));
 
@@ -73,31 +76,11 @@ public class BlobContainerOperations {
             return new BlobOperationResponse(true, 
blobExchangeHeaders.toMap());
         }
 
-        final BlobRequestConditions blobRequestConditions = 
BlobExchangeHeaders.getBlobRequestConditionsFromHeaders(exchange);
-        final Duration timeout = 
BlobExchangeHeaders.getTimeoutFromHeaders(exchange);
+        final BlobRequestConditions blobRequestConditions = 
configurationProxy.getBlobRequestConditions(exchange);
+        final Duration timeout = configurationProxy.getTimeout(exchange);
 
         final BlobExchangeHeaders blobExchangeHeaders = new 
BlobExchangeHeaders().httpHeaders(client.deleteContainer(blobRequestConditions, 
timeout));
 
         return new BlobOperationResponse(true, blobExchangeHeaders.toMap());
     }
-
-    private ListBlobsOptions getListBlobOptions(final Exchange exchange) {
-        ListBlobsOptions blobsOptions = 
BlobExchangeHeaders.getListBlobsOptionsFromHeaders(exchange);
-
-        if (!ObjectHelper.isEmpty(blobsOptions)) {
-            return blobsOptions;
-        } else {
-            blobsOptions = new ListBlobsOptions();
-        }
-
-        final BlobListDetails blobListDetails = 
BlobExchangeHeaders.getBlobListDetailsFromHeaders(exchange);
-        final String prefix = 
BlobExchangeHeaders.getPrefixFromHeaders(exchange);
-        final Integer maxResultsPerPage = 
BlobExchangeHeaders.getMaxResultsPerPageFromHeaders(exchange);
-
-        blobsOptions.setDetails(blobListDetails);
-        blobsOptions.setMaxResultsPerPage(maxResultsPerPage);
-        blobsOptions.setPrefix(prefix);
-
-        return blobsOptions;
-    }
 }
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java
index 3bc4ee8..e8ed5b9 100644
--- 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java
@@ -20,6 +20,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.time.Duration;
 import java.time.OffsetDateTime;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -30,10 +31,13 @@ import java.util.stream.Collectors;
 import com.azure.core.http.rest.Response;
 import com.azure.core.http.rest.ResponseBase;
 import com.azure.storage.blob.BlobClient;
+import com.azure.storage.blob.models.AccessTier;
 import com.azure.storage.blob.models.AppendBlobItem;
 import com.azure.storage.blob.models.BlobDownloadHeaders;
+import com.azure.storage.blob.models.BlobHttpHeaders;
 import com.azure.storage.blob.models.BlobProperties;
 import com.azure.storage.blob.models.BlobRange;
+import com.azure.storage.blob.models.BlobRequestConditions;
 import com.azure.storage.blob.models.Block;
 import com.azure.storage.blob.models.BlockBlobItem;
 import com.azure.storage.blob.models.BlockList;
@@ -50,10 +54,10 @@ import org.apache.camel.Exchange;
 import org.apache.camel.component.azure.storage.blob.BlobBlock;
 import org.apache.camel.component.azure.storage.blob.BlobCommonRequestOptions;
 import org.apache.camel.component.azure.storage.blob.BlobConfiguration;
+import 
org.apache.camel.component.azure.storage.blob.BlobConfigurationOptionsProxy;
 import org.apache.camel.component.azure.storage.blob.BlobConstants;
 import org.apache.camel.component.azure.storage.blob.BlobExchangeHeaders;
 import org.apache.camel.component.azure.storage.blob.BlobStreamAndLength;
-import org.apache.camel.component.azure.storage.blob.BlobType;
 import org.apache.camel.component.azure.storage.blob.BlobUtils;
 import org.apache.camel.component.azure.storage.blob.client.BlobClientWrapper;
 import org.apache.camel.util.ObjectHelper;
@@ -67,14 +71,14 @@ public class BlobOperations {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(BlobOperations.class);
 
-    private final BlobConfiguration configuration;
     private final BlobClientWrapper client;
+    private final BlobConfigurationOptionsProxy configurationProxy;
 
     public BlobOperations(final BlobConfiguration configuration, final 
BlobClientWrapper client) {
         ObjectHelper.notNull(client, "client can not be null.");
 
-        this.configuration = configuration;
         this.client = client;
+        this.configurationProxy = new 
BlobConfigurationOptionsProxy(configuration);
     }
 
     public BlobOperationResponse getBlob(final Exchange exchange) throws 
IOException {
@@ -85,11 +89,11 @@ public class BlobOperations {
             return new 
BlobOperationResponse(blobInputStream.get("inputStream"), 
blobExchangeHeaders.toMap());
         }
 
-        LOG.trace("Getting a blob [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Getting a blob [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
         final OutputStream outputStream = 
BlobUtils.getInMessage(exchange).getBody(OutputStream.class);
-        final BlobRange blobRange = getBlobRangeFromHeadersOrConfig(exchange, 
configuration);
-        final BlobCommonRequestOptions blobCommonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobRange blobRange = configurationProxy.getBlobRange(exchange);
+        final BlobCommonRequestOptions blobCommonRequestOptions = 
getCommonRequestOptions(exchange);
 
         if (outputStream == null) {
             // Then we create an input stream
@@ -99,7 +103,7 @@ public class BlobOperations {
             return new 
BlobOperationResponse(blobInputStream.get("inputStream"), 
blobExchangeHeaders.toMap());
         }
         // we have an outputStream set, so we use it
-        final DownloadRetryOptions downloadRetryOptions = 
getDownloadRetryOptions(configuration);
+        final DownloadRetryOptions downloadRetryOptions = 
getDownloadRetryOptions(configurationProxy);
 
         try {
             final ResponseBase<BlobDownloadHeaders, Void> response = 
client.downloadWithResponse(outputStream, blobRange, downloadRetryOptions, 
blobCommonRequestOptions.getBlobRequestConditions(),
@@ -110,7 +114,7 @@ public class BlobOperations {
 
             return new BlobOperationResponse(outputStream, 
blobExchangeHeaders.toMap());
         } finally {
-            if (configuration.isCloseStreamAfterRead()) {
+            if 
(configurationProxy.getConfiguration().isCloseStreamAfterRead()) {
                 outputStream.close();
             }
         }
@@ -118,7 +122,7 @@ public class BlobOperations {
 
     public BlobOperationResponse downloadBlobToFile(final Exchange exchange) {
         // check for fileDir
-        final String fileDir = 
ObjectHelper.isEmpty(BlobExchangeHeaders.getFileDirFromHeaders(exchange)) ? 
configuration.getFileDir() : 
BlobExchangeHeaders.getFileDirFromHeaders(exchange);
+        final String fileDir = configurationProxy.getFileDir(exchange);
         if (ObjectHelper.isEmpty(fileDir)) {
             throw new IllegalArgumentException("In order to download a blob, 
you will need to specify the fileDir in the URI");
         }
@@ -134,10 +138,10 @@ public class BlobOperations {
 
             return new BlobOperationResponse(fileToDownload, 
exchangeHeaders.toMap());
         }
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
-        final BlobRange blobRange = getBlobRangeFromHeadersOrConfig(exchange, 
configuration);
-        final ParallelTransferOptions parallelTransferOptions = 
BlobExchangeHeaders.getParallelTransferOptionsFromHeaders(exchange);
-        final DownloadRetryOptions downloadRetryOptions = 
getDownloadRetryOptions(configuration);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
+        final BlobRange blobRange = configurationProxy.getBlobRange(exchange);
+        final ParallelTransferOptions parallelTransferOptions = 
configurationProxy.getParallelTransferOptions(exchange);
+        final DownloadRetryOptions downloadRetryOptions = 
getDownloadRetryOptions(configurationProxy);
 
         final Response<BlobProperties> response = 
client.downloadToFileWithResponse(fileToDownload.toString(), blobRange, 
parallelTransferOptions, downloadRetryOptions,
                 commonRequestOptions.getBlobRequestConditions(), 
commonRequestOptions.getContentMD5() != null, 
commonRequestOptions.getTimeout());
@@ -154,8 +158,8 @@ public class BlobOperations {
             return buildResponse(client.delete(null, null, null), true);
         }
 
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
-        final DeleteSnapshotsOptionType deleteSnapshotsOptionType = 
BlobExchangeHeaders.getDeleteSnapshotsOptionTypeFromHeaders(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
+        final DeleteSnapshotsOptionType deleteSnapshotsOptionType = 
configurationProxy.getDeleteSnapshotsOptionType(exchange);
 
         return buildResponse(client.delete(deleteSnapshotsOptionType, 
commonRequestOptions.getBlobRequestConditions(),
                 commonRequestOptions.getTimeout()), true);
@@ -175,7 +179,7 @@ public class BlobOperations {
             return new BlobOperationResponse(true, headers.toMap());
         }
 
-        final Long expirationMillis = 
BlobExchangeHeaders.getDownloadLinkExpirationFromHeaders(exchange);
+        final Long expirationMillis = 
configurationProxy.getDownloadLinkExpiration(exchange);
         OffsetDateTime offsetDateTimeToSet;
         if (expirationMillis != null) {
             offsetDateTimeToSet = offsetDateTime.plusSeconds(expirationMillis 
/ 1000);
@@ -195,9 +199,9 @@ public class BlobOperations {
         ObjectHelper.notNull(exchange, "exchange cannot be null");
 
         final BlobStreamAndLength blobStreamAndLength = 
BlobStreamAndLength.createBlobStreamAndLengthFromExchangeBody(exchange);
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
 
-        LOG.trace("Putting a block blob [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Putting a block blob [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
         try {
             final Response<BlockBlobItem> response = 
client.uploadBlockBlob(blobStreamAndLength.getInputStream(), 
blobStreamAndLength.getStreamLength(), 
commonRequestOptions.getBlobHttpHeaders(),
@@ -226,9 +230,9 @@ public class BlobOperations {
             throw new IllegalArgumentException("Illegal storageBlocks 
payload");
         }
 
-        LOG.trace("Putting a blob [{}] from blocks from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Putting a blob [{}] from blocks from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
 
         final List<Block> blockEntries = new LinkedList<>();
 
@@ -238,7 +242,7 @@ public class BlobOperations {
                     commonRequestOptions.getContentMD5(), 
commonRequestOptions.leaseId(), commonRequestOptions.getTimeout());
         });
 
-        final boolean commitBlockListLater = 
BlobExchangeHeaders.getCommitBlockListFlagFromHeaders(exchange);
+        final boolean commitBlockListLater = 
configurationProxy.isCommitBlockListLater(exchange);
 
         if (!commitBlockListLater) {
             // let us commit now
@@ -265,9 +269,9 @@ public class BlobOperations {
             throw new IllegalArgumentException("Illegal commit block list 
payload");
         }
 
-        LOG.trace("Putting a blob [{}] block list from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Putting a blob [{}] block list from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
 
         final List<String> blockIds = blockEntries.stream()
                 .map(Block::getName)
@@ -286,10 +290,10 @@ public class BlobOperations {
             return buildResponse(response, false);
         }
 
-        LOG.trace("Getting the blob block list [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Getting the blob block list [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
-        final BlockListType blockListType = 
BlobExchangeHeaders.getBlockListTypeFromHeaders(exchange) == null ? 
BlockListType.COMMITTED : 
BlobExchangeHeaders.getBlockListTypeFromHeaders(exchange);
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlockListType blockListType = 
configurationProxy.getBlockListType(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
 
         final Response<BlockList> response = 
client.listBlobBlocks(blockListType, commonRequestOptions.leaseId(), 
commonRequestOptions.getTimeout());
 
@@ -303,9 +307,9 @@ public class BlobOperations {
             return buildResponse(response, true);
         }
 
-        LOG.trace("Creating an append blob [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Creating an append blob [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
 
         final Response<AppendBlobItem> response = 
client.createAppendBlob(commonRequestOptions.getBlobHttpHeaders(), 
commonRequestOptions.getMetadata(),
                 commonRequestOptions.getBlobRequestConditions(), 
commonRequestOptions.getTimeout());
@@ -316,8 +320,8 @@ public class BlobOperations {
     public BlobOperationResponse commitAppendBlob(final Exchange exchange) 
throws IOException {
         ObjectHelper.notNull(exchange, "exchange cannot be null");
 
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
-        final boolean createAppendBlob = 
BlobExchangeHeaders.getCreateAppendBlobFlagFromHeaders(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
+        final boolean createAppendBlob = 
configurationProxy.isCreateAppendBlob(exchange);
 
         if (createAppendBlob) {
             createAppendBlob(exchange);
@@ -341,11 +345,11 @@ public class BlobOperations {
             return buildResponse(response, true);
         }
 
-        LOG.trace("Creating a page blob [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Creating a page blob [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
         final Long pageSize = getPageBlobSize(exchange);
-        final BlobCommonRequestOptions requestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
-        final Long sequenceNumber = 
BlobExchangeHeaders.getBlobSequenceNumberFromHeaders(exchange);
+        final BlobCommonRequestOptions requestOptions = 
getCommonRequestOptions(exchange);
+        final Long sequenceNumber = 
configurationProxy.getBlobSequenceNumber(exchange);
 
         final Response<PageBlobItem> response = 
client.createPageBlob(pageSize, sequenceNumber, 
requestOptions.getBlobHttpHeaders(),
                 requestOptions.getMetadata(), 
requestOptions.getBlobRequestConditions(), requestOptions.getTimeout());
@@ -356,15 +360,15 @@ public class BlobOperations {
     public BlobOperationResponse uploadPageBlob(final Exchange exchange) 
throws IOException {
         ObjectHelper.notNull(exchange, "exchange cannot be null");
 
-        final boolean createPageBlob = 
BlobExchangeHeaders.getCreatePageBlobFlagFromHeaders(exchange);
+        final boolean createPageBlob = 
configurationProxy.isCreatePageBlob(exchange);
 
         if (createPageBlob) {
             createPageBlob(exchange);
         }
 
         final BlobStreamAndLength streamAndLength = 
BlobStreamAndLength.createBlobStreamAndLengthFromExchangeBody(exchange);
-        final BlobCommonRequestOptions requestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
-        final PageRange pageRange = 
BlobExchangeHeaders.getPageRangeFromHeaders(exchange);
+        final BlobCommonRequestOptions requestOptions = 
getCommonRequestOptions(exchange);
+        final PageRange pageRange = configurationProxy.getPageRange(exchange);
 
         if (pageRange == null) {
             throw new IllegalArgumentException("You need to set page range in 
the exchange headers.");
@@ -386,10 +390,10 @@ public class BlobOperations {
             return buildResponse(response, true);
         }
 
-        LOG.trace("Resizing a page blob [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Resizing a page blob [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
         final Long pageSize = getPageBlobSize(exchange);
-        final BlobCommonRequestOptions requestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobCommonRequestOptions requestOptions = 
getCommonRequestOptions(exchange);
 
         final Response<PageBlobItem> response = 
client.resizePageBlob(pageSize, requestOptions.getBlobRequestConditions(), 
requestOptions.getTimeout());
 
@@ -399,8 +403,8 @@ public class BlobOperations {
     public BlobOperationResponse clearPageBlob(final Exchange exchange) {
         ObjectHelper.notNull(exchange, "exchange cannot be null");
 
-        final PageRange pageRange = 
BlobExchangeHeaders.getPageRangeFromHeaders(exchange);
-        final BlobCommonRequestOptions requestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final PageRange pageRange = configurationProxy.getPageRange(exchange);
+        final BlobCommonRequestOptions requestOptions = 
getCommonRequestOptions(exchange);
 
         if (pageRange == null) {
             throw new IllegalArgumentException("You need to set page range in 
the exchange headers.");
@@ -414,18 +418,29 @@ public class BlobOperations {
     public BlobOperationResponse getPageBlobRanges(final Exchange exchange) {
         ObjectHelper.notNull(exchange, "exchange cannot be null");
 
-        final BlobRange blobRange = getBlobRangeFromHeadersOrConfig(exchange, 
configuration);
-        final BlobCommonRequestOptions commonRequestOptions = 
BlobUtils.getCommonRequestOptions(exchange);
+        final BlobRange blobRange = configurationProxy.getBlobRange(exchange);
+        final BlobCommonRequestOptions commonRequestOptions = 
getCommonRequestOptions(exchange);
 
-        LOG.trace("Getting the page blob ranges [{}] from exchange [{}]...", 
configuration.getBlobName(), exchange);
+        LOG.trace("Getting the page blob ranges [{}] from exchange [{}]...", 
configurationProxy.getBlobName(exchange), exchange);
 
         final Response<PageList> response = 
client.getPageBlobRanges(blobRange, 
commonRequestOptions.getBlobRequestConditions(), 
commonRequestOptions.getTimeout());
 
         return buildResponse(response, false);
     }
 
-    private DownloadRetryOptions getDownloadRetryOptions(final 
BlobConfiguration configuration) {
-        return new 
DownloadRetryOptions().setMaxRetryRequests(configuration.getMaxRetryRequests());
+    private DownloadRetryOptions getDownloadRetryOptions(final 
BlobConfigurationOptionsProxy configurationProxy) {
+        return new 
DownloadRetryOptions().setMaxRetryRequests(configurationProxy.getMaxRetryRequests());
+    }
+
+    private BlobCommonRequestOptions getCommonRequestOptions(final Exchange 
exchange) {
+        final BlobHttpHeaders blobHttpHeaders = 
configurationProxy.getBlobHttpHeaders(exchange);
+        final Map<String, String> metadata = 
configurationProxy.getMetadata(exchange);
+        final AccessTier accessTier = 
configurationProxy.getAccessTier(exchange);
+        final BlobRequestConditions blobRequestConditions = 
configurationProxy.getBlobRequestConditions(exchange);
+        final Duration timeout = configurationProxy.getTimeout(exchange);
+        final byte[] contentMD5 = configurationProxy.getContentMd5(exchange);
+
+        return new BlobCommonRequestOptions(blobHttpHeaders, metadata, 
accessTier, blobRequestConditions, contentMD5, timeout);
     }
 
     @SuppressWarnings("rawtypes")
@@ -450,30 +465,17 @@ public class BlobOperations {
         return new BlobOperationResponse(body, exchangeHeaders.toMap());
     }
 
-    private BlobRange getBlobRangeFromHeadersOrConfig(final Exchange exchange, 
final BlobConfiguration configuration) {
-        if (configuration.getBlobType() == BlobType.pageblob) {
-            final PageRange pageRange = 
BlobExchangeHeaders.getPageRangeFromHeaders(exchange);
-            if (pageRange != null) {
-                final long blobOffset = pageRange.getStart();
-                final long dataCount = pageRange.getEnd() - 
pageRange.getStart();
-
-                return new BlobRange(blobOffset, dataCount);
-            }
-        }
-        return new BlobRange(configuration.getBlobOffset(), 
configuration.getDataCount());
-    }
-
     private Long getPageBlobSize(final Exchange exchange) {
         if (exchange == null) {
             return BlobConstants.PAGE_BLOB_DEFAULT_SIZE;
         }
         // we try to get the size from the page range if exists
-        final PageRange pageRange = 
BlobExchangeHeaders.getPageRangeFromHeaders(exchange);
+        final PageRange pageRange = configurationProxy.getPageRange(exchange);
         if (pageRange != null) {
             return pageRange.getEnd() - pageRange.getStart() + 1; //e.g: 
1023-0+1 = 1024 size
         }
         // now we try the page size
-        final Long pageSize = BlobExchangeHeaders.getPageBlobSize(exchange);
+        final Long pageSize = configurationProxy.getPageBlobSize(exchange);
         if (pageSize != null) {
             return pageSize;
         }
@@ -481,7 +483,7 @@ public class BlobOperations {
     }
 
     private void closeInputStreamIfNeeded(InputStream inputStream) throws 
IOException {
-        if (configuration.isCloseStreamAfterWrite()) {
+        if (configurationProxy.getConfiguration().isCloseStreamAfterWrite()) {
             inputStream.close();
         }
     }
diff --git 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java
 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java
index 0a97b83..3439466 100644
--- 
a/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java
+++ 
b/components/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobServiceOperations.java
@@ -20,7 +20,8 @@ import java.time.Duration;
 
 import com.azure.storage.blob.models.ListBlobContainersOptions;
 import org.apache.camel.Exchange;
-import org.apache.camel.component.azure.storage.blob.BlobExchangeHeaders;
+import org.apache.camel.component.azure.storage.blob.BlobConfiguration;
+import 
org.apache.camel.component.azure.storage.blob.BlobConfigurationOptionsProxy;
 import 
org.apache.camel.component.azure.storage.blob.client.BlobServiceClientWrapper;
 import org.apache.camel.util.ObjectHelper;
 
@@ -30,19 +31,21 @@ import org.apache.camel.util.ObjectHelper;
 public class BlobServiceOperations {
 
     private final BlobServiceClientWrapper client;
+    private final BlobConfigurationOptionsProxy configurationProxy;
 
-    public BlobServiceOperations(final BlobServiceClientWrapper client) {
+    public BlobServiceOperations(final BlobConfiguration configuration, final 
BlobServiceClientWrapper client) {
         ObjectHelper.notNull(client, "client cannot be null");
 
         this.client = client;
+        this.configurationProxy = new 
BlobConfigurationOptionsProxy(configuration);
     }
 
     public BlobOperationResponse listBlobContainers(final Exchange exchange) {
         if (exchange == null) {
             return new BlobOperationResponse(client.listBlobContainers(null, 
null));
         }
-        final ListBlobContainersOptions listBlobContainersOptions = 
BlobExchangeHeaders.getListBlobContainersOptionsFromHeaders(exchange);
-        final Duration timeout = 
BlobExchangeHeaders.getTimeoutFromHeaders(exchange);
+        final ListBlobContainersOptions listBlobContainersOptions = 
configurationProxy.getListBlobContainersOptions(exchange);
+        final Duration timeout = configurationProxy.getTimeout(exchange);
 
         return new 
BlobOperationResponse(client.listBlobContainers(listBlobContainersOptions, 
timeout));
     }
diff --git 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java
 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java
new file mode 100644
index 0000000..df75009
--- /dev/null
+++ 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxyTest.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.azure.storage.blob;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.support.DefaultExchange;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+class BlobConfigurationOptionsProxyTest extends CamelTestSupport {
+
+    @Test
+    public void testIfCorrectOptionsReturnedCorrectly() {
+        final BlobConfiguration configuration = new BlobConfiguration();
+
+        // first case: when exchange is set
+        final Exchange exchange = new DefaultExchange(context);
+        final BlobConfigurationOptionsProxy configurationOptionsProxy = new 
BlobConfigurationOptionsProxy(configuration);
+
+        exchange.getIn().setHeader(BlobConstants.BLOB_NAME, 
"testBlobExchange");
+        configuration.setBlobName("testBlobConfig");
+
+        assertEquals("testBlobExchange", 
configurationOptionsProxy.getBlobName(exchange));
+
+        // second class: exchange is empty
+        exchange.getIn().setHeader(BlobConstants.BLOB_NAME, null);
+
+        assertEquals("testBlobConfig", 
configurationOptionsProxy.getBlobName(exchange));
+
+        // third class: if no option at all
+        configuration.setBlobName(null);
+
+        assertNull(configurationOptionsProxy.getBlobName(exchange));
+    }
+}
\ No newline at end of file
diff --git 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobProducerIT.java
 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobProducerIT.java
index 27a9f8a..149526b 100644
--- 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobProducerIT.java
+++ 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/BlobProducerIT.java
@@ -162,6 +162,15 @@ public class BlobProducerIT extends CamelTestSupport {
         
assertNotNull(result.getExchanges().get(0).getMessage().getHeader(BlobConstants.E_TAG));
     }
 
+    @Test
+    public void testUploadBlockBlobWithConfigUri() throws InterruptedException 
{
+        result.expectedMessageCount(1);
+
+        template.send("direct:uploadBlockBlobWithConfigUri", 
ExchangePattern.InOnly, exchange -> exchange.getIn().setBody("Block Blob"));
+
+        result.assertIsSatisfied();
+    }
+
 
     @AfterAll
     public void tearDown() {
@@ -196,6 +205,10 @@ public class BlobProducerIT extends CamelTestSupport {
                 from("direct:uploadPageBlob")
                         .to(componentUri("uploadPageBlob"))
                         .to(resultName);
+
+                from("direct:uploadBlockBlobWithConfigUri")
+                        .to(componentUri("uploadBlockBlob") + 
"&blobName=uploadBlockName")
+                        .to(resultName);
             }
         };
     }
diff --git 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsIT.java
 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsIT.java
index ac0798e..0f75958 100644
--- 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsIT.java
+++ 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsIT.java
@@ -60,7 +60,7 @@ public class BlobContainerOperationsIT extends 
CamelTestSupport {
     @Test
     public void testCreateAndDeleteContainer() {
         final BlobContainerClientWrapper containerClientWrapper = 
blobServiceClientWrapper.getBlobContainerClientWrapper("testcontainer1");
-        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(containerClientWrapper);
+        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(configuration, containerClientWrapper);
 
         final BlobOperationResponse response = 
blobContainerOperations.createContainer(null);
 
diff --git 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
index 2a89e12..4e23a28 100644
--- 
a/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
+++ 
b/components/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/operations/BlobContainerOperationsTest.java
@@ -58,7 +58,7 @@ class BlobContainerOperationsTest {
     public void testCreateContainer() {
         when(client.createContainer(any(), any(), 
any())).thenReturn(createContainerMock());
 
-        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(client);
+        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(configuration, client);
         final BlobOperationResponse response = 
blobContainerOperations.createContainer(null);
 
         assertNotNull(response);
@@ -70,7 +70,7 @@ class BlobContainerOperationsTest {
     public void testDeleteContainer() {
         when(client.deleteContainer(any(), 
any())).thenReturn(deleteContainerMock());
 
-        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(client);
+        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(configuration, client);
         final BlobOperationResponse response = 
blobContainerOperations.deleteContainer(null);
 
         assertNotNull(response);
@@ -82,7 +82,7 @@ class BlobContainerOperationsTest {
     public void testListBlob() {
         when(client.listBlobs(any(), any())).thenReturn(listBlobsMock());
 
-        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(client);
+        final BlobContainerOperations blobContainerOperations = new 
BlobContainerOperations(configuration, client);
         final BlobOperationResponse response = 
blobContainerOperations.listBlobs(null);
 
         assertNotNull(response);
diff --git 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
index 09078e8..c61e17a 100644
--- 
a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
+++ 
b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java
@@ -158,6 +158,21 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: common
+         */
+        default AzureStorageBlobComponentBuilder maxResultsPerPage(
+                java.lang.Integer maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
          * Specifies the maximum number of additional HTTP Get requests that
          * will be made while reading the data from a response body.
          * 
@@ -172,6 +187,18 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names begin with the
+         * specified prefix. May be null to return all blobs.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default AzureStorageBlobComponentBuilder prefix(java.lang.String 
prefix) {
+            doSetProperty("prefix", prefix);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way 
of
          * sending off appropriate requests to the resource on the service. It
@@ -193,6 +220,19 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option is a: <code>java.time.Duration</code> type.
+         * 
+         * Group: common
+         */
+        default AzureStorageBlobComponentBuilder timeout(
+                java.time.Duration timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
          * Allows for bridging the consumer to the Camel routing Error Handler,
          * which mean any exceptions occurred while the consumer is trying to
          * pickup incoming messages, or the likes, will now be processed as a
@@ -212,6 +252,35 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * A user-controlled value that you can use to track requests. The 
value
+         * of the sequence number must be between 0 and 263 - 1.The default
+         * value is 0.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Default: 0
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder blobSequenceNumber(
+                java.lang.Long blobSequenceNumber) {
+            doSetProperty("blobSequenceNumber", blobSequenceNumber);
+            return this;
+        }
+        /**
+         * Specifies which type of blocks to return.
+         * 
+         * The option is a:
+         * <code>com.azure.storage.blob.models.BlockListType</code> type.
+         * 
+         * Default: committed
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder blockListType(
+                com.azure.storage.blob.models.BlockListType blockListType) {
+            doSetProperty("blockListType", blockListType);
+            return this;
+        }
+        /**
          * Close the stream after write or keep it open, default is true.
          * 
          * The option is a: <code>boolean</code> type.
@@ -225,6 +294,60 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * When is set to true, the staged blocks will not be committed
+         * directly.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder commitBlockListLater(
+                boolean commitBlockListLater) {
+            doSetProperty("commitBlockListLater", commitBlockListLater);
+            return this;
+        }
+        /**
+         * When is set to true, the append blocks will be created when
+         * committing append blocks.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder createAppendBlob(
+                boolean createAppendBlob) {
+            doSetProperty("createAppendBlob", createAppendBlob);
+            return this;
+        }
+        /**
+         * When is set to true, the page blob will be created when uploading
+         * page blob.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder createPageBlob(
+                boolean createPageBlob) {
+            doSetProperty("createPageBlob", createPageBlob);
+            return this;
+        }
+        /**
+         * Override the default expiration (millis) of URL download link.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder downloadLinkExpiration(
+                java.lang.Long downloadLinkExpiration) {
+            doSetProperty("downloadLinkExpiration", downloadLinkExpiration);
+            return this;
+        }
+        /**
          * Whether the producer should be started lazy (on the first message).
          * By starting lazy you can use this to allow CamelContext and routes 
to
          * startup in situations where a producer may otherwise fail during
@@ -261,6 +384,20 @@ public interface AzureStorageBlobComponentBuilderFactory {
             return this;
         }
         /**
+         * Specifies the maximum size for the page blob, up to 8 TB. The page
+         * blob size must be aligned to a 512-byte boundary.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Default: 512
+         * Group: producer
+         */
+        default AzureStorageBlobComponentBuilder pageBlobSize(
+                java.lang.Long pageBlobSize) {
+            doSetProperty("pageBlobSize", pageBlobSize);
+            return this;
+        }
+        /**
          * Whether the component should use basic property binding (Camel 2.x)
          * or the newer property binding with additional capabilities.
          * 
@@ -319,12 +456,22 @@ public interface AzureStorageBlobComponentBuilderFactory {
             case "credentials": getOrCreateConfiguration((BlobComponent) 
component).setCredentials((com.azure.storage.common.StorageSharedKeyCredential) 
value); return true;
             case "dataCount": getOrCreateConfiguration((BlobComponent) 
component).setDataCount((java.lang.Long) value); return true;
             case "fileDir": getOrCreateConfiguration((BlobComponent) 
component).setFileDir((java.lang.String) value); return true;
+            case "maxResultsPerPage": getOrCreateConfiguration((BlobComponent) 
component).setMaxResultsPerPage((java.lang.Integer) value); return true;
             case "maxRetryRequests": getOrCreateConfiguration((BlobComponent) 
component).setMaxRetryRequests((int) value); return true;
+            case "prefix": getOrCreateConfiguration((BlobComponent) 
component).setPrefix((java.lang.String) value); return true;
             case "serviceClient": getOrCreateConfiguration((BlobComponent) 
component).setServiceClient((com.azure.storage.blob.BlobServiceClient) value); 
return true;
+            case "timeout": getOrCreateConfiguration((BlobComponent) 
component).setTimeout((java.time.Duration) value); return true;
             case "bridgeErrorHandler": ((BlobComponent) 
component).setBridgeErrorHandler((boolean) value); return true;
+            case "blobSequenceNumber": 
getOrCreateConfiguration((BlobComponent) 
component).setBlobSequenceNumber((java.lang.Long) value); return true;
+            case "blockListType": getOrCreateConfiguration((BlobComponent) 
component).setBlockListType((com.azure.storage.blob.models.BlockListType) 
value); return true;
             case "closeStreamAfterWrite": 
getOrCreateConfiguration((BlobComponent) 
component).setCloseStreamAfterWrite((boolean) value); return true;
+            case "commitBlockListLater": 
getOrCreateConfiguration((BlobComponent) 
component).setCommitBlockListLater((boolean) value); return true;
+            case "createAppendBlob": getOrCreateConfiguration((BlobComponent) 
component).setCreateAppendBlob((boolean) value); return true;
+            case "createPageBlob": getOrCreateConfiguration((BlobComponent) 
component).setCreatePageBlob((boolean) value); return true;
+            case "downloadLinkExpiration": 
getOrCreateConfiguration((BlobComponent) 
component).setDownloadLinkExpiration((java.lang.Long) value); return true;
             case "lazyStartProducer": ((BlobComponent) 
component).setLazyStartProducer((boolean) value); return true;
             case "operation": getOrCreateConfiguration((BlobComponent) 
component).setOperation((org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition)
 value); return true;
+            case "pageBlobSize": getOrCreateConfiguration((BlobComponent) 
component).setPageBlobSize((java.lang.Long) value); return true;
             case "basicPropertyBinding": ((BlobComponent) 
component).setBasicPropertyBinding((boolean) value); return true;
             case "accessKey": getOrCreateConfiguration((BlobComponent) 
component).setAccessKey((java.lang.String) value); return true;
             default: return false;
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index 422c709..ec4c1e7 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -2538,7 +2538,7 @@ public class StaticEndpointBuilders {
      * 
      * @param path containerName
      */
-    public static 
org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.BlobEndpointBuilder
 azureStorageBlob(
+    static 
org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.BlobEndpointBuilder
 azureStorageBlob(
             String path) {
         return 
org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.endpointBuilder("azure-storage-blob",
 path);
     }
@@ -2562,7 +2562,7 @@ public class StaticEndpointBuilders {
      * instead of the default name
      * @param path containerName
      */
-    public static 
org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.BlobEndpointBuilder
 azureStorageBlob(
+    static 
org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.BlobEndpointBuilder
 azureStorageBlob(
             String componentName,
             String path) {
         return 
org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.endpointBuilder(componentName,
 path);
diff --git 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
index 7113639..43f08cc 100644
--- 
a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.builder.endpoint.dsl;
 
+import java.time.Duration;
 import javax.annotation.Generated;
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.builder.EndpointConsumerBuilder;
@@ -243,6 +244,37 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointConsumerBuilder maxResultsPerPage(
+                Integer maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointConsumerBuilder maxResultsPerPage(
+                String maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
          * Specifies the maximum number of additional HTTP Get requests that
          * will be made while reading the data from a response body.
          * 
@@ -271,6 +303,18 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names begin with the
+         * specified prefix. May be null to return all blobs.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointConsumerBuilder prefix(String prefix) {
+            doSetProperty("prefix", prefix);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way 
of
          * sending off appropriate requests to the resource on the service. It
@@ -311,6 +355,31 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option is a: <code>java.time.Duration</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointConsumerBuilder timeout(Duration timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option will be converted to a <code>java.time.Duration</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointConsumerBuilder timeout(String timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
          * Allows for bridging the consumer to the Camel routing Error Handler,
          * which mean any exceptions occurred while the consumer is trying to
          * pickup incoming messages, or the likes, will now be processed as a
@@ -698,6 +767,37 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointProducerBuilder maxResultsPerPage(
+                Integer maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointProducerBuilder maxResultsPerPage(
+                String maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
          * Specifies the maximum number of additional HTTP Get requests that
          * will be made while reading the data from a response body.
          * 
@@ -726,6 +826,18 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names begin with the
+         * specified prefix. May be null to return all blobs.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointProducerBuilder prefix(String prefix) {
+            doSetProperty("prefix", prefix);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way 
of
          * sending off appropriate requests to the resource on the service. It
@@ -766,6 +878,88 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option is a: <code>java.time.Duration</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointProducerBuilder timeout(Duration timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option will be converted to a <code>java.time.Duration</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointProducerBuilder timeout(String timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
+         * A user-controlled value that you can use to track requests. The 
value
+         * of the sequence number must be between 0 and 263 - 1.The default
+         * value is 0.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Default: 0
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder blobSequenceNumber(
+                Long blobSequenceNumber) {
+            doSetProperty("blobSequenceNumber", blobSequenceNumber);
+            return this;
+        }
+        /**
+         * A user-controlled value that you can use to track requests. The 
value
+         * of the sequence number must be between 0 and 263 - 1.The default
+         * value is 0.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Default: 0
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder blobSequenceNumber(
+                String blobSequenceNumber) {
+            doSetProperty("blobSequenceNumber", blobSequenceNumber);
+            return this;
+        }
+        /**
+         * Specifies which type of blocks to return.
+         * 
+         * The option is a:
+         * <code>com.azure.storage.blob.models.BlockListType</code> type.
+         * 
+         * Default: committed
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder blockListType(
+                BlockListType blockListType) {
+            doSetProperty("blockListType", blockListType);
+            return this;
+        }
+        /**
+         * Specifies which type of blocks to return.
+         * 
+         * The option will be converted to a
+         * <code>com.azure.storage.blob.models.BlockListType</code> type.
+         * 
+         * Default: committed
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder blockListType(String 
blockListType) {
+            doSetProperty("blockListType", blockListType);
+            return this;
+        }
+        /**
          * Close the stream after write or keep it open, default is true.
          * 
          * The option is a: <code>boolean</code> type.
@@ -792,6 +986,113 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * When is set to true, the staged blocks will not be committed
+         * directly.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder commitBlockListLater(
+                boolean commitBlockListLater) {
+            doSetProperty("commitBlockListLater", commitBlockListLater);
+            return this;
+        }
+        /**
+         * When is set to true, the staged blocks will not be committed
+         * directly.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder commitBlockListLater(
+                String commitBlockListLater) {
+            doSetProperty("commitBlockListLater", commitBlockListLater);
+            return this;
+        }
+        /**
+         * When is set to true, the append blocks will be created when
+         * committing append blocks.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder createAppendBlob(
+                boolean createAppendBlob) {
+            doSetProperty("createAppendBlob", createAppendBlob);
+            return this;
+        }
+        /**
+         * When is set to true, the append blocks will be created when
+         * committing append blocks.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder createAppendBlob(
+                String createAppendBlob) {
+            doSetProperty("createAppendBlob", createAppendBlob);
+            return this;
+        }
+        /**
+         * When is set to true, the page blob will be created when uploading
+         * page blob.
+         * 
+         * The option is a: <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder createPageBlob(
+                boolean createPageBlob) {
+            doSetProperty("createPageBlob", createPageBlob);
+            return this;
+        }
+        /**
+         * When is set to true, the page blob will be created when uploading
+         * page blob.
+         * 
+         * The option will be converted to a <code>boolean</code> type.
+         * 
+         * Default: true
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder createPageBlob(String 
createPageBlob) {
+            doSetProperty("createPageBlob", createPageBlob);
+            return this;
+        }
+        /**
+         * Override the default expiration (millis) of URL download link.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder downloadLinkExpiration(
+                Long downloadLinkExpiration) {
+            doSetProperty("downloadLinkExpiration", downloadLinkExpiration);
+            return this;
+        }
+        /**
+         * Override the default expiration (millis) of URL download link.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder downloadLinkExpiration(
+                String downloadLinkExpiration) {
+            doSetProperty("downloadLinkExpiration", downloadLinkExpiration);
+            return this;
+        }
+        /**
          * Whether the producer should be started lazy (on the first message).
          * By starting lazy you can use this to allow CamelContext and routes 
to
          * startup in situations where a producer may otherwise fail during
@@ -863,6 +1164,32 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Specifies the maximum size for the page blob, up to 8 TB. The page
+         * blob size must be aligned to a 512-byte boundary.
+         * 
+         * The option is a: <code>java.lang.Long</code> type.
+         * 
+         * Default: 512
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder pageBlobSize(Long pageBlobSize) {
+            doSetProperty("pageBlobSize", pageBlobSize);
+            return this;
+        }
+        /**
+         * Specifies the maximum size for the page blob, up to 8 TB. The page
+         * blob size must be aligned to a 512-byte boundary.
+         * 
+         * The option will be converted to a <code>java.lang.Long</code> type.
+         * 
+         * Default: 512
+         * Group: producer
+         */
+        default BlobEndpointProducerBuilder pageBlobSize(String pageBlobSize) {
+            doSetProperty("pageBlobSize", pageBlobSize);
+            return this;
+        }
+        /**
          * Access key for the associated azure account name to be used for
          * authentication with azure blob services.
          * 
@@ -1153,6 +1480,35 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option is a: <code>java.lang.Integer</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointBuilder maxResultsPerPage(Integer 
maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
+         * Specifies the maximum number of blobs to return, including all
+         * BlobPrefix elements. If the request does not specify
+         * maxResultsPerPage or specifies a value greater than 5,000, the 
server
+         * will return up to 5,000 items.
+         * 
+         * The option will be converted to a <code>java.lang.Integer</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointBuilder maxResultsPerPage(String 
maxResultsPerPage) {
+            doSetProperty("maxResultsPerPage", maxResultsPerPage);
+            return this;
+        }
+        /**
          * Specifies the maximum number of additional HTTP Get requests that
          * will be made while reading the data from a response body.
          * 
@@ -1179,6 +1535,18 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * Filters the results to return only blobs whose names begin with the
+         * specified prefix. May be null to return all blobs.
+         * 
+         * The option is a: <code>java.lang.String</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointBuilder prefix(String prefix) {
+            doSetProperty("prefix", prefix);
+            return this;
+        }
+        /**
          * Client to a storage account. This client does not hold any state
          * about a particular storage account but is instead a convenient way 
of
          * sending off appropriate requests to the resource on the service. It
@@ -1219,6 +1587,31 @@ public interface BlobEndpointBuilderFactory {
             return this;
         }
         /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option is a: <code>java.time.Duration</code> type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointBuilder timeout(Duration timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
+         * An optional timeout value beyond which a RuntimeException will be
+         * raised.
+         * 
+         * The option will be converted to a <code>java.time.Duration</code>
+         * type.
+         * 
+         * Group: common
+         */
+        default BlobEndpointBuilder timeout(String timeout) {
+            doSetProperty("timeout", timeout);
+            return this;
+        }
+        /**
          * Access key for the associated azure account name to be used for
          * authentication with azure blob services.
          * 
@@ -1310,6 +1703,16 @@ public interface BlobEndpointBuilderFactory {
     }
 
     /**
+     * Proxy enum for <code>com.azure.storage.blob.models.BlockListType</code>
+     * enum.
+     */
+    enum BlockListType {
+        COMMITTED,
+        UNCOMMITTED,
+        ALL;
+    }
+
+    /**
      * Proxy enum for
      * 
<code>org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition</code>
 enum.
      */

Reply via email to