diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-storage-blob.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-storage-blob.json index ee4a608f6b56d..2c9636dbc892c 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-storage-blob.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/azure-storage-blob.json @@ -45,28 +45,31 @@ "bridgeErrorHandler": { "index": 18, "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 (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. 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." }, "blobSequenceNumber": { "index": 19, "kind": "property", "displayName": "Blob Sequence Number", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "A user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 263 - 1.The default value is 0." }, "blockListType": { "index": 20, "kind": "property", "displayName": "Block List Type", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "com.azure.storage.blob.models.BlockListType", "enum": [ "committed", "uncommitted", "all" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "COMMITTED", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies which type of blocks to return." }, - "changeFeedContext": { "index": 21, "kind": "property", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, - "changeFeedEndTime": { "index": 22, "kind": "property", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, - "changeFeedStartTime": { "index": 23, "kind": "property", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, - "closeStreamAfterWrite": { "index": 24, "kind": "property", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, - "commitBlockListLater": { "index": 25, "kind": "property", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, - "createAppendBlob": { "index": 26, "kind": "property", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, - "createPageBlob": { "index": 27, "kind": "property", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, - "downloadLinkExpiration": { "index": 28, "kind": "property", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, - "lazyStartProducer": { "index": 29, "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 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." }, - "operation": { "index": 30, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, - "pageBlobSize": { "index": 31, "kind": "property", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, - "autowiredEnabled": { "index": 32, "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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, - "healthCheckConsumerEnabled": { "index": 33, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" }, - "healthCheckProducerEnabled": { "index": 34, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on producer checks globally by setting camel.health.producersEnabled=true." }, - "accessKey": { "index": 35, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, - "azureClientId": { "index": 36, "kind": "property", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, - "azureClientSecret": { "index": 37, "kind": "property", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, - "azureTenantId": { "index": 38, "kind": "property", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, - "sourceBlobAccessKey": { "index": 39, "kind": "property", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } + "blockSize": { "index": 21, "kind": "property", "displayName": "Block Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The block size in bytes to use for chunked uploads with uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0." }, + "changeFeedContext": { "index": 22, "kind": "property", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, + "changeFeedEndTime": { "index": 23, "kind": "property", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, + "changeFeedStartTime": { "index": 24, "kind": "property", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, + "closeStreamAfterWrite": { "index": 25, "kind": "property", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, + "commitBlockListLater": { "index": 26, "kind": "property", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, + "createAppendBlob": { "index": 27, "kind": "property", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, + "createPageBlob": { "index": 28, "kind": "property", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, + "downloadLinkExpiration": { "index": 29, "kind": "property", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, + "lazyStartProducer": { "index": 30, "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 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." }, + "maxConcurrency": { "index": 31, "kind": "property", "displayName": "Max Concurrency", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum number of parallel requests to use during upload with uploadBlockBlobChunked operation. Default is determined by the Azure SDK based on available processors." }, + "maxSingleUploadSize": { "index": 32, "kind": "property", "displayName": "Max Single Upload Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum size in bytes for a single upload request with uploadBlockBlobChunked operation. Files smaller than this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. Default is 256MB." }, + "operation": { "index": 33, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "uploadBlockBlobChunked", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, + "pageBlobSize": { "index": 34, "kind": "property", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, + "autowiredEnabled": { "index": 35, "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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "healthCheckConsumerEnabled": { "index": 36, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" }, + "healthCheckProducerEnabled": { "index": 37, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on producer checks globally by setting camel.health.producersEnabled=true." }, + "accessKey": { "index": 38, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, + "azureClientId": { "index": 39, "kind": "property", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, + "azureClientSecret": { "index": 40, "kind": "property", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, + "azureTenantId": { "index": 41, "kind": "property", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, + "sourceBlobAccessKey": { "index": 42, "kind": "property", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } }, "headers": { - "CamelAzureStorageBlobOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges", "getChangeFeed", "copyBlob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(All) Specify the producer operation to execute, please see the doc on this page related to producer operation.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOB_OPERATION" }, + "CamelAzureStorageBlobOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "uploadBlockBlobChunked", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges", "getChangeFeed", "copyBlob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(All) Specify the producer operation to execute, please see the doc on this page related to producer operation.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOB_OPERATION" }, "CamelAzureStorageBlobHttpHeaders": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "BlobHttpHeaders", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlob, commitBlobBlockList, createAppendBlob, createPageBlob) Additional parameters for a set of operations.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOB_HTTP_HEADERS" }, "CamelAzureStorageBlobETag": { "index": 2, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The E Tag of the blob", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#E_TAG" }, "CamelAzureStorageBlobCreationTime": { "index": 3, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Creation time of the blob.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CREATION_TIME" }, @@ -124,13 +127,17 @@ "CamelAzureStorageBlobCreatePageBlob": { "index": 55, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadPageBlob) When is set to true, the page blob will be created when uploading page blob.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CREATE_PAGE_BLOB" }, "CamelAzureStorageBlobDeleteSnapshotsOptionType": { "index": 56, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "com.azure.storage.blob.models.DeleteSnapshotsOptionType", "enum": [ "include", "only" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(deleteBlob) Specifies the behavior for deleting the snapshots on this blob. Include will delete the base blob and all snapshots. Only will delete only the snapshots. If a snapshot is being deleted, you must pass null.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#DELETE_SNAPSHOT_OPTION_TYPE" }, "CamelAzureStorageBlobListBlobContainersOptions": { "index": 57, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "ListBlobContainersOptions", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(listBlobContainers) A ListBlobContainersOptions which specifies what data should be returned by the service.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#LIST_BLOB_CONTAINERS_OPTIONS" }, - "CamelAzureStorageBlobParallelTransferOptions": { "index": 58, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "ParallelTransferOptions", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadBlobToFile) ParallelTransferOptions to use to download to file. Number of parallel transfers parameter is ignored.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#PARALLEL_TRANSFER_OPTIONS" }, - "CamelAzureStorageBlobDownloadLinkExpiration": { "index": 59, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadLink) Override the default expiration (millis) of URL download link.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#DOWNLOAD_LINK_EXPIRATION" }, - "CamelAzureStorageBlobSourceBlobAccountName": { "index": 60, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob account name to be used as source account name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_ACCOUNT_NAME" }, - "CamelAzureStorageBlobSourceBlobContainerName": { "index": 61, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob container name to be used as source container name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_CONTAINER_NAME" }, - "CamelAzureStorageBlobChangeFeedStartTime": { "index": 62, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_START_TIME" }, - "CamelAzureStorageBlobChangeFeedEndTime": { "index": 63, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_END_TIME" }, - "CamelAzureStorageBlobContext": { "index": 64, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Context", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) This gives additional context that is passed through the Http pipeline during the service call.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_CONTEXT" } + "CamelAzureStorageBlobParallelTransferOptions": { "index": 58, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "ParallelTransferOptions", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadBlobToFile, uploadBlockBlobChunked) ParallelTransferOptions to use to download to file or upload from file. Number of parallel transfers parameter is ignored for downloads.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#PARALLEL_TRANSFER_OPTIONS" }, + "CamelAzureStorageBlobFilePath": { "index": 59, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The local file path to upload. Can be provided as a File, Path, or String in the message body, or via this header.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#FILE_PATH" }, + "CamelAzureStorageBlobBlockSize": { "index": 60, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The block size in bytes to use for chunked uploads. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOCK_SIZE" }, + "CamelAzureStorageBlobMaxConcurrency": { "index": 61, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The maximum number of parallel requests to use during upload. Default is determined by the Azure SDK based on available processors.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#MAX_CONCURRENCY" }, + "CamelAzureStorageBlobMaxSingleUploadSize": { "index": 62, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The maximum size in bytes for a single upload request. Files smaller than this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. Default is 256MB.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#MAX_SINGLE_UPLOAD_SIZE" }, + "CamelAzureStorageBlobDownloadLinkExpiration": { "index": 63, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadLink) Override the default expiration (millis) of URL download link.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#DOWNLOAD_LINK_EXPIRATION" }, + "CamelAzureStorageBlobSourceBlobAccountName": { "index": 64, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob account name to be used as source account name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_ACCOUNT_NAME" }, + "CamelAzureStorageBlobSourceBlobContainerName": { "index": 65, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob container name to be used as source container name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_CONTAINER_NAME" }, + "CamelAzureStorageBlobChangeFeedStartTime": { "index": 66, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_START_TIME" }, + "CamelAzureStorageBlobChangeFeedEndTime": { "index": 67, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_END_TIME" }, + "CamelAzureStorageBlobContext": { "index": 68, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Context", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) This gives additional context that is passed through the Http pipeline during the service call.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_CONTEXT" } }, "properties": { "accountName": { "index": 0, "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.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure account name to be used for authentication with azure blob services" }, @@ -160,35 +167,38 @@ "pollStrategy": { "index": 24, "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel." }, "blobSequenceNumber": { "index": 25, "kind": "parameter", "displayName": "Blob Sequence Number", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "A user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 263 - 1.The default value is 0." }, "blockListType": { "index": 26, "kind": "parameter", "displayName": "Block List Type", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "com.azure.storage.blob.models.BlockListType", "enum": [ "committed", "uncommitted", "all" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "COMMITTED", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies which type of blocks to return." }, - "changeFeedContext": { "index": 27, "kind": "parameter", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, - "changeFeedEndTime": { "index": 28, "kind": "parameter", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, - "changeFeedStartTime": { "index": 29, "kind": "parameter", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, - "closeStreamAfterWrite": { "index": 30, "kind": "parameter", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, - "commitBlockListLater": { "index": 31, "kind": "parameter", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, - "createAppendBlob": { "index": 32, "kind": "parameter", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, - "createPageBlob": { "index": 33, "kind": "parameter", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, - "downloadLinkExpiration": { "index": 34, "kind": "parameter", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, - "operation": { "index": 35, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, - "pageBlobSize": { "index": 36, "kind": "parameter", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, - "lazyStartProducer": { "index": 37, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 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." }, - "backoffErrorThreshold": { "index": 38, "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." }, - "backoffIdleThreshold": { "index": 39, "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." }, - "backoffMultiplier": { "index": 40, "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and\/or backoffErrorThreshold must also be configured." }, - "delay": { "index": 41, "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." }, - "greedy": { "index": 42, "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." }, - "initialDelay": { "index": 43, "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." }, - "repeatCount": { "index": 44, "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." }, - "runLoggingLevel": { "index": 45, "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level for that." }, - "scheduledExecutorService": { "index": 46, "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." }, - "scheduler": { "index": 47, "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" }, - "schedulerProperties": { "index": 48, "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. This is a multi-value option with prefix: scheduler." }, - "startScheduler": { "index": 49, "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." }, - "timeUnit": { "index": 50, "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." }, - "useFixedDelay": { "index": 51, "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }, - "accessKey": { "index": 52, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, - "azureClientId": { "index": 53, "kind": "parameter", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, - "azureClientSecret": { "index": 54, "kind": "parameter", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, - "azureTenantId": { "index": 55, "kind": "parameter", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, - "sourceBlobAccessKey": { "index": 56, "kind": "parameter", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } + "blockSize": { "index": 27, "kind": "parameter", "displayName": "Block Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The block size in bytes to use for chunked uploads with uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0." }, + "changeFeedContext": { "index": 28, "kind": "parameter", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, + "changeFeedEndTime": { "index": 29, "kind": "parameter", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, + "changeFeedStartTime": { "index": 30, "kind": "parameter", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, + "closeStreamAfterWrite": { "index": 31, "kind": "parameter", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, + "commitBlockListLater": { "index": 32, "kind": "parameter", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, + "createAppendBlob": { "index": 33, "kind": "parameter", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, + "createPageBlob": { "index": 34, "kind": "parameter", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, + "downloadLinkExpiration": { "index": 35, "kind": "parameter", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, + "maxConcurrency": { "index": 36, "kind": "parameter", "displayName": "Max Concurrency", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum number of parallel requests to use during upload with uploadBlockBlobChunked operation. Default is determined by the Azure SDK based on available processors." }, + "maxSingleUploadSize": { "index": 37, "kind": "parameter", "displayName": "Max Single Upload Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum size in bytes for a single upload request with uploadBlockBlobChunked operation. Files smaller than this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. Default is 256MB." }, + "operation": { "index": 38, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "uploadBlockBlobChunked", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, + "pageBlobSize": { "index": 39, "kind": "parameter", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, + "lazyStartProducer": { "index": 40, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 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." }, + "backoffErrorThreshold": { "index": 41, "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." }, + "backoffIdleThreshold": { "index": 42, "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." }, + "backoffMultiplier": { "index": 43, "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and\/or backoffErrorThreshold must also be configured." }, + "delay": { "index": 44, "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." }, + "greedy": { "index": 45, "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." }, + "initialDelay": { "index": 46, "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." }, + "repeatCount": { "index": 47, "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." }, + "runLoggingLevel": { "index": 48, "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level for that." }, + "scheduledExecutorService": { "index": 49, "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." }, + "scheduler": { "index": 50, "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" }, + "schedulerProperties": { "index": 51, "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. This is a multi-value option with prefix: scheduler." }, + "startScheduler": { "index": 52, "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." }, + "timeUnit": { "index": 53, "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." }, + "useFixedDelay": { "index": 54, "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }, + "accessKey": { "index": 55, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, + "azureClientId": { "index": 56, "kind": "parameter", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, + "azureClientSecret": { "index": 57, "kind": "parameter", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, + "azureTenantId": { "index": 58, "kind": "parameter", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, + "sourceBlobAccessKey": { "index": 59, "kind": "parameter", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } } } diff --git a/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java b/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java index c63264718107c..dfb391141317e 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java +++ b/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobComponentConfigurer.java @@ -50,6 +50,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "blobType": getOrCreateConfiguration(target).setBlobType(property(camelContext, org.apache.camel.component.azure.storage.blob.BlobType.class, value)); return true; case "blocklisttype": case "blockListType": getOrCreateConfiguration(target).setBlockListType(property(camelContext, com.azure.storage.blob.models.BlockListType.class, value)); return true; + case "blocksize": + case "blockSize": getOrCreateConfiguration(target).setBlockSize(property(camelContext, java.lang.Long.class, value)); return true; case "bridgeerrorhandler": case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; case "changefeedcontext": @@ -88,10 +90,14 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "leaseBlob": getOrCreateConfiguration(target).setLeaseBlob(property(camelContext, boolean.class, value)); return true; case "leasedurationinseconds": case "leaseDurationInSeconds": getOrCreateConfiguration(target).setLeaseDurationInSeconds(property(camelContext, java.lang.Integer.class, value)); return true; + case "maxconcurrency": + case "maxConcurrency": getOrCreateConfiguration(target).setMaxConcurrency(property(camelContext, java.lang.Integer.class, value)); return true; case "maxresultsperpage": case "maxResultsPerPage": getOrCreateConfiguration(target).setMaxResultsPerPage(property(camelContext, java.lang.Integer.class, value)); return true; case "maxretryrequests": case "maxRetryRequests": getOrCreateConfiguration(target).setMaxRetryRequests(property(camelContext, int.class, value)); return true; + case "maxsingleuploadsize": + case "maxSingleUploadSize": getOrCreateConfiguration(target).setMaxSingleUploadSize(property(camelContext, java.lang.Long.class, value)); return true; case "operation": getOrCreateConfiguration(target).setOperation(property(camelContext, org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class, value)); return true; case "pageblobsize": case "pageBlobSize": getOrCreateConfiguration(target).setPageBlobSize(property(camelContext, java.lang.Long.class, value)); return true; @@ -136,6 +142,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "blobType": return org.apache.camel.component.azure.storage.blob.BlobType.class; case "blocklisttype": case "blockListType": return com.azure.storage.blob.models.BlockListType.class; + case "blocksize": + case "blockSize": return java.lang.Long.class; case "bridgeerrorhandler": case "bridgeErrorHandler": return boolean.class; case "changefeedcontext": @@ -174,10 +182,14 @@ public Class getOptionType(String name, boolean ignoreCase) { case "leaseBlob": return boolean.class; case "leasedurationinseconds": case "leaseDurationInSeconds": return java.lang.Integer.class; + case "maxconcurrency": + case "maxConcurrency": return java.lang.Integer.class; case "maxresultsperpage": case "maxResultsPerPage": return java.lang.Integer.class; case "maxretryrequests": case "maxRetryRequests": return int.class; + case "maxsingleuploadsize": + case "maxSingleUploadSize": return java.lang.Long.class; case "operation": return org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class; case "pageblobsize": case "pageBlobSize": return java.lang.Long.class; @@ -218,6 +230,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "blobType": return getOrCreateConfiguration(target).getBlobType(); case "blocklisttype": case "blockListType": return getOrCreateConfiguration(target).getBlockListType(); + case "blocksize": + case "blockSize": return getOrCreateConfiguration(target).getBlockSize(); case "bridgeerrorhandler": case "bridgeErrorHandler": return target.isBridgeErrorHandler(); case "changefeedcontext": @@ -256,10 +270,14 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "leaseBlob": return getOrCreateConfiguration(target).isLeaseBlob(); case "leasedurationinseconds": case "leaseDurationInSeconds": return getOrCreateConfiguration(target).getLeaseDurationInSeconds(); + case "maxconcurrency": + case "maxConcurrency": return getOrCreateConfiguration(target).getMaxConcurrency(); case "maxresultsperpage": case "maxResultsPerPage": return getOrCreateConfiguration(target).getMaxResultsPerPage(); case "maxretryrequests": case "maxRetryRequests": return getOrCreateConfiguration(target).getMaxRetryRequests(); + case "maxsingleuploadsize": + case "maxSingleUploadSize": return getOrCreateConfiguration(target).getMaxSingleUploadSize(); case "operation": return getOrCreateConfiguration(target).getOperation(); case "pageblobsize": case "pageBlobSize": return getOrCreateConfiguration(target).getPageBlobSize(); diff --git a/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java b/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java index 2272ffa1d2fa1..336ec58b18256 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java +++ b/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointConfigurer.java @@ -49,6 +49,8 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "blobType": target.getConfiguration().setBlobType(property(camelContext, org.apache.camel.component.azure.storage.blob.BlobType.class, value)); return true; case "blocklisttype": case "blockListType": target.getConfiguration().setBlockListType(property(camelContext, com.azure.storage.blob.models.BlockListType.class, value)); return true; + case "blocksize": + case "blockSize": target.getConfiguration().setBlockSize(property(camelContext, java.lang.Long.class, value)); return true; case "bridgeerrorhandler": case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; case "changefeedcontext": @@ -90,10 +92,14 @@ public boolean configure(CamelContext camelContext, Object obj, String name, Obj case "leaseBlob": target.getConfiguration().setLeaseBlob(property(camelContext, boolean.class, value)); return true; case "leasedurationinseconds": case "leaseDurationInSeconds": target.getConfiguration().setLeaseDurationInSeconds(property(camelContext, java.lang.Integer.class, value)); return true; + case "maxconcurrency": + case "maxConcurrency": target.getConfiguration().setMaxConcurrency(property(camelContext, java.lang.Integer.class, value)); return true; case "maxresultsperpage": case "maxResultsPerPage": target.getConfiguration().setMaxResultsPerPage(property(camelContext, java.lang.Integer.class, value)); return true; case "maxretryrequests": case "maxRetryRequests": target.getConfiguration().setMaxRetryRequests(property(camelContext, int.class, value)); return true; + case "maxsingleuploadsize": + case "maxSingleUploadSize": target.getConfiguration().setMaxSingleUploadSize(property(camelContext, java.lang.Long.class, value)); return true; case "operation": target.getConfiguration().setOperation(property(camelContext, org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class, value)); return true; case "pageblobsize": case "pageBlobSize": target.getConfiguration().setPageBlobSize(property(camelContext, java.lang.Long.class, value)); return true; @@ -163,6 +169,8 @@ public Class getOptionType(String name, boolean ignoreCase) { case "blobType": return org.apache.camel.component.azure.storage.blob.BlobType.class; case "blocklisttype": case "blockListType": return com.azure.storage.blob.models.BlockListType.class; + case "blocksize": + case "blockSize": return java.lang.Long.class; case "bridgeerrorhandler": case "bridgeErrorHandler": return boolean.class; case "changefeedcontext": @@ -204,10 +212,14 @@ public Class getOptionType(String name, boolean ignoreCase) { case "leaseBlob": return boolean.class; case "leasedurationinseconds": case "leaseDurationInSeconds": return java.lang.Integer.class; + case "maxconcurrency": + case "maxConcurrency": return java.lang.Integer.class; case "maxresultsperpage": case "maxResultsPerPage": return java.lang.Integer.class; case "maxretryrequests": case "maxRetryRequests": return int.class; + case "maxsingleuploadsize": + case "maxSingleUploadSize": return java.lang.Long.class; case "operation": return org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition.class; case "pageblobsize": case "pageBlobSize": return java.lang.Long.class; @@ -273,6 +285,8 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "blobType": return target.getConfiguration().getBlobType(); case "blocklisttype": case "blockListType": return target.getConfiguration().getBlockListType(); + case "blocksize": + case "blockSize": return target.getConfiguration().getBlockSize(); case "bridgeerrorhandler": case "bridgeErrorHandler": return target.isBridgeErrorHandler(); case "changefeedcontext": @@ -314,10 +328,14 @@ public Object getOptionValue(Object obj, String name, boolean ignoreCase) { case "leaseBlob": return target.getConfiguration().isLeaseBlob(); case "leasedurationinseconds": case "leaseDurationInSeconds": return target.getConfiguration().getLeaseDurationInSeconds(); + case "maxconcurrency": + case "maxConcurrency": return target.getConfiguration().getMaxConcurrency(); case "maxresultsperpage": case "maxResultsPerPage": return target.getConfiguration().getMaxResultsPerPage(); case "maxretryrequests": case "maxRetryRequests": return target.getConfiguration().getMaxRetryRequests(); + case "maxsingleuploadsize": + case "maxSingleUploadSize": return target.getConfiguration().getMaxSingleUploadSize(); case "operation": return target.getConfiguration().getOperation(); case "pageblobsize": case "pageBlobSize": return target.getConfiguration().getPageBlobSize(); diff --git a/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java b/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java index b1d25d3218415..66c139fabe5f6 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java +++ b/components/camel-azure/camel-azure-storage-blob/src/generated/java/org/apache/camel/component/azure/storage/blob/BlobEndpointUriFactory.java @@ -23,7 +23,7 @@ public class BlobEndpointUriFactory extends org.apache.camel.support.component.E private static final Set SECRET_PROPERTY_NAMES; private static final Map MULTI_VALUE_PREFIXES; static { - Set props = new HashSet<>(57); + Set props = new HashSet<>(60); props.add("accessKey"); props.add("accountName"); props.add("azureClientId"); @@ -38,6 +38,7 @@ public class BlobEndpointUriFactory extends org.apache.camel.support.component.E props.add("blobServiceClient"); props.add("blobType"); props.add("blockListType"); + props.add("blockSize"); props.add("bridgeErrorHandler"); props.add("changeFeedContext"); props.add("changeFeedEndTime"); @@ -61,8 +62,10 @@ public class BlobEndpointUriFactory extends org.apache.camel.support.component.E props.add("lazyStartProducer"); props.add("leaseBlob"); props.add("leaseDurationInSeconds"); + props.add("maxConcurrency"); props.add("maxResultsPerPage"); props.add("maxRetryRequests"); + props.add("maxSingleUploadSize"); props.add("operation"); props.add("pageBlobSize"); props.add("pollStrategy"); diff --git a/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json index ee4a608f6b56d..2c9636dbc892c 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json +++ b/components/camel-azure/camel-azure-storage-blob/src/generated/resources/META-INF/org/apache/camel/component/azure/storage/blob/azure-storage-blob.json @@ -45,28 +45,31 @@ "bridgeErrorHandler": { "index": 18, "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 (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. Important: This is only possible if the 3rd party component allows Camel to be alerted if an exception was thrown. Some components handle this internally only, and therefore bridgeErrorHandler is not possible. In other situations we may improve the Camel component to hook into the 3rd party component and make this possible for future releases. 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." }, "blobSequenceNumber": { "index": 19, "kind": "property", "displayName": "Blob Sequence Number", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "A user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 263 - 1.The default value is 0." }, "blockListType": { "index": 20, "kind": "property", "displayName": "Block List Type", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "com.azure.storage.blob.models.BlockListType", "enum": [ "committed", "uncommitted", "all" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "COMMITTED", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies which type of blocks to return." }, - "changeFeedContext": { "index": 21, "kind": "property", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, - "changeFeedEndTime": { "index": 22, "kind": "property", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, - "changeFeedStartTime": { "index": 23, "kind": "property", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, - "closeStreamAfterWrite": { "index": 24, "kind": "property", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, - "commitBlockListLater": { "index": 25, "kind": "property", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, - "createAppendBlob": { "index": 26, "kind": "property", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, - "createPageBlob": { "index": 27, "kind": "property", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, - "downloadLinkExpiration": { "index": 28, "kind": "property", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, - "lazyStartProducer": { "index": 29, "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 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." }, - "operation": { "index": 30, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, - "pageBlobSize": { "index": 31, "kind": "property", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, - "autowiredEnabled": { "index": 32, "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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, - "healthCheckConsumerEnabled": { "index": 33, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" }, - "healthCheckProducerEnabled": { "index": 34, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on producer checks globally by setting camel.health.producersEnabled=true." }, - "accessKey": { "index": 35, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, - "azureClientId": { "index": 36, "kind": "property", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, - "azureClientSecret": { "index": 37, "kind": "property", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, - "azureTenantId": { "index": 38, "kind": "property", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, - "sourceBlobAccessKey": { "index": 39, "kind": "property", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } + "blockSize": { "index": 21, "kind": "property", "displayName": "Block Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The block size in bytes to use for chunked uploads with uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0." }, + "changeFeedContext": { "index": 22, "kind": "property", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, + "changeFeedEndTime": { "index": 23, "kind": "property", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, + "changeFeedStartTime": { "index": 24, "kind": "property", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, + "closeStreamAfterWrite": { "index": 25, "kind": "property", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, + "commitBlockListLater": { "index": 26, "kind": "property", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, + "createAppendBlob": { "index": 27, "kind": "property", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, + "createPageBlob": { "index": 28, "kind": "property", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, + "downloadLinkExpiration": { "index": 29, "kind": "property", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, + "lazyStartProducer": { "index": 30, "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 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." }, + "maxConcurrency": { "index": 31, "kind": "property", "displayName": "Max Concurrency", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum number of parallel requests to use during upload with uploadBlockBlobChunked operation. Default is determined by the Azure SDK based on available processors." }, + "maxSingleUploadSize": { "index": 32, "kind": "property", "displayName": "Max Single Upload Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum size in bytes for a single upload request with uploadBlockBlobChunked operation. Files smaller than this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. Default is 256MB." }, + "operation": { "index": 33, "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "uploadBlockBlobChunked", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, + "pageBlobSize": { "index": 34, "kind": "property", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, + "autowiredEnabled": { "index": 35, "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 then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc." }, + "healthCheckConsumerEnabled": { "index": 36, "kind": "property", "displayName": "Health Check Consumer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all consumer based health checks from this component" }, + "healthCheckProducerEnabled": { "index": 37, "kind": "property", "displayName": "Health Check Producer Enabled", "group": "health", "label": "health", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Used for enabling or disabling all producer based health checks from this component. Notice: Camel has by default disabled all producer based health-checks. You can turn on producer checks globally by setting camel.health.producersEnabled=true." }, + "accessKey": { "index": 38, "kind": "property", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, + "azureClientId": { "index": 39, "kind": "property", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, + "azureClientSecret": { "index": 40, "kind": "property", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, + "azureTenantId": { "index": 41, "kind": "property", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, + "sourceBlobAccessKey": { "index": 42, "kind": "property", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } }, "headers": { - "CamelAzureStorageBlobOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges", "getChangeFeed", "copyBlob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(All) Specify the producer operation to execute, please see the doc on this page related to producer operation.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOB_OPERATION" }, + "CamelAzureStorageBlobOperation": { "index": 0, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "uploadBlockBlobChunked", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges", "getChangeFeed", "copyBlob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(All) Specify the producer operation to execute, please see the doc on this page related to producer operation.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOB_OPERATION" }, "CamelAzureStorageBlobHttpHeaders": { "index": 1, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "BlobHttpHeaders", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlob, commitBlobBlockList, createAppendBlob, createPageBlob) Additional parameters for a set of operations.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOB_HTTP_HEADERS" }, "CamelAzureStorageBlobETag": { "index": 2, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The E Tag of the blob", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#E_TAG" }, "CamelAzureStorageBlobCreationTime": { "index": 3, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Creation time of the blob.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CREATION_TIME" }, @@ -124,13 +127,17 @@ "CamelAzureStorageBlobCreatePageBlob": { "index": 55, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadPageBlob) When is set to true, the page blob will be created when uploading page blob.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CREATE_PAGE_BLOB" }, "CamelAzureStorageBlobDeleteSnapshotsOptionType": { "index": 56, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "com.azure.storage.blob.models.DeleteSnapshotsOptionType", "enum": [ "include", "only" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(deleteBlob) Specifies the behavior for deleting the snapshots on this blob. Include will delete the base blob and all snapshots. Only will delete only the snapshots. If a snapshot is being deleted, you must pass null.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#DELETE_SNAPSHOT_OPTION_TYPE" }, "CamelAzureStorageBlobListBlobContainersOptions": { "index": 57, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "ListBlobContainersOptions", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(listBlobContainers) A ListBlobContainersOptions which specifies what data should be returned by the service.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#LIST_BLOB_CONTAINERS_OPTIONS" }, - "CamelAzureStorageBlobParallelTransferOptions": { "index": 58, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "ParallelTransferOptions", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadBlobToFile) ParallelTransferOptions to use to download to file. Number of parallel transfers parameter is ignored.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#PARALLEL_TRANSFER_OPTIONS" }, - "CamelAzureStorageBlobDownloadLinkExpiration": { "index": 59, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadLink) Override the default expiration (millis) of URL download link.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#DOWNLOAD_LINK_EXPIRATION" }, - "CamelAzureStorageBlobSourceBlobAccountName": { "index": 60, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob account name to be used as source account name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_ACCOUNT_NAME" }, - "CamelAzureStorageBlobSourceBlobContainerName": { "index": 61, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob container name to be used as source container name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_CONTAINER_NAME" }, - "CamelAzureStorageBlobChangeFeedStartTime": { "index": 62, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_START_TIME" }, - "CamelAzureStorageBlobChangeFeedEndTime": { "index": 63, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_END_TIME" }, - "CamelAzureStorageBlobContext": { "index": 64, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Context", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) This gives additional context that is passed through the Http pipeline during the service call.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_CONTEXT" } + "CamelAzureStorageBlobParallelTransferOptions": { "index": 58, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "ParallelTransferOptions", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadBlobToFile, uploadBlockBlobChunked) ParallelTransferOptions to use to download to file or upload from file. Number of parallel transfers parameter is ignored for downloads.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#PARALLEL_TRANSFER_OPTIONS" }, + "CamelAzureStorageBlobFilePath": { "index": 59, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The local file path to upload. Can be provided as a File, Path, or String in the message body, or via this header.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#FILE_PATH" }, + "CamelAzureStorageBlobBlockSize": { "index": 60, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The block size in bytes to use for chunked uploads. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#BLOCK_SIZE" }, + "CamelAzureStorageBlobMaxConcurrency": { "index": 61, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The maximum number of parallel requests to use during upload. Default is determined by the Azure SDK based on available processors.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#MAX_CONCURRENCY" }, + "CamelAzureStorageBlobMaxSingleUploadSize": { "index": 62, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(uploadBlockBlobChunked) The maximum size in bytes for a single upload request. Files smaller than this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. Default is 256MB.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#MAX_SINGLE_UPLOAD_SIZE" }, + "CamelAzureStorageBlobDownloadLinkExpiration": { "index": 63, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(downloadLink) Override the default expiration (millis) of URL download link.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#DOWNLOAD_LINK_EXPIRATION" }, + "CamelAzureStorageBlobSourceBlobAccountName": { "index": 64, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob account name to be used as source account name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_ACCOUNT_NAME" }, + "CamelAzureStorageBlobSourceBlobContainerName": { "index": 65, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(copyBlob) The source blob container name to be used as source container name in a copy blob operation", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#SOURCE_BLOB_CONTAINER_NAME" }, + "CamelAzureStorageBlobChangeFeedStartTime": { "index": 66, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_START_TIME" }, + "CamelAzureStorageBlobChangeFeedEndTime": { "index": 67, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "OffsetDateTime", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) It filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_END_TIME" }, + "CamelAzureStorageBlobContext": { "index": 68, "kind": "header", "displayName": "", "group": "producer", "label": "producer", "required": false, "javaType": "Context", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "(getChangeFeed) This gives additional context that is passed through the Http pipeline during the service call.", "constantName": "org.apache.camel.component.azure.storage.blob.BlobConstants#CHANGE_FEED_CONTEXT" } }, "properties": { "accountName": { "index": 0, "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.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure account name to be used for authentication with azure blob services" }, @@ -160,35 +167,38 @@ "pollStrategy": { "index": 24, "kind": "parameter", "displayName": "Poll Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, "autowired": false, "secret": false, "description": "A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel." }, "blobSequenceNumber": { "index": 25, "kind": "parameter", "displayName": "Blob Sequence Number", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "A user-controlled value that you can use to track requests. The value of the sequence number must be between 0 and 263 - 1.The default value is 0." }, "blockListType": { "index": 26, "kind": "parameter", "displayName": "Block List Type", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "com.azure.storage.blob.models.BlockListType", "enum": [ "committed", "uncommitted", "all" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "COMMITTED", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies which type of blocks to return." }, - "changeFeedContext": { "index": 27, "kind": "parameter", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, - "changeFeedEndTime": { "index": 28, "kind": "parameter", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, - "changeFeedStartTime": { "index": 29, "kind": "parameter", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, - "closeStreamAfterWrite": { "index": 30, "kind": "parameter", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, - "commitBlockListLater": { "index": 31, "kind": "parameter", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, - "createAppendBlob": { "index": 32, "kind": "parameter", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, - "createPageBlob": { "index": 33, "kind": "parameter", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, - "downloadLinkExpiration": { "index": 34, "kind": "parameter", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, - "operation": { "index": 35, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, - "pageBlobSize": { "index": 36, "kind": "parameter", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, - "lazyStartProducer": { "index": 37, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 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." }, - "backoffErrorThreshold": { "index": 38, "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." }, - "backoffIdleThreshold": { "index": 39, "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." }, - "backoffMultiplier": { "index": 40, "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and\/or backoffErrorThreshold must also be configured." }, - "delay": { "index": 41, "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." }, - "greedy": { "index": 42, "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." }, - "initialDelay": { "index": 43, "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." }, - "repeatCount": { "index": 44, "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." }, - "runLoggingLevel": { "index": 45, "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level for that." }, - "scheduledExecutorService": { "index": 46, "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." }, - "scheduler": { "index": 47, "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" }, - "schedulerProperties": { "index": 48, "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. This is a multi-value option with prefix: scheduler." }, - "startScheduler": { "index": 49, "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." }, - "timeUnit": { "index": 50, "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." }, - "useFixedDelay": { "index": 51, "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }, - "accessKey": { "index": 52, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, - "azureClientId": { "index": 53, "kind": "parameter", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, - "azureClientSecret": { "index": 54, "kind": "parameter", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, - "azureTenantId": { "index": 55, "kind": "parameter", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, - "sourceBlobAccessKey": { "index": 56, "kind": "parameter", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } + "blockSize": { "index": 27, "kind": "parameter", "displayName": "Block Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The block size in bytes to use for chunked uploads with uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0." }, + "changeFeedContext": { "index": 28, "kind": "parameter", "displayName": "Change Feed Context", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "com.azure.core.util.Context", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this gives additional context that is passed through the Http pipeline during the service call." }, + "changeFeedEndTime": { "index": 29, "kind": "parameter", "displayName": "Change Feed End Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately before the end time. Note: A few events belonging to the next hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the end time up by an hour." }, + "changeFeedStartTime": { "index": 30, "kind": "parameter", "displayName": "Change Feed Start Time", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "java.time.OffsetDateTime", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When using getChangeFeed producer operation, this filters the results to return events approximately after the start time. Note: A few events belonging to the previous hour can also be returned. A few events belonging to this hour can be missing; to ensure all events from the hour are returned, round the start time down by an hour." }, + "closeStreamAfterWrite": { "index": 31, "kind": "parameter", "displayName": "Close Stream After Write", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Close the stream after write or keep it open, default is true" }, + "commitBlockListLater": { "index": 32, "kind": "parameter", "displayName": "Commit Block List Later", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the staged blocks will not be committed directly." }, + "createAppendBlob": { "index": 33, "kind": "parameter", "displayName": "Create Append Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the append blocks will be created when committing append blocks." }, + "createPageBlob": { "index": 34, "kind": "parameter", "displayName": "Create Page Blob", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "When is set to true, the page blob will be created when uploading page blob." }, + "downloadLinkExpiration": { "index": 35, "kind": "parameter", "displayName": "Download Link Expiration", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Override the default expiration (millis) of URL download link." }, + "maxConcurrency": { "index": 36, "kind": "parameter", "displayName": "Max Concurrency", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum number of parallel requests to use during upload with uploadBlockBlobChunked operation. Default is determined by the Azure SDK based on available processors." }, + "maxSingleUploadSize": { "index": 37, "kind": "parameter", "displayName": "Max Single Upload Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The maximum size in bytes for a single upload request with uploadBlockBlobChunked operation. Files smaller than this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. Default is 256MB." }, + "operation": { "index": 38, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "enum", "javaType": "org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition", "enum": [ "listBlobContainers", "createBlobContainer", "deleteBlobContainer", "listBlobs", "getBlob", "deleteBlob", "downloadBlobToFile", "downloadLink", "uploadBlockBlob", "uploadBlockBlobChunked", "stageBlockBlobList", "commitBlobBlockList", "getBlobBlockList", "createAppendBlob", "commitAppendBlob", "createPageBlob", "uploadPageBlob", "resizePageBlob", "clearPageBlob", "getPageBlobRanges" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "listBlobContainers", "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "The blob operation that can be used with this component on the producer" }, + "pageBlobSize": { "index": 39, "kind": "parameter", "displayName": "Page Blob Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "java.lang.Long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 512, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Specifies the maximum size for the page blob, up to 8 TB. The page blob size must be aligned to a 512-byte boundary." }, + "lazyStartProducer": { "index": 40, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "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 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." }, + "backoffErrorThreshold": { "index": 41, "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." }, + "backoffIdleThreshold": { "index": 42, "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." }, + "backoffMultiplier": { "index": 43, "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and\/or backoffErrorThreshold must also be configured." }, + "delay": { "index": 44, "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." }, + "greedy": { "index": 45, "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." }, + "initialDelay": { "index": 46, "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." }, + "repeatCount": { "index": 47, "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." }, + "runLoggingLevel": { "index": 48, "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level for that." }, + "scheduledExecutorService": { "index": 49, "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." }, + "scheduler": { "index": 50, "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" }, + "schedulerProperties": { "index": 51, "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. This is a multi-value option with prefix: scheduler." }, + "startScheduler": { "index": 52, "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." }, + "timeUnit": { "index": 53, "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "enum", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." }, + "useFixedDelay": { "index": 54, "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }, + "accessKey": { "index": 55, "kind": "parameter", "displayName": "Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Access key for the associated azure account name to be used for authentication with azure blob services" }, + "azureClientId": { "index": 56, "kind": "parameter", "displayName": "Azure Client Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client ID for authentication with Azure Identity" }, + "azureClientSecret": { "index": 57, "kind": "parameter", "displayName": "Azure Client Secret", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Client Secret for authentication with Azure Identity" }, + "azureTenantId": { "index": 58, "kind": "parameter", "displayName": "Azure Tenant Id", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Azure Tenant ID for authentication with Azure Identity" }, + "sourceBlobAccessKey": { "index": 59, "kind": "parameter", "displayName": "Source Blob Access Key", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.azure.storage.blob.BlobConfiguration", "configurationField": "configuration", "description": "Source Blob Access Key: for copyblob operation, sadly, we need to have an accessKey for the source blob we want to copy Passing an accessKey as header, it's unsafe so we could set as key." } } } diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc b/components/camel-azure/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc index f36ab5d28d7f1..9f1b17285159a 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc +++ b/components/camel-azure/camel-azure-storage-blob/src/main/docs/azure-storage-blob-component.adoc @@ -148,7 +148,8 @@ For these operations, `accountName`, `containerName` and `blobName` are *require |`deleteBlob` |Common|Delete a blob. |`downloadBlobToFile` |Common|Download the entire blob into a file specified by the path. The file will be created and must not exist, if the file already exists a `FileAlreadyExistsException` will be thrown. |`downloadLink` |Common| Generate the download link for the specified blob using shared access signatures (SAS). This by default only limits to 1hour of allowed access. However, you can override the default expiration duration through the headers. -|`uploadBlockBlob` |BlockBlob|Creates a new block blob, or updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. +|`uploadBlockBlob` |BlockBlob|Creates a new block blob, or updates the content of an existing block blob. Updating an existing block blob overwrites any existing metadata on the blob. Partial updates are not supported with PutBlob; the content of the existing blob is overwritten with the new content. Note: For larger files, use `uploadBlockBlobChunked`. +|`uploadBlockBlobChunked` |BlockBlob|Creates or updates a block blob with support for large files (up to several GB). Uses chunked parallel uploads for memory efficiency. Accepts File, Path, WrappedFile, or InputStream as body. Configure `blockSize` (default: 4MB) and `maxConcurrency` (default: auto) for performance tuning. Recommended for files larger than 256MB. |`stageBlockBlobList`|`BlockBlob`|Uploads the specified block to the block blob's "staging area" to be later committed by a call to commitBlobBlockList. However, in case header `CamelAzureStorageBlobCommitBlobBlockListLater` or config `commitBlockListLater` is set to false, this will commit the blocks immediately after staging the blocks. |`commitBlobBlockList`|`BlockBlob`|Write a blob by specifying the list of block IDs that are to make up the blob. To be written as part of a blob, a block must have been successfully written to the server in a prior `stageBlockBlobList` operation. You can @@ -357,6 +358,57 @@ from("direct:start") .to("mock:result"); -------------------------------------------------------------------------------- +- `uploadBlockBlobChunked` + +This operation is recommended for uploading large files (larger than 256MB) as it uses chunked parallel uploads for memory efficiency. + +[tabs] +==== +Java:: ++ +[source,java] +---- +// Upload large files from the file component +from("file://data?noop=true") + .log("Uploading file: ${header.CamelFileName}") + .to("azure-storage-blob://camelazure/container1" + + "?blobName=${header.CamelFileName}" + + "&operation=uploadBlockBlobChunked" + + "&blockSize=52428800" + // 50MB blocks + "&maxConcurrency=4" + // 4 parallel uploads + "&serviceClient=#client") + .log("Upload completed: ${header.CamelFileName}"); +---- + +YAML:: ++ +[source,yaml] +---- +- route: + id: azure-blob-upload + from: + uri: file://data?noop=true + steps: + - log: "Uploading file: ${header.CamelFileName}" + - toD: + uri: "azure-storage-blob://{{azure.account}}/{{azure.container}}" + parameters: + blobName: "${header.CamelFileName}" + operation: uploadBlockBlobChunked + blockSize: 52428800 # 50MB blocks + maxConcurrency: 4 # 4 parallel uploads + credentialType: SHARED_ACCOUNT_KEY + accessKey: "RAW({{azure.accessKey}})" + - log: "Upload completed: ${header.CamelFileName}" +---- +==== + +The `blockSize` and `maxConcurrency` options control memory usage and upload speed: + +* `blockSize`: Size of each chunk (default: 4MB, max: 4000MB). Larger blocks = fewer requests but more memory. +* `maxConcurrency`: Number of parallel uploads (default: auto-detected based on CPU cores). Higher = faster but more memory. +* Memory usage is approximately `blockSize × maxConcurrency`. + - `stageBlockBlobList` [source,java] diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java index 8bbf060d5d2c6..ebdd9f529844a 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfiguration.java @@ -50,7 +50,7 @@ public class BlobConfiguration implements Cloneable { private String accessKey; @UriParam(label = "producer", enums = "listBlobContainers,createBlobContainer,deleteBlobContainer,listBlobs,getBlob,deleteBlob,downloadBlobToFile,downloadLink," - + "uploadBlockBlob,stageBlockBlobList,commitBlobBlockList,getBlobBlockList,createAppendBlob,commitAppendBlob,createPageBlob,uploadPageBlob,resizePageBlob," + + "uploadBlockBlob,uploadBlockBlobChunked,stageBlockBlobList,commitBlobBlockList,getBlobBlockList,createAppendBlob,commitAppendBlob,createPageBlob,uploadPageBlob,resizePageBlob," + "clearPageBlob,getPageBlobRanges", defaultValue = "listBlobContainers") private BlobOperationsDefinition operation = BlobOperationsDefinition.listBlobContainers; @@ -96,6 +96,12 @@ public class BlobConfiguration implements Cloneable { private OffsetDateTime changeFeedEndTime; @UriParam(label = "producer") private Context changeFeedContext; + @UriParam(label = "producer") + private Long blockSize; + @UriParam(label = "producer") + private Integer maxConcurrency; + @UriParam(label = "producer") + private Long maxSingleUploadSize; @UriParam(label = "common") private String regex; @UriParam(label = "security", secret = true) @@ -429,6 +435,43 @@ public void setChangeFeedContext(Context changeFeedContext) { this.changeFeedContext = changeFeedContext; } + /** + * The block size in bytes to use for chunked uploads with `uploadBlockBlobChunked` operation. Default is 4MB + * (4194304). Maximum is 4000MB. Must be greater than 0. + */ + public Long getBlockSize() { + return blockSize; + } + + public void setBlockSize(Long blockSize) { + this.blockSize = blockSize; + } + + /** + * The maximum number of parallel requests to use during upload with `uploadBlockBlobChunked` operation. Default is + * determined by the Azure SDK based on available processors. + */ + public Integer getMaxConcurrency() { + return maxConcurrency; + } + + public void setMaxConcurrency(Integer maxConcurrency) { + this.maxConcurrency = maxConcurrency; + } + + /** + * The maximum size in bytes for a single upload request with `uploadBlockBlobChunked` operation. Files smaller than + * this will be uploaded in a single request. Files larger will use chunked upload with blocks of size blockSize. + * Default is 256MB. + */ + public Long getMaxSingleUploadSize() { + return maxSingleUploadSize; + } + + public void setMaxSingleUploadSize(Long maxSingleUploadSize) { + this.maxSingleUploadSize = maxSingleUploadSize; + } + /** * Filters the results to return only blobs whose names match the specified regular expression. May be null to * return all if both prefix and regex are set, regex takes the priority and prefix is ignored. diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java index beb0bbce29506..a51224c8ee6aa 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConfigurationOptionsProxy.java @@ -221,6 +221,56 @@ public Integer getLeaseDurationInSeconds(final Exchange exchange) { exchange); } + public String getFilePath(final Exchange exchange) { + return getOption(BlobExchangeHeaders::getFilePathFromHeaders, () -> null, exchange); + } + + public Long getBlockSize(final Exchange exchange) { + return getOption(BlobExchangeHeaders::getBlockSizeFromHeaders, configuration::getBlockSize, exchange); + } + + public Integer getMaxConcurrency(final Exchange exchange) { + return getOption(BlobExchangeHeaders::getMaxConcurrencyFromHeaders, configuration::getMaxConcurrency, exchange); + } + + public Long getMaxSingleUploadSize(final Exchange exchange) { + return getOption(BlobExchangeHeaders::getMaxSingleUploadSizeFromHeaders, configuration::getMaxSingleUploadSize, + exchange); + } + + /** + * Creates ParallelTransferOptions from configuration and exchange headers. Used for upload operations that support + * chunked parallel uploads. + */ + public ParallelTransferOptions getUploadParallelTransferOptions(final Exchange exchange) { + // First check if explicit ParallelTransferOptions was provided via header + ParallelTransferOptions pto = getParallelTransferOptions(exchange); + if (pto != null) { + return pto; + } + + // Build from individual settings + Long blockSize = getBlockSize(exchange); + Integer maxConcurrency = getMaxConcurrency(exchange); + Long maxSingleUploadSize = getMaxSingleUploadSize(exchange); + + if (blockSize != null || maxConcurrency != null || maxSingleUploadSize != null) { + pto = new ParallelTransferOptions(); + if (blockSize != null) { + pto.setBlockSizeLong(blockSize); + } + if (maxConcurrency != null) { + pto.setMaxConcurrency(maxConcurrency); + } + if (maxSingleUploadSize != null) { + pto.setMaxSingleUploadSizeLong(maxSingleUploadSize); + } + return pto; + } + + return null; + } + public BlobConfiguration getConfiguration() { return configuration; } diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java index 537862b9945d0..c9608662e456d 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobConstants.java @@ -233,9 +233,27 @@ public final class BlobConstants { javaType = "ListBlobContainersOptions") public static final String LIST_BLOB_CONTAINERS_OPTIONS = HEADER_PREFIX + "ListBlobContainersOptions"; @Metadata(label = "producer", - description = "(downloadBlobToFile) `ParallelTransferOptions` to use to download to file. Number of parallel transfers parameter is ignored.", + description = "(downloadBlobToFile, uploadBlockBlobChunked) `ParallelTransferOptions` to use to download to file or upload from file. Number of parallel transfers parameter is ignored for downloads.", javaType = "ParallelTransferOptions") public static final String PARALLEL_TRANSFER_OPTIONS = HEADER_PREFIX + "ParallelTransferOptions"; + @Metadata(label = "producer", + description = "(uploadBlockBlobChunked) The local file path to upload. Can be provided as a File, Path, or String in the message body, or via this header.", + javaType = "String") + public static final String FILE_PATH = HEADER_PREFIX + "FilePath"; + @Metadata(label = "producer", + description = "(uploadBlockBlobChunked) The block size in bytes to use for chunked uploads. Default is 4MB (4194304). Maximum is 4000MB. Must be greater than 0.", + javaType = "Long") + public static final String BLOCK_SIZE = HEADER_PREFIX + "BlockSize"; + @Metadata(label = "producer", + description = "(uploadBlockBlobChunked) The maximum number of parallel requests to use during upload. Default is determined by the Azure SDK based on available processors.", + javaType = "Integer") + public static final String MAX_CONCURRENCY = HEADER_PREFIX + "MaxConcurrency"; + @Metadata(label = "producer", + description = "(uploadBlockBlobChunked) The maximum size in bytes for a single upload request. Files smaller than this will be uploaded in a single request. " + + + "Files larger will use chunked upload with blocks of size blockSize. Default is 256MB.", + javaType = "Long") + public static final String MAX_SINGLE_UPLOAD_SIZE = HEADER_PREFIX + "MaxSingleUploadSize"; @Metadata(label = "producer", description = "(downloadLink) Override the default expiration (millis) of URL download link.", javaType = "Long") public static final String DOWNLOAD_LINK_EXPIRATION = HEADER_PREFIX + "DownloadLinkExpiration"; diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java index a05f30f6da97f..1725faba9ae79 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobExchangeHeaders.java @@ -269,6 +269,22 @@ public static Integer getLeaseDurationInSecondsFromHeaders(final Exchange exchan return getObjectFromHeaders(exchange, BlobConstants.LEASE_DURATION_IN_SECONDS, Integer.class); } + public static String getFilePathFromHeaders(final Exchange exchange) { + return getObjectFromHeaders(exchange, BlobConstants.FILE_PATH, String.class); + } + + public static Long getBlockSizeFromHeaders(final Exchange exchange) { + return getObjectFromHeaders(exchange, BlobConstants.BLOCK_SIZE, Long.class); + } + + public static Integer getMaxConcurrencyFromHeaders(final Exchange exchange) { + return getObjectFromHeaders(exchange, BlobConstants.MAX_CONCURRENCY, Integer.class); + } + + public static Long getMaxSingleUploadSizeFromHeaders(final Exchange exchange) { + return getObjectFromHeaders(exchange, BlobConstants.MAX_SINGLE_UPLOAD_SIZE, Long.class); + } + private static T getObjectFromHeaders(final Exchange exchange, final String headerName, final Class classType) { return ObjectHelper.isEmpty(exchange) ? null : exchange.getIn().getHeader(headerName, classType); } diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobOperationsDefinition.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobOperationsDefinition.java index 8591f038c18c8..5442aabdde9bc 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobOperationsDefinition.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobOperationsDefinition.java @@ -70,6 +70,15 @@ public enum BlobOperationsDefinition { * existing blob is overwritten with the new content. */ uploadBlockBlob, + /** + * Creates a new block blob, or updates the content of an existing block blob. This operation supports data larger + * than 256MB (up to several GB) by automatically using staged block uploads with configurable parallelism. The + * message body can be a File, Path, WrappedFile, or InputStream. For files, memory-mapped I/O is used for optimal + * performance. For streams, chunked parallel upload is used. Configure block size and concurrency via blockSize and + * maxConcurrency options. This is the recommended operation for uploading large files as it uses memory-efficient + * chunked uploads. + */ + uploadBlockBlobChunked, /** * Uploads the specified block to the block blob's "staging area" to be later committed by a call to * commitBlobBlockList. However in case header `CamelAzureStorageBlobCommitBlobBlockListLater` is set to false, this diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java index 6f6a72b4f3a49..b5ad91de57f6c 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/BlobProducer.java @@ -88,6 +88,9 @@ public void process(final Exchange exchange) throws Exception { case uploadBlockBlob: setResponse(exchange, getBlobOperations(exchange).uploadBlockBlob(exchange)); break; + case uploadBlockBlobChunked: + setResponse(exchange, getBlobOperations(exchange).uploadBlockBlobChunked(exchange)); + break; case stageBlockBlobList: setResponse(exchange, getBlobOperations(exchange).stageBlockBlobList(exchange)); break; diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/client/BlobClientWrapper.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/client/BlobClientWrapper.java index be37fbb932b5f..40f00517b9e6d 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/client/BlobClientWrapper.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/client/BlobClientWrapper.java @@ -53,6 +53,8 @@ import com.azure.storage.blob.models.PageRange; import com.azure.storage.blob.models.PageRangeItem; import com.azure.storage.blob.models.ParallelTransferOptions; +import com.azure.storage.blob.options.BlobParallelUploadOptions; +import com.azure.storage.blob.options.BlobUploadFromFileOptions; import com.azure.storage.blob.options.BlockBlobSimpleUploadOptions; import com.azure.storage.blob.options.ListPageRangesOptions; import com.azure.storage.blob.sas.BlobSasPermission; @@ -132,6 +134,94 @@ public Response uploadBlockBlob( return getBlockBlobClient().uploadWithResponse(uploadOptions, timeout, Context.NONE); } + /** + * Uploads a file to block blob using the Azure SDK's optimized file upload. This method handles chunking + * automatically for files larger than maxSingleUploadSize. + * + * @param filePath the local file path to upload + * @param parallelTransferOptions options for parallel upload (block size, concurrency, etc.) + * @param headers blob HTTP headers + * @param metadata blob metadata + * @param tier access tier + * @param requestConditions request conditions + * @param timeout operation timeout + * @return response with upload result + */ + public Response uploadBlockBlobChunked( + final String filePath, + final ParallelTransferOptions parallelTransferOptions, + final BlobHttpHeaders headers, + final Map metadata, + final AccessTier tier, + final BlobRequestConditions requestConditions, + final Duration timeout) { + + BlobUploadFromFileOptions options = new BlobUploadFromFileOptions(filePath); + + if (parallelTransferOptions != null) { + options.setParallelTransferOptions(parallelTransferOptions); + } + if (headers != null) { + options.setHeaders(headers); + } + if (metadata != null) { + options.setMetadata(metadata); + } + if (tier != null) { + options.setTier(tier); + } + if (requestConditions != null) { + options.setRequestConditions(requestConditions); + } + + return client.uploadFromFileWithResponse(options, timeout, Context.NONE); + } + + /** + * Uploads an InputStream to block blob using the Azure SDK's parallel upload. This method handles chunking + * automatically for streams larger than maxSingleUploadSize, supporting memory-efficient uploads of large files. + * + * @param data the input stream to upload + * @param length the exact length of the data in the stream + * @param parallelTransferOptions options for parallel upload (block size, concurrency, etc.) + * @param headers blob HTTP headers + * @param metadata blob metadata + * @param tier access tier + * @param requestConditions request conditions + * @param timeout operation timeout + * @return response with upload result + */ + public Response uploadBlockBlobWithParallelOptions( + final InputStream data, + final long length, + final ParallelTransferOptions parallelTransferOptions, + final BlobHttpHeaders headers, + final Map metadata, + final AccessTier tier, + final BlobRequestConditions requestConditions, + final Duration timeout) { + + BlobParallelUploadOptions options = new BlobParallelUploadOptions(data, length); + + if (parallelTransferOptions != null) { + options.setParallelTransferOptions(parallelTransferOptions); + } + if (headers != null) { + options.setHeaders(headers); + } + if (metadata != null) { + options.setMetadata(metadata); + } + if (tier != null) { + options.setTier(tier); + } + if (requestConditions != null) { + options.setRequestConditions(requestConditions); + } + + return client.uploadWithResponse(options, timeout, Context.NONE); + } + public HttpHeaders stageBlockBlob( final String base64BlockId, final InputStream data, final long length, final byte[] contentMd5, final String leaseId, final Duration timeout) { diff --git a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java index f6a354d0bf9e9..c577d3604715f 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java +++ b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/operations/BlobOperations.java @@ -53,6 +53,7 @@ import com.azure.storage.blob.specialized.BlobLeaseClient; import org.apache.camel.Exchange; import org.apache.camel.Message; +import org.apache.camel.WrappedFile; import org.apache.camel.component.azure.storage.blob.BlobBlock; import org.apache.camel.component.azure.storage.blob.BlobCommonRequestOptions; import org.apache.camel.component.azure.storage.blob.BlobConfiguration; @@ -62,6 +63,8 @@ import org.apache.camel.component.azure.storage.blob.BlobStreamAndLength; import org.apache.camel.component.azure.storage.blob.BlobUtils; import org.apache.camel.component.azure.storage.blob.client.BlobClientWrapper; +import org.apache.camel.support.SynchronizationAdapter; +import org.apache.camel.util.IOHelper; import org.apache.camel.util.ObjectHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,8 +103,20 @@ public BlobOperationResponse getBlob(final Exchange exchange) throws IOException = client.openInputStream(blobRange, blobCommonRequestOptions.getBlobRequestConditions()); final BlobExchangeHeaders blobExchangeHeaders = BlobExchangeHeaders .createBlobExchangeHeadersFromBlobProperties((BlobProperties) blobInputStream.get("properties")); + InputStream is = (InputStream) blobInputStream.get("inputStream"); + + // Wrap to ensure closure when Exchange completes + if (exchange != null && configurationProxy.getConfiguration().isCloseStreamAfterRead()) { + // Register stream for auto-close on Exchange completion to avoid potential OOM during downloads + exchange.getExchangeExtension().addOnCompletion(new SynchronizationAdapter() { + @Override + public void onDone(Exchange exchange) { + IOHelper.close(is); + } + }); + } - return BlobOperationResponse.create(blobInputStream.get("inputStream"), blobExchangeHeaders.toMap()); + return BlobOperationResponse.create(is, blobExchangeHeaders.toMap()); } // we have an outputStream set, so we use it final DownloadRetryOptions downloadRetryOptions = getDownloadRetryOptions(configurationProxy); @@ -205,6 +220,99 @@ public BlobOperationResponse uploadBlockBlob(final Exchange exchange) throws IOE } } + public BlobOperationResponse uploadBlockBlobChunked(final Exchange exchange) throws IOException { + ObjectHelper.notNull(exchange, MISSING_EXCHANGE); + + final BlobCommonRequestOptions commonRequestOptions = getCommonRequestOptions(exchange); + final ParallelTransferOptions parallelTransferOptions = configurationProxy.getUploadParallelTransferOptions(exchange); + + // Try to determine file path first (for file-based uploads which are most efficient) + final String filePath = determineFilePath(exchange); + + BlobLeaseClient leaseClient = null; + try { + leaseClient = acquireLeaseIfConfigured(commonRequestOptions.getBlobRequestConditions(), exchange); + + Response response; + + if (filePath != null) { + // File-based upload (uses memory-mapped I/O, most efficient) + if (LOG.isTraceEnabled()) { + LOG.trace("Uploading block blob from file [{}] to blob [{}] from exchange [{}]...", + filePath, configurationProxy.getBlobName(exchange), exchange); + } + + response = client.uploadBlockBlobChunked( + filePath, + parallelTransferOptions, + commonRequestOptions.getBlobHttpHeaders(), + commonRequestOptions.getMetadata(), + commonRequestOptions.getAccessTier(), + commonRequestOptions.getBlobRequestConditions(), + commonRequestOptions.getTimeout()); + } else { + // Stream-based upload with parallel options (for InputStream bodies) + final BlobStreamAndLength blobStreamAndLength + = BlobStreamAndLength.createBlobStreamAndLengthFromExchangeBody(exchange); + + if (LOG.isTraceEnabled()) { + LOG.trace("Uploading block blob from stream (length: {}) to blob [{}] from exchange [{}]...", + blobStreamAndLength.getStreamLength(), configurationProxy.getBlobName(exchange), exchange); + } + + try { + response = client.uploadBlockBlobWithParallelOptions( + blobStreamAndLength.getInputStream(), + blobStreamAndLength.getStreamLength(), + parallelTransferOptions, + commonRequestOptions.getBlobHttpHeaders(), + commonRequestOptions.getMetadata(), + commonRequestOptions.getAccessTier(), + commonRequestOptions.getBlobRequestConditions(), + commonRequestOptions.getTimeout()); + } finally { + closeInputStreamIfNeeded(blobStreamAndLength.getInputStream()); + } + } + + final BlobExchangeHeaders blobExchangeHeaders + = BlobExchangeHeaders.createBlobExchangeHeadersFromBlockBlobItem(response.getValue()) + .httpHeaders(response.getHeaders()); + + return BlobOperationResponse.create(true, blobExchangeHeaders.toMap()); + } finally { + releaseLeaseIfAcquired(leaseClient); + } + } + + @SuppressWarnings("rawtypes") + private String determineFilePath(final Exchange exchange) { + // First check header + String filePath = configurationProxy.getFilePath(exchange); + if (filePath != null) { + return filePath; + } + + // Then check body - only return file path if body is File/Path/String (not InputStream) + Object body = exchange.getIn().getBody(); + + if (body instanceof java.nio.file.Path path) { + return path.toAbsolutePath().toString(); + } + if (body instanceof File file) { + return file.getAbsolutePath(); + } + if (body instanceof WrappedFile wrappedFile) { + Object file = wrappedFile.getFile(); + if (file instanceof File f) { + return f.getAbsolutePath(); + } + } + + // For InputStream or other types, return null to trigger stream-based upload + return null; + } + public BlobOperationResponse stageBlockBlobList(final Exchange exchange) throws Exception { ObjectHelper.notNull(exchange, MISSING_EXCHANGE); diff --git a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobOperationsIT.java b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobOperationsIT.java index 32fd56dbd2fe2..d0d02b8abceaa 100644 --- a/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobOperationsIT.java +++ b/components/camel-azure/camel-azure-storage-blob/src/test/java/org/apache/camel/component/azure/storage/blob/integration/BlobOperationsIT.java @@ -289,6 +289,64 @@ void testCommitAndStageBlockBlob() throws Exception { blobClientWrapper.delete(null, null, null); } + @Test + void testuploadBlockBlobChunkedWithStream(@TempDir Path testDir) throws Exception { + // Create a test file larger than 256KB to test chunked upload + final Path testFile = testDir.resolve("large_upload_test.txt"); + final String content = RandomStringUtils.randomAlphanumeric(512 * 1024); // 512KB of random content + java.nio.file.Files.writeString(testFile, content); + + final BlobClientWrapper blobClientWrapper = blobContainerClientWrapper.getBlobClientWrapper("large_upload_test.txt"); + final BlobOperations operations = new BlobOperations(configuration, blobClientWrapper); + + // Test with InputStream (simulates stream caching scenario) + final Exchange exchange = new DefaultExchange(context); + exchange.getIn().setBody(new FileInputStream(testFile.toFile())); + exchange.getIn().setHeader(BlobConstants.BLOB_UPLOAD_SIZE, testFile.toFile().length()); + exchange.getIn().setHeader(BlobConstants.BLOCK_SIZE, 128 * 1024L); + exchange.getIn().setHeader(BlobConstants.MAX_CONCURRENCY, 4); + + final BlobOperationResponse response = operations.uploadBlockBlobChunked(exchange); + + assertNotNull(response); + assertTrue((boolean) response.getBody()); + assertNotNull(response.getHeaders().get(BlobConstants.E_TAG)); + + // Verify content + final BlobOperationResponse getBlobResponse = operations.getBlob(null); + assertEquals(content, IOUtils.toString((InputStream) getBlobResponse.getBody(), Charset.defaultCharset())); + + blobClientWrapper.delete(null, null, null); + } + + @Test + void testuploadBlockBlobChunkedWithFilePath(@TempDir Path testDir) throws Exception { + // Create a test file + final Path testFile = testDir.resolve("file_path_upload_test.txt"); + final String content = "Test content for file-based upload"; + java.nio.file.Files.writeString(testFile, content); + + final BlobClientWrapper blobClientWrapper + = blobContainerClientWrapper.getBlobClientWrapper("file_path_upload_test.txt"); + final BlobOperations operations = new BlobOperations(configuration, blobClientWrapper); + + // Test with File object (uses memory-mapped I/O) + final Exchange exchange = new DefaultExchange(context); + exchange.getIn().setBody(testFile.toFile()); + + final BlobOperationResponse response = operations.uploadBlockBlobChunked(exchange); + + assertNotNull(response); + assertTrue((boolean) response.getBody()); + assertNotNull(response.getHeaders().get(BlobConstants.E_TAG)); + + // Verify content + final BlobOperationResponse getBlobResponse = operations.getBlob(null); + assertEquals(content, IOUtils.toString((InputStream) getBlobResponse.getBody(), Charset.defaultCharset())); + + blobClientWrapper.delete(null, null, null); + } + @Test void testGetBlobBlockList() { final BlobClientWrapper blobClientWrapper = blobContainerClientWrapper.getBlobClientWrapper(randomBlobName); diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java index 65a5306e9a0d1..96ff3bca9d31a 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/AzureStorageBlobComponentBuilderFactory.java @@ -427,6 +427,23 @@ default AzureStorageBlobComponentBuilder blockListType(com.azure.storage.blob.mo return this; } + /** + * The block size in bytes to use for chunked uploads with + * uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum + * is 4000MB. Must be greater than 0. + * + * The option is a: <code>java.lang.Long</code> type. + * + * Group: producer + * + * @param blockSize the value to set + * @return the dsl builder + */ + default AzureStorageBlobComponentBuilder blockSize(java.lang.Long blockSize) { + doSetProperty("blockSize", blockSize); + return this; + } + /** * When using getChangeFeed producer operation, this gives additional * context that is passed through the Http pipeline during the service @@ -596,6 +613,41 @@ default AzureStorageBlobComponentBuilder lazyStartProducer(boolean lazyStartProd return this; } + /** + * The maximum number of parallel requests to use during upload with + * uploadBlockBlobChunked operation. Default is determined by the Azure + * SDK based on available processors. + * + * The option is a: <code>java.lang.Integer</code> type. + * + * Group: producer + * + * @param maxConcurrency the value to set + * @return the dsl builder + */ + default AzureStorageBlobComponentBuilder maxConcurrency(java.lang.Integer maxConcurrency) { + doSetProperty("maxConcurrency", maxConcurrency); + return this; + } + + /** + * The maximum size in bytes for a single upload request with + * uploadBlockBlobChunked operation. Files smaller than this will be + * uploaded in a single request. Files larger will use chunked upload + * with blocks of size blockSize. Default is 256MB. + * + * The option is a: <code>java.lang.Long</code> type. + * + * Group: producer + * + * @param maxSingleUploadSize the value to set + * @return the dsl builder + */ + default AzureStorageBlobComponentBuilder maxSingleUploadSize(java.lang.Long maxSingleUploadSize) { + doSetProperty("maxSingleUploadSize", maxSingleUploadSize); + return this; + } + /** * The blob operation that can be used with this component on the @@ -812,6 +864,7 @@ protected boolean setPropertyOnComponent( case "bridgeErrorHandler": ((BlobComponent) component).setBridgeErrorHandler((boolean) value); return true; case "blobSequenceNumber": getOrCreateConfiguration((BlobComponent) component).setBlobSequenceNumber((java.lang.Long) value); return true; case "blockListType": getOrCreateConfiguration((BlobComponent) component).setBlockListType((com.azure.storage.blob.models.BlockListType) value); return true; + case "blockSize": getOrCreateConfiguration((BlobComponent) component).setBlockSize((java.lang.Long) value); return true; case "changeFeedContext": getOrCreateConfiguration((BlobComponent) component).setChangeFeedContext((com.azure.core.util.Context) value); return true; case "changeFeedEndTime": getOrCreateConfiguration((BlobComponent) component).setChangeFeedEndTime((java.time.OffsetDateTime) value); return true; case "changeFeedStartTime": getOrCreateConfiguration((BlobComponent) component).setChangeFeedStartTime((java.time.OffsetDateTime) value); return true; @@ -821,6 +874,8 @@ protected boolean setPropertyOnComponent( case "createPageBlob": getOrCreateConfiguration((BlobComponent) component).setCreatePageBlob((boolean) value); return true; case "downloadLinkExpiration": getOrCreateConfiguration((BlobComponent) component).setDownloadLinkExpiration((java.lang.Long) value); return true; case "lazyStartProducer": ((BlobComponent) component).setLazyStartProducer((boolean) value); return true; + case "maxConcurrency": getOrCreateConfiguration((BlobComponent) component).setMaxConcurrency((java.lang.Integer) value); return true; + case "maxSingleUploadSize": getOrCreateConfiguration((BlobComponent) component).setMaxSingleUploadSize((java.lang.Long) value); return true; case "operation": getOrCreateConfiguration((BlobComponent) component).setOperation((org.apache.camel.component.azure.storage.blob.BlobOperationsDefinition) value); return true; case "pageBlobSize": getOrCreateConfiguration((BlobComponent) component).setPageBlobSize((java.lang.Long) value); return true; case "autowiredEnabled": ((BlobComponent) component).setAutowiredEnabled((boolean) value); return true; diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java index 96390e401e9b5..67714d59fd0a8 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/BlobEndpointBuilderFactory.java @@ -1903,6 +1903,38 @@ default BlobEndpointProducerBuilder blockListType(String blockListType) { doSetProperty("blockListType", blockListType); return this; } + /** + * The block size in bytes to use for chunked uploads with + * uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum + * is 4000MB. Must be greater than 0. + * + * The option is a: java.lang.Long type. + * + * Group: producer + * + * @param blockSize the value to set + * @return the dsl builder + */ + default BlobEndpointProducerBuilder blockSize(Long blockSize) { + doSetProperty("blockSize", blockSize); + return this; + } + /** + * The block size in bytes to use for chunked uploads with + * uploadBlockBlobChunked operation. Default is 4MB (4194304). Maximum + * is 4000MB. Must be greater than 0. + * + * The option will be converted to a java.lang.Long type. + * + * Group: producer + * + * @param blockSize the value to set + * @return the dsl builder + */ + default BlobEndpointProducerBuilder blockSize(String blockSize) { + doSetProperty("blockSize", blockSize); + return this; + } /** * When using getChangeFeed producer operation, this gives additional * context that is passed through the Http pipeline during the service @@ -2164,6 +2196,73 @@ default BlobEndpointProducerBuilder downloadLinkExpiration(String downloadLinkEx doSetProperty("downloadLinkExpiration", downloadLinkExpiration); return this; } + /** + * The maximum number of parallel requests to use during upload with + * uploadBlockBlobChunked operation. Default is determined by the Azure + * SDK based on available processors. + * + * The option is a: java.lang.Integer type. + * + * Group: producer + * + * @param maxConcurrency the value to set + * @return the dsl builder + */ + default BlobEndpointProducerBuilder maxConcurrency(Integer maxConcurrency) { + doSetProperty("maxConcurrency", maxConcurrency); + return this; + } + /** + * The maximum number of parallel requests to use during upload with + * uploadBlockBlobChunked operation. Default is determined by the Azure + * SDK based on available processors. + * + * The option will be converted to a java.lang.Integer + * type. + * + * Group: producer + * + * @param maxConcurrency the value to set + * @return the dsl builder + */ + default BlobEndpointProducerBuilder maxConcurrency(String maxConcurrency) { + doSetProperty("maxConcurrency", maxConcurrency); + return this; + } + /** + * The maximum size in bytes for a single upload request with + * uploadBlockBlobChunked operation. Files smaller than this will be + * uploaded in a single request. Files larger will use chunked upload + * with blocks of size blockSize. Default is 256MB. + * + * The option is a: java.lang.Long type. + * + * Group: producer + * + * @param maxSingleUploadSize the value to set + * @return the dsl builder + */ + default BlobEndpointProducerBuilder maxSingleUploadSize(Long maxSingleUploadSize) { + doSetProperty("maxSingleUploadSize", maxSingleUploadSize); + return this; + } + /** + * The maximum size in bytes for a single upload request with + * uploadBlockBlobChunked operation. Files smaller than this will be + * uploaded in a single request. Files larger will use chunked upload + * with blocks of size blockSize. Default is 256MB. + * + * The option will be converted to a java.lang.Long type. + * + * Group: producer + * + * @param maxSingleUploadSize the value to set + * @return the dsl builder + */ + default BlobEndpointProducerBuilder maxSingleUploadSize(String maxSingleUploadSize) { + doSetProperty("maxSingleUploadSize", maxSingleUploadSize); + return this; + } /** * The blob operation that can be used with this component on the * producer. @@ -3842,8 +3941,9 @@ public String azureStorageBlobListBlobContainersOptions() { return "CamelAzureStorageBlobListBlobContainersOptions"; } /** - * (downloadBlobToFile) ParallelTransferOptions to use to download to - * file. Number of parallel transfers parameter is ignored. + * (downloadBlobToFile, uploadBlockBlobChunked) ParallelTransferOptions + * to use to download to file or upload from file. Number of parallel + * transfers parameter is ignored for downloads. * * The option is a: {@code ParallelTransferOptions} type. * @@ -3855,6 +3955,65 @@ public String azureStorageBlobListBlobContainersOptions() { public String azureStorageBlobParallelTransferOptions() { return "CamelAzureStorageBlobParallelTransferOptions"; } + /** + * (uploadBlockBlobChunked) The local file path to upload. Can be + * provided as a File, Path, or String in the message body, or via this + * header. + * + * The option is a: {@code String} type. + * + * Group: producer + * + * @return the name of the header {@code AzureStorageBlobFilePath}. + */ + public String azureStorageBlobFilePath() { + return "CamelAzureStorageBlobFilePath"; + } + /** + * (uploadBlockBlobChunked) The block size in bytes to use for chunked + * uploads. Default is 4MB (4194304). Maximum is 4000MB. Must be greater + * than 0. + * + * The option is a: {@code Long} type. + * + * Group: producer + * + * @return the name of the header {@code AzureStorageBlobBlockSize}. + */ + public String azureStorageBlobBlockSize() { + return "CamelAzureStorageBlobBlockSize"; + } + /** + * (uploadBlockBlobChunked) The maximum number of parallel requests to + * use during upload. Default is determined by the Azure SDK based on + * available processors. + * + * The option is a: {@code Integer} type. + * + * Group: producer + * + * @return the name of the header {@code + * AzureStorageBlobMaxConcurrency}. + */ + public String azureStorageBlobMaxConcurrency() { + return "CamelAzureStorageBlobMaxConcurrency"; + } + /** + * (uploadBlockBlobChunked) The maximum size in bytes for a single + * upload request. Files smaller than this will be uploaded in a single + * request. Files larger will use chunked upload with blocks of size + * blockSize. Default is 256MB. + * + * The option is a: {@code Long} type. + * + * Group: producer + * + * @return the name of the header {@code + * AzureStorageBlobMaxSingleUploadSize}. + */ + public String azureStorageBlobMaxSingleUploadSize() { + return "CamelAzureStorageBlobMaxSingleUploadSize"; + } /** * (downloadLink) Override the default expiration (millis) of URL * download link.