You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by oa...@apache.org on 2021/01/27 12:50:03 UTC

[camel-spring-boot] branch master updated: CAMEL-16087: Add azure datalake springboot starter (#270)

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-spring-boot.git


The following commit(s) were added to refs/heads/master by this push:
     new 146a2a6  CAMEL-16087: Add azure datalake springboot starter (#270)
146a2a6 is described below

commit 146a2a67b62e807c4f41379feb5f17fd9dc4fb38
Author: Omar Al-Safi <om...@gmail.com>
AuthorDate: Wed Jan 27 13:49:52 2021 +0100

    CAMEL-16087: Add azure datalake springboot starter (#270)
---
 .../camel/springboot/catalog/components.properties |   1 +
 .../catalog/components/azure-storage-datalake.json |  97 +++++
 components-starter/README.adoc                     |   4 +-
 .../camel-azure-storage-datalake-starter/pom.xml   |  53 +++
 .../main/docs/azure-storage-datalake-starter.adoc  |  64 +++
 .../DataLakeComponentAutoConfiguration.java        |  82 ++++
 .../springboot/DataLakeComponentConfiguration.java | 470 +++++++++++++++++++++
 .../springboot/DataLakeComponentConverter.java     |  71 ++++
 .../src/main/resources/META-INF/LICENSE.txt        | 203 +++++++++
 .../src/main/resources/META-INF/NOTICE.txt         |  11 +
 .../src/main/resources/META-INF/spring.factories   |  19 +
 .../src/main/resources/META-INF/spring.provides    |  17 +
 components-starter/pom.xml                         |   1 +
 .../ROOT/pages/azure-storage-datalake-starter.adoc |  64 +++
 docs/modules/ROOT/pages/list.adoc                  |   4 +-
 .../springboot/CamelAzureStorageDatalakeTest.java  |  47 +++
 .../itest/springboot/util/ArquillianPackager.java  |   3 +
 tooling/camel-spring-boot-bom/pom.xml              |   5 +
 tooling/camel-spring-boot-dependencies/pom.xml     |   5 +
 19 files changed, 1219 insertions(+), 2 deletions(-)

diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
index 19876b1..e6d00da 100644
--- a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
@@ -63,6 +63,7 @@ azure-blob
 azure-eventhubs
 azure-queue
 azure-storage-blob
+azure-storage-datalake
 azure-storage-queue
 bean
 bean-validator
diff --git a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/azure-storage-datalake.json b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/azure-storage-datalake.json
new file mode 100644
index 0000000..2922cd8
--- /dev/null
+++ b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/azure-storage-datalake.json
@@ -0,0 +1,97 @@
+{
+  "component": {
+    "kind": "component",
+    "name": "azure-storage-datalake",
+    "title": "Azure storage datalake service",
+    "description": "Camel Azure Datalake Gen2 Component",
+    "deprecated": false,
+    "firstVersion": "3.8.0",
+    "label": "cloud,file",
+    "javaType": "org.apache.camel.component.azure.storage.datalake.DataLakeComponent",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel.springboot",
+    "artifactId": "camel-azure-storage-datalake-starter",
+    "version": "3.8.0-SNAPSHOT",
+    "scheme": "azure-storage-datalake",
+    "extendsScheme": "",
+    "syntax": "azure-storage-datalake:accountName\/fileSystemName",
+    "async": false,
+    "api": false,
+    "consumerOnly": false,
+    "producerOnly": false,
+    "lenientProperties": false
+  },
+  "componentProperties": {
+    "accountKey": { "kind": "property", "displayName": "Account Key", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "account key for authentication" },
+    "clientId": { "kind": "property", "displayName": "Client Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "client id for azure account" },
+    "clientSecret": { "kind": "property", "displayName": "Client Secret", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "client secret for azure account" },
+    "clientSecretCredential": { "kind": "property", "displayName": "Client Secret Credential", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.identity.ClientSecretCredential", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "client secret credential for authentication" },
+    "close": { "kind": "property", "displayName": "Close", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "Whether or not a file changed event raised indicates completion (true) or modification (false)" },
+    "closeStreamAfterRead": { "kind": "property", "displayName": "Close Stream After Read", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "check for closing stream after read" },
+    "configuration": { "kind": "property", "displayName": "Configuration", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "deprecated": false, "autowired": false, "secret": false, "description": "configuration object for datalake" },
+    "dataCount": { "kind": "property", "displayName": "Data Count", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "count number of bytes to download" },
+    "directoryName": { "kind": "property", "displayName": "Directory Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "directory of the file to be handled in component" },
+    "downloadLinkExpiration": { "kind": "property", "displayName": "Download Link Expiration", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "download link expiration time" },
+    "expression": { "kind": "property", "displayName": "Expression", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "expression for queryInputStream" },
+    "fileDir": { "kind": "property", "displayName": "File Dir", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "directory of file to do operations in the local system" },
+    "fileName": { "kind": "property", "displayName": "File Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "name of file to be handled in component" },
+    "fileOffset": { "kind": "property", "displayName": "File Offset", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "offset position in file for different operations" },
+    "maxResults": { "kind": "property", "displayName": "Max Results", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "maximum number of results to show at a time" },
+    "maxRetryRequests": { "kind": "property", "displayName": "Max Retry Requests", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "no of retries to a given request" },
+    "openOptions": { "kind": "property", "displayName": "Open Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Set<java.nio.file.OpenOption>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "set open options for creating file" },
+    "path": { "kind": "property", "displayName": "Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "path in azure datalake for operations" },
+    "permission": { "kind": "property", "displayName": "Permission", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "permission string for the file" },
+    "position": { "kind": "property", "displayName": "Position", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "This parameter allows the caller to upload data in parallel and control the order in which it is appended to the file." },
+    "recursive": { "kind": "property", "displayName": "Recursive", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "recursively include all paths" },
+    "regex": { "kind": "property", "displayName": "Regex", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "regular expression for matching file names" },
+    "retainUncommitedData": { "kind": "property", "displayName": "Retain Uncommited Data", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "Whether or not uncommitted data is to be retained after the operation" },
+    "serviceClient": { "kind": "property", "displayName": "Service Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.file.datalake.DataLakeServiceClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "datalake service client for azure storage data [...]
+    "sharedKeyCredential": { "kind": "property", "displayName": "Shared Key Credential", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.common.StorageSharedKeyCredential", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "shared key credential for azure datalake gen2" },
+    "tenantId": { "kind": "property", "displayName": "Tenant Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "tenant id for azure account" },
+    "timeout": { "kind": "property", "displayName": "Timeout", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.time.Duration", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "Timeout for operation" },
+    "umask": { "kind": "property", "displayName": "Umask", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "umask permission for file" },
+    "userPrincipalNameReturned": { "kind": "property", "displayName": "User Principal Name Returned", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "whether or not to use upn" },
+    "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 me [...]
+    "lazyStartProducer": { "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 star [...]
+    "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.azure.storage.datalake.DataLakeOperationsDefinition", "enum": [ "listFileSystem", "listFiles" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listFileSystem", "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField" [...]
+    "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...]
+  },
+  "properties": {
+    "accountName": { "kind": "path", "displayName": "Account Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "name of the azure account" },
+    "fileSystemName": { "kind": "path", "displayName": "File System Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "name of filesystem to be used" },
+    "accountKey": { "kind": "parameter", "displayName": "Account Key", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "account key for authentication" },
+    "clientId": { "kind": "parameter", "displayName": "Client Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "client id for azure account" },
+    "clientSecret": { "kind": "parameter", "displayName": "Client Secret", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "client secret for azure account" },
+    "clientSecretCredential": { "kind": "parameter", "displayName": "Client Secret Credential", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.identity.ClientSecretCredential", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "client secret credential for authentication" },
+    "close": { "kind": "parameter", "displayName": "Close", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "Whether or not a file changed event raised indicates completion (true) or modification (false)" },
+    "closeStreamAfterRead": { "kind": "parameter", "displayName": "Close Stream After Read", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "check for closing stream after read" },
+    "dataCount": { "kind": "parameter", "displayName": "Data Count", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "count number of bytes to download" },
+    "dataLakeServiceClient": { "kind": "parameter", "displayName": "Data Lake Service Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.file.datalake.DataLakeServiceClient", "deprecated": false, "autowired": false, "secret": false, "description": "service client of datalake" },
+    "directoryName": { "kind": "parameter", "displayName": "Directory Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "directory of the file to be handled in component" },
+    "downloadLinkExpiration": { "kind": "parameter", "displayName": "Download Link Expiration", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "download link expiration time" },
+    "expression": { "kind": "parameter", "displayName": "Expression", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "expression for queryInputStream" },
+    "fileDir": { "kind": "parameter", "displayName": "File Dir", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "directory of file to do operations in the local system" },
+    "fileName": { "kind": "parameter", "displayName": "File Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "name of file to be handled in component" },
+    "fileOffset": { "kind": "parameter", "displayName": "File Offset", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "offset position in file for different operations" },
+    "maxResults": { "kind": "parameter", "displayName": "Max Results", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "maximum number of results to show at a time" },
+    "maxRetryRequests": { "kind": "parameter", "displayName": "Max Retry Requests", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "no of retries to a given request" },
+    "openOptions": { "kind": "parameter", "displayName": "Open Options", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.util.Set<java.nio.file.OpenOption>", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "set open options for creating file" },
+    "path": { "kind": "parameter", "displayName": "Path", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "path in azure datalake for operations" },
+    "permission": { "kind": "parameter", "displayName": "Permission", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "permission string for the file" },
+    "position": { "kind": "parameter", "displayName": "Position", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "This parameter allows the caller to upload data in parallel and control the order in which it is appended to the file." },
+    "recursive": { "kind": "parameter", "displayName": "Recursive", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "recursively include all paths" },
+    "regex": { "kind": "parameter", "displayName": "Regex", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "regular expression for matching file names" },
+    "retainUncommitedData": { "kind": "parameter", "displayName": "Retain Uncommited Data", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "Whether or not uncommitted data is to be retained after the operation" },
+    "serviceClient": { "kind": "parameter", "displayName": "Service Client", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.file.datalake.DataLakeServiceClient", "deprecated": false, "deprecationNote": "", "autowired": true, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "datalake service client for azure storage dat [...]
+    "sharedKeyCredential": { "kind": "parameter", "displayName": "Shared Key Credential", "group": "common", "label": "", "required": false, "type": "object", "javaType": "com.azure.storage.common.StorageSharedKeyCredential", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "shared key credential for azure datalake gen2" },
+    "tenantId": { "kind": "parameter", "displayName": "Tenant Id", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "tenant id for azure account" },
+    "timeout": { "kind": "parameter", "displayName": "Timeout", "group": "common", "label": "", "required": false, "type": "object", "javaType": "java.time.Duration", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "Timeout for operation" },
+    "umask": { "kind": "parameter", "displayName": "Umask", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "umask permission for file" },
+    "userPrincipalNameReturned": { "kind": "parameter", "displayName": "User Principal Name Returned", "group": "common", "label": "", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField": "configuration", "description": "whether or not to use upn" },
+    "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 m [...]
+    "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, "autowired": 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 con [...]
+    "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, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." },
+    "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": 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 sta [...]
+    "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.azure.storage.datalake.DataLakeOperationsDefinition", "enum": [ "listFileSystem", "listFiles" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listFileSystem", "configurationClass": "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration", "configurationField [...]
+  }
+}
diff --git a/components-starter/README.adoc b/components-starter/README.adoc
index dbbdcf9..1acec45 100644
--- a/components-starter/README.adoc
+++ b/components-starter/README.adoc
@@ -5,7 +5,7 @@ Apache Camel Spring Boot supports the following Camel artifacts as Spring Boot S
 == Camel Components
 
 // components: START
-Number of Camel components: 344 in 277 JAR artifacts (3 deprecated)
+Number of Camel components: 345 in 278 JAR artifacts (3 deprecated)
 
 [width="100%",cols="4,3,3,3,6",options="header"]
 |===
@@ -137,6 +137,8 @@ Number of Camel components: 344 in 277 JAR artifacts (3 deprecated)
 
 | xref:latest@components::azure-blob-component.adoc[Azure Storage Blob Service (Deprecated)] | camel-azure-starter | Stable | 2.19 | *deprecated* Store and retrieve blobs from Azure Storage Blob Service.
 
+| xref:latest@components::azure-storage-datalake-component.adoc[Azure storage datalake service] | camel-azure-storage-datalake-starter | Preview | 3.8 | Camel Azure Datalake Gen2 Component
+
 | xref:latest@components::azure-storage-queue-component.adoc[Azure Storage Queue Service] | camel-azure-storage-queue-starter | Stable | 3.3 | The azure-storage-queue component is used for storing and retrieving the messages to/from Azure Storage Queue using Azure SDK v12.
 
 | xref:latest@components::azure-queue-component.adoc[Azure Storage Queue Service (Deprecated)] | camel-azure-starter | Stable | 2.19 | *deprecated* Store and retrieve messages from Azure Storage Queue Service.
diff --git a/components-starter/camel-azure-storage-datalake-starter/pom.xml b/components-starter/camel-azure-storage-datalake-starter/pom.xml
new file mode 100644
index 0000000..279ccea
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/pom.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.camel.springboot</groupId>
+    <artifactId>components-starter</artifactId>
+    <version>3.8.0-SNAPSHOT</version>
+  </parent>
+  <artifactId>camel-azure-storage-datalake-starter</artifactId>
+  <packaging>jar</packaging>
+  <name>Camel SB Starters :: Azure Storage Datalake</name>
+  <description>Spring-Boot Starter for Camel Support for Azure Storage Datalake Service</description>
+  <dependencies>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+      <version>${spring-boot-version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-azure-storage-datalake</artifactId>
+      <version>${camel-version}</version>
+    </dependency>
+    <!--START OF GENERATED CODE-->
+    <dependency>
+      <groupId>org.apache.camel.springboot</groupId>
+      <artifactId>camel-core-starter</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel.springboot</groupId>
+      <artifactId>camel-spring-boot-starter</artifactId>
+    </dependency>
+    <!--END OF GENERATED CODE-->
+  </dependencies>
+</project>
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/docs/azure-storage-datalake-starter.adoc b/components-starter/camel-azure-storage-datalake-starter/src/main/docs/azure-storage-datalake-starter.adoc
new file mode 100644
index 0000000..d50dd75
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/docs/azure-storage-datalake-starter.adoc
@@ -0,0 +1,64 @@
+// spring-boot-auto-configure options: START
+:page-partial:
+:doctitle: Camel Spring Boot Starter for azure-storage-datalake
+
+== Spring Boot Auto-Configuration
+
+When using azure-storage-datalake with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.springboot</groupId>
+  <artifactId>camel-azure-storage-datalake-starter</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+
+The component supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.azure-storage-datalake.account-key* | account key for authentication |  | String
+| *camel.component.azure-storage-datalake.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean
+| *camel.component.azure-storage-datalake.bridge-error-handler* | 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
+| *camel.component.azure-storage-datalake.client-id* | client id for azure account |  | String
+| *camel.component.azure-storage-datalake.client-secret* | client secret for azure account |  | String
+| *camel.component.azure-storage-datalake.client-secret-credential* | client secret credential for authentication. The option is a com.azure.identity.ClientSecretCredential type. |  | ClientSecretCredential
+| *camel.component.azure-storage-datalake.close* | Whether or not a file changed event raised indicates completion (true) or modification (false) |  | Boolean
+| *camel.component.azure-storage-datalake.close-stream-after-read* | check for closing stream after read |  | Boolean
+| *camel.component.azure-storage-datalake.configuration* | configuration object for datalake. The option is a org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration type. |  | DataLakeConfiguration
+| *camel.component.azure-storage-datalake.data-count* | count number of bytes to download |  | Long
+| *camel.component.azure-storage-datalake.directory-name* | directory of the file to be handled in component |  | String
+| *camel.component.azure-storage-datalake.download-link-expiration* | download link expiration time |  | Long
+| *camel.component.azure-storage-datalake.enabled* | Whether to enable auto configuration of the azure-storage-datalake component. This is enabled by default. |  | Boolean
+| *camel.component.azure-storage-datalake.expression* | expression for queryInputStream |  | String
+| *camel.component.azure-storage-datalake.file-dir* | directory of file to do operations in the local system |  | String
+| *camel.component.azure-storage-datalake.file-name* | name of file to be handled in component |  | String
+| *camel.component.azure-storage-datalake.file-offset* | offset position in file for different operations |  | Long
+| *camel.component.azure-storage-datalake.lazy-start-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  [...]
+| *camel.component.azure-storage-datalake.max-results* | maximum number of results to show at a time |  | Integer
+| *camel.component.azure-storage-datalake.max-retry-requests* | no of retries to a given request |  | Integer
+| *camel.component.azure-storage-datalake.open-options* | set open options for creating file |  | Set
+| *camel.component.azure-storage-datalake.operation* | operation to be performed |  | DataLakeOperationsDefinition
+| *camel.component.azure-storage-datalake.path* | path in azure datalake for operations |  | String
+| *camel.component.azure-storage-datalake.permission* | permission string for the file |  | String
+| *camel.component.azure-storage-datalake.position* | This parameter allows the caller to upload data in parallel and control the order in which it is appended to the file. |  | Long
+| *camel.component.azure-storage-datalake.recursive* | recursively include all paths |  | Boolean
+| *camel.component.azure-storage-datalake.regex* | regular expression for matching file names |  | String
+| *camel.component.azure-storage-datalake.retain-uncommited-data* | Whether or not uncommitted data is to be retained after the operation |  | Boolean
+| *camel.component.azure-storage-datalake.service-client* | datalake service client for azure storage datalake. The option is a com.azure.storage.file.datalake.DataLakeServiceClient type. |  | DataLakeServiceClient
+| *camel.component.azure-storage-datalake.shared-key-credential* | shared key credential for azure datalake gen2. The option is a com.azure.storage.common.StorageSharedKeyCredential type. |  | StorageSharedKeyCredential
+| *camel.component.azure-storage-datalake.tenant-id* | tenant id for azure account |  | String
+| *camel.component.azure-storage-datalake.timeout* | Timeout for operation. The option is a java.time.Duration type. |  | Duration
+| *camel.component.azure-storage-datalake.umask* | umask permission for file |  | String
+| *camel.component.azure-storage-datalake.user-principal-name-returned* | whether or not to use upn |  | Boolean
+|===
+
+
+// spring-boot-auto-configure options: END
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentAutoConfiguration.java b/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentAutoConfiguration.java
new file mode 100644
index 0000000..00bbbdb
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentAutoConfiguration.java
@@ -0,0 +1,82 @@
+/*
+ * 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.datalake.springboot;
+
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.component.azure.storage.datalake.DataLakeComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
+import org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.ConditionalOnHierarchicalProperties;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.convert.ApplicationConversionService;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.springboot.maven.SpringBootAutoConfigurationMojo")
+@Configuration(proxyBeanMethods = false)
+@AutoConfigureAfter(CamelAutoConfiguration.class)
+@Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,DataLakeComponentConfiguration.class})
+@ConditionalOnHierarchicalProperties({"camel.component", "camel.component.azure-storage-datalake"})
+public class DataLakeComponentAutoConfiguration {
+
+    @Autowired
+    private ApplicationContext applicationContext;
+    private final CamelContext camelContext;
+    @Autowired
+    private DataLakeComponentConfiguration configuration;
+
+    public DataLakeComponentAutoConfiguration(
+            org.apache.camel.CamelContext camelContext) {
+        this.camelContext = camelContext;
+        ApplicationConversionService acs = (ApplicationConversionService) ApplicationConversionService.getSharedInstance();
+        acs.addConverter(new DataLakeComponentConverter(camelContext));
+    }
+
+    @Lazy
+    @Bean
+    public ComponentCustomizer configureDataLakeComponent() {
+        return new ComponentCustomizer() {
+            @Override
+            public void configure(String name, Component target) {
+                CamelPropertiesHelper.copyProperties(camelContext, configuration, target);
+            }
+            @Override
+            public boolean isEnabled(String name, Component target) {
+                return HierarchicalPropertiesEvaluator.evaluate(
+                        applicationContext,
+                        "camel.component.customizer",
+                        "camel.component.azure-storage-datalake.customizer")
+                    && target instanceof DataLakeComponent;
+            }
+        };
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentConfiguration.java b/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentConfiguration.java
new file mode 100644
index 0000000..34dc05c
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentConfiguration.java
@@ -0,0 +1,470 @@
+/*
+ * 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.datalake.springboot;
+
+import java.nio.file.OpenOption;
+import java.time.Duration;
+import java.util.Set;
+import javax.annotation.Generated;
+import com.azure.identity.ClientSecretCredential;
+import com.azure.storage.common.StorageSharedKeyCredential;
+import com.azure.storage.file.datalake.DataLakeServiceClient;
+import org.apache.camel.component.azure.storage.datalake.DataLakeComponent;
+import org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration;
+import org.apache.camel.component.azure.storage.datalake.DataLakeOperationsDefinition;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Camel Azure Datalake Gen2 Component
+ * 
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.springboot.maven.SpringBootAutoConfigurationMojo")
+@ConfigurationProperties(prefix = "camel.component.azure-storage-datalake")
+public class DataLakeComponentConfiguration
+        extends
+            ComponentConfigurationPropertiesCommon {
+
+    /**
+     * Whether to enable auto configuration of the azure-storage-datalake
+     * component. This is enabled by default.
+     */
+    private Boolean enabled;
+    /**
+     * account key for authentication
+     */
+    private String accountKey;
+    /**
+     * client id for azure account
+     */
+    private String clientId;
+    /**
+     * client secret for azure account
+     */
+    private String clientSecret;
+    /**
+     * client secret credential for authentication. The option is a
+     * com.azure.identity.ClientSecretCredential type.
+     */
+    private ClientSecretCredential clientSecretCredential;
+    /**
+     * Whether or not a file changed event raised indicates completion (true) or
+     * modification (false)
+     */
+    private Boolean close;
+    /**
+     * check for closing stream after read
+     */
+    private Boolean closeStreamAfterRead;
+    /**
+     * configuration object for datalake. The option is a
+     * org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration
+     * type.
+     */
+    private DataLakeConfiguration configuration;
+    /**
+     * count number of bytes to download
+     */
+    private Long dataCount;
+    /**
+     * directory of the file to be handled in component
+     */
+    private String directoryName;
+    /**
+     * download link expiration time
+     */
+    private Long downloadLinkExpiration;
+    /**
+     * expression for queryInputStream
+     */
+    private String expression;
+    /**
+     * directory of file to do operations in the local system
+     */
+    private String fileDir;
+    /**
+     * name of file to be handled in component
+     */
+    private String fileName;
+    /**
+     * offset position in file for different operations
+     */
+    private Long fileOffset;
+    /**
+     * maximum number of results to show at a time
+     */
+    private Integer maxResults;
+    /**
+     * no of retries to a given request
+     */
+    private Integer maxRetryRequests;
+    /**
+     * set open options for creating file
+     */
+    private Set<OpenOption> openOptions;
+    /**
+     * path in azure datalake for operations
+     */
+    private String path;
+    /**
+     * permission string for the file
+     */
+    private String permission;
+    /**
+     * This parameter allows the caller to upload data in parallel and control
+     * the order in which it is appended to the file.
+     */
+    private Long position;
+    /**
+     * recursively include all paths
+     */
+    private Boolean recursive;
+    /**
+     * regular expression for matching file names
+     */
+    private String regex;
+    /**
+     * Whether or not uncommitted data is to be retained after the operation
+     */
+    private Boolean retainUncommitedData;
+    /**
+     * datalake service client for azure storage datalake. The option is a
+     * com.azure.storage.file.datalake.DataLakeServiceClient type.
+     */
+    private DataLakeServiceClient serviceClient;
+    /**
+     * shared key credential for azure datalake gen2. The option is a
+     * com.azure.storage.common.StorageSharedKeyCredential type.
+     */
+    private StorageSharedKeyCredential sharedKeyCredential;
+    /**
+     * tenant id for azure account
+     */
+    private String tenantId;
+    /**
+     * Timeout for operation. The option is a java.time.Duration type.
+     */
+    private Duration timeout;
+    /**
+     * umask permission for file
+     */
+    private String umask;
+    /**
+     * whether or not to use upn
+     */
+    private Boolean userPrincipalNameReturned;
+    /**
+     * 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.
+     */
+    private Boolean bridgeErrorHandler = false;
+    /**
+     * 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 starting the producer may take a little time
+     * and prolong the total processing time of the processing.
+     */
+    private Boolean lazyStartProducer = false;
+    /**
+     * operation to be performed
+     */
+    private DataLakeOperationsDefinition operation = DataLakeOperationsDefinition.listFileSystem;
+    /**
+     * Whether autowiring is enabled. This is used for automatic autowiring
+     * options (the option must be marked as autowired) by looking up in the
+     * registry to find if there is a single instance of matching type, which
+     * then gets configured on the component. This can be used for automatic
+     * configuring JDBC data sources, JMS connection factories, AWS Clients,
+     * etc.
+     */
+    private Boolean autowiredEnabled = true;
+
+    public String getAccountKey() {
+        return accountKey;
+    }
+
+    public void setAccountKey(String accountKey) {
+        this.accountKey = accountKey;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    public ClientSecretCredential getClientSecretCredential() {
+        return clientSecretCredential;
+    }
+
+    public void setClientSecretCredential(
+            ClientSecretCredential clientSecretCredential) {
+        this.clientSecretCredential = clientSecretCredential;
+    }
+
+    public Boolean getClose() {
+        return close;
+    }
+
+    public void setClose(Boolean close) {
+        this.close = close;
+    }
+
+    public Boolean getCloseStreamAfterRead() {
+        return closeStreamAfterRead;
+    }
+
+    public void setCloseStreamAfterRead(Boolean closeStreamAfterRead) {
+        this.closeStreamAfterRead = closeStreamAfterRead;
+    }
+
+    public DataLakeConfiguration getConfiguration() {
+        return configuration;
+    }
+
+    public void setConfiguration(DataLakeConfiguration configuration) {
+        this.configuration = configuration;
+    }
+
+    public Long getDataCount() {
+        return dataCount;
+    }
+
+    public void setDataCount(Long dataCount) {
+        this.dataCount = dataCount;
+    }
+
+    public String getDirectoryName() {
+        return directoryName;
+    }
+
+    public void setDirectoryName(String directoryName) {
+        this.directoryName = directoryName;
+    }
+
+    public Long getDownloadLinkExpiration() {
+        return downloadLinkExpiration;
+    }
+
+    public void setDownloadLinkExpiration(Long downloadLinkExpiration) {
+        this.downloadLinkExpiration = downloadLinkExpiration;
+    }
+
+    public String getExpression() {
+        return expression;
+    }
+
+    public void setExpression(String expression) {
+        this.expression = expression;
+    }
+
+    public String getFileDir() {
+        return fileDir;
+    }
+
+    public void setFileDir(String fileDir) {
+        this.fileDir = fileDir;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public Long getFileOffset() {
+        return fileOffset;
+    }
+
+    public void setFileOffset(Long fileOffset) {
+        this.fileOffset = fileOffset;
+    }
+
+    public Integer getMaxResults() {
+        return maxResults;
+    }
+
+    public void setMaxResults(Integer maxResults) {
+        this.maxResults = maxResults;
+    }
+
+    public Integer getMaxRetryRequests() {
+        return maxRetryRequests;
+    }
+
+    public void setMaxRetryRequests(Integer maxRetryRequests) {
+        this.maxRetryRequests = maxRetryRequests;
+    }
+
+    public Set<OpenOption> getOpenOptions() {
+        return openOptions;
+    }
+
+    public void setOpenOptions(Set<OpenOption> openOptions) {
+        this.openOptions = openOptions;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public String getPermission() {
+        return permission;
+    }
+
+    public void setPermission(String permission) {
+        this.permission = permission;
+    }
+
+    public Long getPosition() {
+        return position;
+    }
+
+    public void setPosition(Long position) {
+        this.position = position;
+    }
+
+    public Boolean getRecursive() {
+        return recursive;
+    }
+
+    public void setRecursive(Boolean recursive) {
+        this.recursive = recursive;
+    }
+
+    public String getRegex() {
+        return regex;
+    }
+
+    public void setRegex(String regex) {
+        this.regex = regex;
+    }
+
+    public Boolean getRetainUncommitedData() {
+        return retainUncommitedData;
+    }
+
+    public void setRetainUncommitedData(Boolean retainUncommitedData) {
+        this.retainUncommitedData = retainUncommitedData;
+    }
+
+    public DataLakeServiceClient getServiceClient() {
+        return serviceClient;
+    }
+
+    public void setServiceClient(DataLakeServiceClient serviceClient) {
+        this.serviceClient = serviceClient;
+    }
+
+    public StorageSharedKeyCredential getSharedKeyCredential() {
+        return sharedKeyCredential;
+    }
+
+    public void setSharedKeyCredential(
+            StorageSharedKeyCredential sharedKeyCredential) {
+        this.sharedKeyCredential = sharedKeyCredential;
+    }
+
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public Duration getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(Duration timeout) {
+        this.timeout = timeout;
+    }
+
+    public String getUmask() {
+        return umask;
+    }
+
+    public void setUmask(String umask) {
+        this.umask = umask;
+    }
+
+    public Boolean getUserPrincipalNameReturned() {
+        return userPrincipalNameReturned;
+    }
+
+    public void setUserPrincipalNameReturned(Boolean userPrincipalNameReturned) {
+        this.userPrincipalNameReturned = userPrincipalNameReturned;
+    }
+
+    public Boolean getBridgeErrorHandler() {
+        return bridgeErrorHandler;
+    }
+
+    public void setBridgeErrorHandler(Boolean bridgeErrorHandler) {
+        this.bridgeErrorHandler = bridgeErrorHandler;
+    }
+
+    public Boolean getLazyStartProducer() {
+        return lazyStartProducer;
+    }
+
+    public void setLazyStartProducer(Boolean lazyStartProducer) {
+        this.lazyStartProducer = lazyStartProducer;
+    }
+
+    public DataLakeOperationsDefinition getOperation() {
+        return operation;
+    }
+
+    public void setOperation(DataLakeOperationsDefinition operation) {
+        this.operation = operation;
+    }
+
+    public Boolean getAutowiredEnabled() {
+        return autowiredEnabled;
+    }
+
+    public void setAutowiredEnabled(Boolean autowiredEnabled) {
+        this.autowiredEnabled = autowiredEnabled;
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentConverter.java b/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentConverter.java
new file mode 100644
index 0000000..c19f59f
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/java/org/apache/camel/component/azure/storage/datalake/springboot/DataLakeComponentConverter.java
@@ -0,0 +1,71 @@
+/*
+ * 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.datalake.springboot;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import javax.annotation.Generated;
+import org.apache.camel.CamelContext;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.converter.GenericConverter;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Generated("org.apache.camel.springboot.maven.SpringBootAutoConfigurationMojo")
+public class DataLakeComponentConverter
+        implements
+            org.springframework.core.convert.converter.GenericConverter {
+
+    private final CamelContext camelContext;
+
+    public DataLakeComponentConverter(org.apache.camel.CamelContext camelContext) {
+        this.camelContext = camelContext;
+    }
+
+    public Set<ConvertiblePair> getConvertibleTypes() {
+        Set<ConvertiblePair> answer = new LinkedHashSet<>();
+        answer.add(new ConvertiblePair(String.class, com.azure.identity.ClientSecretCredential.class));
+        answer.add(new ConvertiblePair(String.class, org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration.class));
+        answer.add(new ConvertiblePair(String.class, com.azure.storage.file.datalake.DataLakeServiceClient.class));
+        answer.add(new ConvertiblePair(String.class, com.azure.storage.common.StorageSharedKeyCredential.class));
+        answer.add(new ConvertiblePair(String.class, java.time.Duration.class));
+        return answer;
+    }
+
+    public Object convert(
+            Object source,
+            TypeDescriptor sourceType,
+            TypeDescriptor targetType) {
+        if (source == null) {
+            return null;
+        }
+        String ref = source.toString();
+        if (!ref.startsWith("#")) {
+            return null;
+        }
+        ref = ref.startsWith("#bean:") ? ref.substring(6) : ref.substring(1);
+        switch (targetType.getName()) {
+            case "com.azure.identity.ClientSecretCredential": return camelContext.getRegistry().lookupByNameAndType(ref, com.azure.identity.ClientSecretCredential.class);
+            case "org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration": return camelContext.getRegistry().lookupByNameAndType(ref, org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration.class);
+            case "com.azure.storage.file.datalake.DataLakeServiceClient": return camelContext.getRegistry().lookupByNameAndType(ref, com.azure.storage.file.datalake.DataLakeServiceClient.class);
+            case "com.azure.storage.common.StorageSharedKeyCredential": return camelContext.getRegistry().lookupByNameAndType(ref, com.azure.storage.common.StorageSharedKeyCredential.class);
+            case "java.time.Duration": return camelContext.getRegistry().lookupByNameAndType(ref, java.time.Duration.class);
+        }
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/LICENSE.txt b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed 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.
+
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/NOTICE.txt b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Camel distribution.                    ==
+   =========================================================================
+
+   This product includes software developed by
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Please read the different LICENSE files present in the licenses directory of
+   this distribution.
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/spring.factories b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..f43021c
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,19 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.component.azure.storage.datalake.springboot.DataLakeComponentAutoConfiguration
diff --git a/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/spring.provides b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/spring.provides
new file mode 100644
index 0000000..0ad945e
--- /dev/null
+++ b/components-starter/camel-azure-storage-datalake-starter/src/main/resources/META-INF/spring.provides
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+provides: camel-azure-storage-datalake
diff --git a/components-starter/pom.xml b/components-starter/pom.xml
index d7afb2d..b26aac4 100644
--- a/components-starter/pom.xml
+++ b/components-starter/pom.xml
@@ -167,6 +167,7 @@
     <module>camel-azure-eventhubs-starter</module>
     <module>camel-azure-starter</module>
     <module>camel-azure-storage-blob-starter</module>
+    <module>camel-azure-storage-datalake-starter</module>
     <module>camel-azure-storage-queue-starter</module>
     <module>camel-barcode-starter</module>
     <module>camel-base64-starter</module>
diff --git a/docs/modules/ROOT/pages/azure-storage-datalake-starter.adoc b/docs/modules/ROOT/pages/azure-storage-datalake-starter.adoc
new file mode 100644
index 0000000..d50dd75
--- /dev/null
+++ b/docs/modules/ROOT/pages/azure-storage-datalake-starter.adoc
@@ -0,0 +1,64 @@
+// spring-boot-auto-configure options: START
+:page-partial:
+:doctitle: Camel Spring Boot Starter for azure-storage-datalake
+
+== Spring Boot Auto-Configuration
+
+When using azure-storage-datalake with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
+
+[source,xml]
+----
+<dependency>
+  <groupId>org.apache.camel.springboot</groupId>
+  <artifactId>camel-azure-storage-datalake-starter</artifactId>
+  <version>x.x.x</version>
+  <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+
+The component supports 34 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *camel.component.azure-storage-datalake.account-key* | account key for authentication |  | String
+| *camel.component.azure-storage-datalake.autowired-enabled* | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean
+| *camel.component.azure-storage-datalake.bridge-error-handler* | 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
+| *camel.component.azure-storage-datalake.client-id* | client id for azure account |  | String
+| *camel.component.azure-storage-datalake.client-secret* | client secret for azure account |  | String
+| *camel.component.azure-storage-datalake.client-secret-credential* | client secret credential for authentication. The option is a com.azure.identity.ClientSecretCredential type. |  | ClientSecretCredential
+| *camel.component.azure-storage-datalake.close* | Whether or not a file changed event raised indicates completion (true) or modification (false) |  | Boolean
+| *camel.component.azure-storage-datalake.close-stream-after-read* | check for closing stream after read |  | Boolean
+| *camel.component.azure-storage-datalake.configuration* | configuration object for datalake. The option is a org.apache.camel.component.azure.storage.datalake.DataLakeConfiguration type. |  | DataLakeConfiguration
+| *camel.component.azure-storage-datalake.data-count* | count number of bytes to download |  | Long
+| *camel.component.azure-storage-datalake.directory-name* | directory of the file to be handled in component |  | String
+| *camel.component.azure-storage-datalake.download-link-expiration* | download link expiration time |  | Long
+| *camel.component.azure-storage-datalake.enabled* | Whether to enable auto configuration of the azure-storage-datalake component. This is enabled by default. |  | Boolean
+| *camel.component.azure-storage-datalake.expression* | expression for queryInputStream |  | String
+| *camel.component.azure-storage-datalake.file-dir* | directory of file to do operations in the local system |  | String
+| *camel.component.azure-storage-datalake.file-name* | name of file to be handled in component |  | String
+| *camel.component.azure-storage-datalake.file-offset* | offset position in file for different operations |  | Long
+| *camel.component.azure-storage-datalake.lazy-start-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  [...]
+| *camel.component.azure-storage-datalake.max-results* | maximum number of results to show at a time |  | Integer
+| *camel.component.azure-storage-datalake.max-retry-requests* | no of retries to a given request |  | Integer
+| *camel.component.azure-storage-datalake.open-options* | set open options for creating file |  | Set
+| *camel.component.azure-storage-datalake.operation* | operation to be performed |  | DataLakeOperationsDefinition
+| *camel.component.azure-storage-datalake.path* | path in azure datalake for operations |  | String
+| *camel.component.azure-storage-datalake.permission* | permission string for the file |  | String
+| *camel.component.azure-storage-datalake.position* | This parameter allows the caller to upload data in parallel and control the order in which it is appended to the file. |  | Long
+| *camel.component.azure-storage-datalake.recursive* | recursively include all paths |  | Boolean
+| *camel.component.azure-storage-datalake.regex* | regular expression for matching file names |  | String
+| *camel.component.azure-storage-datalake.retain-uncommited-data* | Whether or not uncommitted data is to be retained after the operation |  | Boolean
+| *camel.component.azure-storage-datalake.service-client* | datalake service client for azure storage datalake. The option is a com.azure.storage.file.datalake.DataLakeServiceClient type. |  | DataLakeServiceClient
+| *camel.component.azure-storage-datalake.shared-key-credential* | shared key credential for azure datalake gen2. The option is a com.azure.storage.common.StorageSharedKeyCredential type. |  | StorageSharedKeyCredential
+| *camel.component.azure-storage-datalake.tenant-id* | tenant id for azure account |  | String
+| *camel.component.azure-storage-datalake.timeout* | Timeout for operation. The option is a java.time.Duration type. |  | Duration
+| *camel.component.azure-storage-datalake.umask* | umask permission for file |  | String
+| *camel.component.azure-storage-datalake.user-principal-name-returned* | whether or not to use upn |  | Boolean
+|===
+
+
+// spring-boot-auto-configure options: END
diff --git a/docs/modules/ROOT/pages/list.adoc b/docs/modules/ROOT/pages/list.adoc
index dbbdcf9..1acec45 100644
--- a/docs/modules/ROOT/pages/list.adoc
+++ b/docs/modules/ROOT/pages/list.adoc
@@ -5,7 +5,7 @@ Apache Camel Spring Boot supports the following Camel artifacts as Spring Boot S
 == Camel Components
 
 // components: START
-Number of Camel components: 344 in 277 JAR artifacts (3 deprecated)
+Number of Camel components: 345 in 278 JAR artifacts (3 deprecated)
 
 [width="100%",cols="4,3,3,3,6",options="header"]
 |===
@@ -137,6 +137,8 @@ Number of Camel components: 344 in 277 JAR artifacts (3 deprecated)
 
 | xref:latest@components::azure-blob-component.adoc[Azure Storage Blob Service (Deprecated)] | camel-azure-starter | Stable | 2.19 | *deprecated* Store and retrieve blobs from Azure Storage Blob Service.
 
+| xref:latest@components::azure-storage-datalake-component.adoc[Azure storage datalake service] | camel-azure-storage-datalake-starter | Preview | 3.8 | Camel Azure Datalake Gen2 Component
+
 | xref:latest@components::azure-storage-queue-component.adoc[Azure Storage Queue Service] | camel-azure-storage-queue-starter | Stable | 3.3 | The azure-storage-queue component is used for storing and retrieving the messages to/from Azure Storage Queue using Azure SDK v12.
 
 | xref:latest@components::azure-queue-component.adoc[Azure Storage Queue Service (Deprecated)] | camel-azure-starter | Stable | 2.19 | *deprecated* Store and retrieve messages from Azure Storage Queue Service.
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeTest.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeTest.java
new file mode 100644
index 0000000..4a4b61b
--- /dev/null
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelAzureStorageDatalakeTest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.itest.springboot;
+
+import org.apache.camel.itest.springboot.util.ArquillianPackager;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(Arquillian.class)
+public class CamelAzureStorageDatalakeTest extends AbstractSpringBootTestSupport {
+
+    @Deployment
+    public static Archive<?> createSpringBootPackage() throws Exception {
+        return ArquillianPackager.springBootPackage(createTestConfig());
+    }
+
+    public static ITestConfig createTestConfig() {
+        return new ITestConfigBuilder()
+                .module(inferModuleName(CamelAzureStorageDatalakeTest.class))
+                .build();
+    }
+
+    @Test
+    public void componentTests() throws Exception {
+        this.runComponentTest(config);
+        this.runModuleUnitTestsIfEnabled(config);
+    }
+
+
+}
diff --git a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
index 38e1270..108350d 100644
--- a/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
+++ b/tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/util/ArquillianPackager.java
@@ -374,6 +374,9 @@ public final class ArquillianPackager {
 
         // google grpc is a mix of all sort of different versions
         ignore.add("com.google.api.grpc");
+
+        // microsoft azure msal4j-persistence-extension library introduced by datalake component
+        ignore.add("com.microsoft.azure:msal4j-persistence-extension");
        
 
         Map<String, Map<String, String>> status = new TreeMap<>();
diff --git a/tooling/camel-spring-boot-bom/pom.xml b/tooling/camel-spring-boot-bom/pom.xml
index 2c5a1d0..b923992 100644
--- a/tooling/camel-spring-boot-bom/pom.xml
+++ b/tooling/camel-spring-boot-bom/pom.xml
@@ -325,6 +325,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel.springboot</groupId>
+        <artifactId>camel-azure-storage-datalake-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel.springboot</groupId>
         <artifactId>camel-azure-storage-queue-starter</artifactId>
         <version>${project.version}</version>
       </dependency>
diff --git a/tooling/camel-spring-boot-dependencies/pom.xml b/tooling/camel-spring-boot-dependencies/pom.xml
index c225b38..f53bb3b 100644
--- a/tooling/camel-spring-boot-dependencies/pom.xml
+++ b/tooling/camel-spring-boot-dependencies/pom.xml
@@ -528,6 +528,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.camel.springboot</groupId>
+        <artifactId>camel-azure-storage-datalake-starter</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.camel.springboot</groupId>
         <artifactId>camel-azure-storage-queue-starter</artifactId>
         <version>${project.version}</version>
       </dependency>