This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
The following commit(s) were added to refs/heads/main by this push:
new 0fd4a6fe02f CAMEL-22600 - Camel-IBM-Cos: Create a Spring Boot starter
for it (#1549)
0fd4a6fe02f is described below
commit 0fd4a6fe02fc32846f9239da528f335d726fd70d
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Oct 24 15:11:18 2025 +0200
CAMEL-22600 - Camel-IBM-Cos: Create a Spring Boot starter for it (#1549)
Signed-off-by: Andrea Cosentino <[email protected]>
---
.../camel/springboot/catalog/components.properties | 1 +
.../springboot/catalog/components/ibm-cos.json | 128 +++++++
.../camel/springboot/catalog/dataformats/pqc.json | 4 +-
components-starter/camel-ibm-cos-starter/pom.xml | 56 +++
.../src/main/docs/ibm-cos.json | 220 +++++++++++
.../IBMCOSComponentAutoConfiguration.java | 77 ++++
.../springboot/IBMCOSComponentConfiguration.java | 418 +++++++++++++++++++++
.../cos/springboot/IBMCOSComponentConverter.java | 65 ++++
.../src/main/resources/META-INF/LICENSE.txt | 203 ++++++++++
.../src/main/resources/META-INF/NOTICE.txt | 11 +
...rk.boot.autoconfigure.AutoConfiguration.imports | 19 +
components-starter/pom.xml | 1 +
tooling/camel-spring-boot-bom/pom.xml | 5 +
tooling/camel-spring-boot-dependencies/pom.xml | 5 +
14 files changed, 1211 insertions(+), 2 deletions(-)
diff --git
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
index c2127f02fe1..c0053940634 100644
---
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
+++
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components.properties
@@ -156,6 +156,7 @@ hwcloud-iam
hwcloud-imagerecognition
hwcloud-obs
hwcloud-smn
+ibm-cos
ibm-secrets-manager
iec60870-client
iec60870-server
diff --git
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/ibm-cos.json
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/ibm-cos.json
new file mode 100644
index 00000000000..bdf6e94d708
--- /dev/null
+++
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/components/ibm-cos.json
@@ -0,0 +1,128 @@
+{
+ "component": {
+ "kind": "component",
+ "name": "ibm-cos",
+ "title": "IBM Cloud Object Storage",
+ "description": "Store and retrieve objects from IBM Cloud Object Storage.",
+ "deprecated": false,
+ "firstVersion": "4.16.0",
+ "label": "cloud,file",
+ "javaType": "org.apache.camel.component.ibm.cos.IBMCOSComponent",
+ "supportLevel": "Preview",
+ "groupId": "org.apache.camel.springboot",
+ "artifactId": "camel-ibm-cos-starter",
+ "version": "4.16.0-SNAPSHOT",
+ "scheme": "ibm-cos",
+ "extendsScheme": "",
+ "syntax": "ibm-cos:bucketName",
+ "async": false,
+ "api": false,
+ "consumerOnly": false,
+ "producerOnly": false,
+ "lenientProperties": false,
+ "browsable": false,
+ "remote": true
+ },
+ "componentProperties": {
+ "autoCreateBucket": { "index": 0, "kind": "property", "displayName": "Auto
Create Bucket", "group": "common", "label": "common", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Automatically create the bucket if it doesn't
exist" },
+ "configuration": { "index": 1, "kind": "property", "displayName":
"Configuration", "group": "common", "label": "", "required": false, "type":
"object", "javaType": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"deprecated": false, "autowired": false, "secret": false, "description": "The
component configuration" },
+ "delimiter": { "index": 2, "kind": "property", "displayName": "Delimiter",
"group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The delimiter to use for listing objects" },
+ "endpointUrl": { "index": 3, "kind": "property", "displayName": "Endpoint
Url", "group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM COS Endpoint URL (e.g.,
https:\/\/s3.us-south.cloud-object-storage.appdomain.cloud)" },
+ "location": { "index": 4, "kind": "property", "displayName": "Location",
"group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM COS Location\/Region (e.g., us-south,
eu-gb)" },
+ "prefix": { "index": 5, "kind": "property", "displayName": "Prefix",
"group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The prefix to use for listing objects" },
+ "bridgeErrorHandler": { "index": 6, "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 like [...]
+ "deleteAfterRead": { "index": 7, "kind": "property", "displayName":
"Delete After Read", "group": "consumer", "label": "consumer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": true,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Delete the object from
IBM COS after it has been retrieved" },
+ "destinationBucket": { "index": 8, "kind": "property", "displayName":
"Destination Bucket", "group": "consumer", "label": "consumer", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The destination bucket to move objects to" },
+ "destinationBucketPrefix": { "index": 9, "kind": "property",
"displayName": "Destination Bucket Prefix", "group": "consumer", "label":
"consumer", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "The prefix to add to
objects in the destination bucket" },
+ "destinationBucketSuffix": { "index": 10, "kind": "property",
"displayName": "Destination Bucket Suffix", "group": "consumer", "label":
"consumer", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "The suffix to add to
objects in the destination bucket" },
+ "fileName": { "index": 11, "kind": "property", "displayName": "File Name",
"group": "consumer", "label": "consumer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "To get the object from the bucket with the
given file name" },
+ "includeBody": { "index": 12, "kind": "property", "displayName": "Include
Body", "group": "consumer", "label": "consumer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Include the object body in the exchange" },
+ "includeFolders": { "index": 13, "kind": "property", "displayName":
"Include Folders", "group": "consumer", "label": "consumer", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Include folders\/directories when listing
objects" },
+ "moveAfterRead": { "index": 14, "kind": "property", "displayName": "Move
After Read", "group": "consumer", "label": "consumer", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Move the object to a different bucket after it
has been retrieved" },
+ "autocloseBody": { "index": 15, "kind": "property", "displayName":
"Autoclose Body", "group": "consumer (advanced)", "label": "consumer,advanced",
"required": false, "type": "boolean", "javaType": "boolean", "deprecated":
false, "autowired": false, "secret": false, "defaultValue": true,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Whether to automatically
close the object input stream after proc [...]
+ "deleteAfterWrite": { "index": 16, "kind": "property", "displayName":
"Delete After Write", "group": "producer", "label": "producer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Delete the object from
the local filesystem after uploading" },
+ "keyName": { "index": 17, "kind": "property", "displayName": "Key Name",
"group": "producer", "label": "producer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The key name for the object" },
+ "lazyStartProducer": { "index": 18, "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 fai [...]
+ "multiPartUpload": { "index": 19, "kind": "property", "displayName":
"Multi Part Upload", "group": "producer", "label": "producer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Use multi-part upload
for large files" },
+ "operation": { "index": 20, "kind": "property", "displayName":
"Operation", "group": "producer", "label": "producer", "required": false,
"type": "enum", "javaType":
"org.apache.camel.component.ibm.cos.IBMCOSOperations", "enum": [ "copyObject",
"listObjects", "deleteObject", "deleteObjects", "deleteBucket", "listBuckets",
"getObject", "getObjectRange", "headBucket", "createBucket", "putObject" ],
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apac [...]
+ "partSize": { "index": 21, "kind": "property", "displayName": "Part Size",
"group": "producer", "label": "producer", "required": false, "type": "integer",
"javaType": "long", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": 26214400, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Part size for multi-part uploads (default
25MB)" },
+ "storageClass": { "index": 22, "kind": "property", "displayName": "Storage
Class", "group": "producer", "label": "producer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The storage class to use when storing objects
(e.g., STANDARD, VAULT, COLD, FLEX)" },
+ "autowiredEnabled": { "index": 23, "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 [...]
+ "cosClient": { "index": 24, "kind": "property", "displayName": "Cos
Client", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "com.ibm.cloud.objectstorage.services.s3.AmazonS3",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Reference to an IBM COS
Client instance in the registry" },
+ "healthCheckConsumerEnabled": { "index": 25, "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": 26, "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 produce [...]
+ "apiKey": { "index": 27, "kind": "property", "displayName": "Api Key",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM Cloud API Key for authentication" },
+ "serviceInstanceId": { "index": 28, "kind": "property", "displayName":
"Service Instance Id", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM COS Service Instance ID (CRN)" }
+ },
+ "headers": {
+ "CamelIBMCOSBucketName": { "index": 0, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The bucket Name which this object will be stored or
which will be used for the current operation", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#BUCKET_NAME" },
+ "CamelIBMCOSBucketDestinationName": { "index": 1, "kind": "header",
"displayName": "", "group": "producer", "label": "producer", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The bucket Destination Name which will
be used for the current operation", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#BUCKET_DESTINATION_NAME" },
+ "CamelIBMCOSContentControl": { "index": 2, "kind": "header",
"displayName": "", "group": "common", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The optional Cache-Control HTTP header
which allows the user to specify caching behavior", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#CACHE_CONTROL" },
+ "CamelIBMCOSContentDisposition": { "index": 3, "kind": "header",
"displayName": "", "group": "common", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The optional Content-Disposition HTTP
header, which specifies presentational information such as the recommended
filename", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#CONTENT_DISPOSITION" },
+ "CamelIBMCOSContentEncoding": { "index": 4, "kind": "header",
"displayName": "", "group": "common", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The optional Content-Encoding HTTP
header specifying what content encodings have been applied to the object",
"constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#CONTENT_ENCODING" },
+ "CamelIBMCOSContentLength": { "index": 5, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "Long",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The Content-Length HTTP header indicating the size of
the associated object in bytes", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#CONTENT_LENGTH" },
+ "CamelIBMCOSContentMD5": { "index": 6, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The base64 encoded 128-bit MD5 digest of the associated
object", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#CONTENT_MD5" },
+ "CamelIBMCOSContentType": { "index": 7, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The Content-Type HTTP header, which indicates the type
of content stored in the associated object", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#CONTENT_TYPE" },
+ "CamelIBMCOSETag": { "index": 8, "kind": "header", "displayName": "",
"group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The ETag value for the object", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#E_TAG" },
+ "CamelIBMCOSKey": { "index": 9, "kind": "header", "displayName": "",
"group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The key under which this object is stored or will be
stored", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#KEY" },
+ "CamelIBMCOSDestinationKey": { "index": 10, "kind": "header",
"displayName": "", "group": "producer", "label": "producer", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The Destination key which will be used
for the current operation", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#DESTINATION_KEY" },
+ "CamelIBMCOSLastModified": { "index": 11, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType":
"java.util.Date", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The value of the Last-Modified header,
indicating the date and time at which IBM COS last recorded a modification to
the object", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#LAST_MODIFIED" },
+ "CamelIBMCOSVersionId": { "index": 12, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The version ID of the associated IBM COS object if
available", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#VERSION_ID" },
+ "CamelIBMCOSOperation": { "index": 13, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The operation to perform", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#COS_OPERATION" },
+ "CamelIBMCOSPrefix": { "index": 14, "kind": "header", "displayName": "",
"group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The prefix which is used to filter objects",
"constantName": "org.apache.camel.component.ibm.cos.IBMCOSConstants#PREFIX" },
+ "CamelIBMCOSDelimiter": { "index": 15, "kind": "header", "displayName":
"", "group": "common", "label": "", "required": false, "javaType": "String",
"deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "description": "The delimiter which is used to filter objects",
"constantName": "org.apache.camel.component.ibm.cos.IBMCOSConstants#DELIMITER"
},
+ "CamelIBMCOSKeysToDelete": { "index": 16, "kind": "header", "displayName":
"", "group": "producer", "label": "producer", "required": false, "javaType":
"java.util.List<String>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "A list of keys to delete
when using deleteObjects operation", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#KEYS_TO_DELETE" },
+ "CamelIBMCOSMetadata": { "index": 17, "kind": "header", "displayName": "",
"group": "common", "label": "", "required": false, "javaType":
"java.util.Map<String, String>", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "A map of metadata to be
stored with the object in IBM COS", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#METADATA" },
+ "CamelIBMCOSRangeStart": { "index": 18, "kind": "header", "displayName":
"", "group": "producer", "label": "producer", "required": false, "javaType":
"Long", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The range start position for partial object
retrieval", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#RANGE_START" },
+ "CamelIBMCOSRangeEnd": { "index": 19, "kind": "header", "displayName": "",
"group": "producer", "label": "producer", "required": false, "javaType":
"Long", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The range end position for partial object
retrieval", "constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#RANGE_END" },
+ "CamelIBMCOSBucketExists": { "index": 20, "kind": "header", "displayName":
"", "group": "producer", "label": "producer", "required": false, "javaType":
"Boolean", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "Whether the bucket exists or not",
"constantName":
"org.apache.camel.component.ibm.cos.IBMCOSConstants#BUCKET_EXISTS" }
+ },
+ "properties": {
+ "bucketName": { "index": 0, "kind": "path", "displayName": "Bucket Name",
"group": "common", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Bucket name" },
+ "autoCreateBucket": { "index": 1, "kind": "parameter", "displayName":
"Auto Create Bucket", "group": "common", "label": "common", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Automatically create the bucket if it doesn't
exist" },
+ "delimiter": { "index": 2, "kind": "parameter", "displayName":
"Delimiter", "group": "common", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The delimiter to use for listing objects" },
+ "endpointUrl": { "index": 3, "kind": "parameter", "displayName": "Endpoint
Url", "group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM COS Endpoint URL (e.g.,
https:\/\/s3.us-south.cloud-object-storage.appdomain.cloud)" },
+ "location": { "index": 4, "kind": "parameter", "displayName": "Location",
"group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM COS Location\/Region (e.g., us-south,
eu-gb)" },
+ "prefix": { "index": 5, "kind": "parameter", "displayName": "Prefix",
"group": "common", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The prefix to use for listing objects" },
+ "deleteAfterRead": { "index": 6, "kind": "parameter", "displayName":
"Delete After Read", "group": "consumer", "label": "consumer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": true,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Delete the object from
IBM COS after it has been retrieved" },
+ "destinationBucket": { "index": 7, "kind": "parameter", "displayName":
"Destination Bucket", "group": "consumer", "label": "consumer", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The destination bucket to move objects to" },
+ "destinationBucketPrefix": { "index": 8, "kind": "parameter",
"displayName": "Destination Bucket Prefix", "group": "consumer", "label":
"consumer", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "The prefix to add to
objects in the destination bucket" },
+ "destinationBucketSuffix": { "index": 9, "kind": "parameter",
"displayName": "Destination Bucket Suffix", "group": "consumer", "label":
"consumer", "required": false, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "The suffix to add to
objects in the destination bucket" },
+ "fileName": { "index": 10, "kind": "parameter", "displayName": "File
Name", "group": "consumer", "label": "consumer", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "To get the object from the bucket with the
given file name" },
+ "includeBody": { "index": 11, "kind": "parameter", "displayName": "Include
Body", "group": "consumer", "label": "consumer", "required": false, "type":
"boolean", "javaType": "boolean", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Include the object body in the exchange" },
+ "includeFolders": { "index": 12, "kind": "parameter", "displayName":
"Include Folders", "group": "consumer", "label": "consumer", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Include folders\/directories when listing
objects" },
+ "maxMessagesPerPoll": { "index": 13, "kind": "parameter", "displayName":
"Max Messages Per Poll", "group": "consumer", "label": "consumer", "required":
false, "type": "integer", "javaType": "int", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": 10, "description": "Gets the maximum
number of messages as a limit to poll at each polling." },
+ "moveAfterRead": { "index": 14, "kind": "parameter", "displayName": "Move
After Read", "group": "consumer", "label": "consumer", "required": false,
"type": "boolean", "javaType": "boolean", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Move the object to a different bucket after it
has been retrieved" },
+ "sendEmptyMessageWhenIdle": { "index": 15, "kind": "parameter",
"displayName": "Send Empty Message When Idle", "group": "consumer", "label":
"consumer", "required": false, "type": "boolean", "javaType": "boolean",
"deprecated": false, "autowired": false, "secret": false, "defaultValue":
false, "description": "If the polling consumer did not poll any files, you can
enable this option to send an empty message (no body) instead." },
+ "autocloseBody": { "index": 16, "kind": "parameter", "displayName":
"Autoclose Body", "group": "consumer (advanced)", "label": "consumer,advanced",
"required": false, "type": "boolean", "javaType": "boolean", "deprecated":
false, "autowired": false, "secret": false, "defaultValue": true,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Whether to automatically
close the object input stream after pro [...]
+ "bridgeErrorHandler": { "index": 17, "kind": "parameter", "displayName":
"Bridge Error Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "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 [...]
+ "exceptionHandler": { "index": 18, "kind": "parameter", "displayName":
"Exception Handler", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.",
"deprecated": false, "autowired": false, "secret": false, "description": "To
let the consumer use a custom ExceptionHandler. Notice if the option
bridgeErrorHandler is enabled then this option is not in use. By de [...]
+ "exchangePattern": { "index": 19, "kind": "parameter", "displayName":
"Exchange Pattern", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "enum", "javaType":
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ],
"deprecated": false, "autowired": false, "secret": false, "description": "Sets
the exchange pattern when the consumer creates an exchange." },
+ "inProgressRepository": { "index": 20, "kind": "parameter", "displayName":
"In Progress Repository", "group": "consumer (advanced)", "label":
"consumer,advanced", "required": false, "type": "object", "javaType":
"org.apache.camel.spi.IdempotentRepository", "deprecated": false, "autowired":
false, "secret": false, "description": "A pluggable in-progress repository to
track objects being consumed" },
+ "pollStrategy": { "index": 21, "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 po
[...]
+ "deleteAfterWrite": { "index": 22, "kind": "parameter", "displayName":
"Delete After Write", "group": "producer", "label": "producer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Delete the object from
the local filesystem after uploading" },
+ "keyName": { "index": 23, "kind": "parameter", "displayName": "Key Name",
"group": "producer", "label": "producer", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The key name for the object" },
+ "multiPartUpload": { "index": 24, "kind": "parameter", "displayName":
"Multi Part Upload", "group": "producer", "label": "producer", "required":
false, "type": "boolean", "javaType": "boolean", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Use multi-part upload
for large files" },
+ "operation": { "index": 25, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "producer", "required": false,
"type": "enum", "javaType":
"org.apache.camel.component.ibm.cos.IBMCOSOperations", "enum": [ "copyObject",
"listObjects", "deleteObject", "deleteObjects", "deleteBucket", "listBuckets",
"getObject", "getObjectRange", "headBucket", "createBucket", "putObject" ],
"deprecated": false, "autowired": false, "secret": false, "configurationClass":
"org.apa [...]
+ "partSize": { "index": 26, "kind": "parameter", "displayName": "Part
Size", "group": "producer", "label": "producer", "required": false, "type":
"integer", "javaType": "long", "deprecated": false, "autowired": false,
"secret": false, "defaultValue": 26214400, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "Part size for multi-part uploads (default
25MB)" },
+ "storageClass": { "index": 27, "kind": "parameter", "displayName":
"Storage Class", "group": "producer", "label": "producer", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "The storage class to use when storing objects
(e.g., STANDARD, VAULT, COLD, FLEX)" },
+ "lazyStartProducer": { "index": 28, "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 produ [...]
+ "cosClient": { "index": 29, "kind": "parameter", "displayName": "Cos
Client", "group": "advanced", "label": "advanced", "required": false, "type":
"object", "javaType": "com.ibm.cloud.objectstorage.services.s3.AmazonS3",
"deprecated": false, "deprecationNote": "", "autowired": true, "secret": false,
"configurationClass": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
"configurationField": "configuration", "description": "Reference to an IBM COS
Client instance in the registry" },
+ "backoffErrorThreshold": { "index": 30, "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": 31, "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": 32, "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 h [...]
+ "delay": { "index": 33, "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": 34, "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": 35, "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": 36, "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": 37, "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 log [...]
+ "scheduledExecutorService": { "index": 38, "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": 39, "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": 40, "kind": "parameter", "displayName":
"Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler",
"required": false, "type": "object", "javaType":
"java.util.Map<java.lang.String, java.lang.Object>", "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 i [...]
+ "startScheduler": { "index": 41, "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": 42, "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": 43, "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." },
+ "apiKey": { "index": 44, "kind": "parameter", "displayName": "Api Key",
"group": "security", "label": "security", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM Cloud API Key for authentication" },
+ "serviceInstanceId": { "index": 45, "kind": "parameter", "displayName":
"Service Instance Id", "group": "security", "label": "security", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": true, "configurationClass":
"org.apache.camel.component.ibm.cos.IBMCOSConfiguration", "configurationField":
"configuration", "description": "IBM COS Service Instance ID (CRN)" }
+ }
+}
diff --git
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dataformats/pqc.json
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dataformats/pqc.json
index b5c96b7b7cd..c2a8ebd8efe 100644
---
a/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dataformats/pqc.json
+++
b/catalog/camel-catalog-provider-springboot/src/main/resources/org/apache/camel/springboot/catalog/dataformats/pqc.json
@@ -17,8 +17,8 @@
},
"properties": {
"id": { "index": 0, "kind": "attribute", "displayName": "Id", "group":
"common", "required": false, "type": "string", "javaType": "java.lang.String",
"deprecated": false, "autowired": false, "secret": false, "description": "The
id of this node" },
- "keyEncapsulationAlgorithm": { "index": 1, "kind": "attribute",
"displayName": "Key Encapsulation Algorithm", "group": "common", "required":
false, "type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "MLKEM", "description":
"The Post-Quantum KEM algorithm to use for key encapsulation. Supported values:
MLKEM, BIKE, HQC, CMCE, SABER, FRODO, NTRU, NTRULPRime, SNTRUPrime, KYBER" },
- "symmetricKeyAlgorithm": { "index": 2, "kind": "attribute", "displayName":
"Symmetric Key Algorithm", "group": "common", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": "AES", "description": "The symmetric
encryption algorithm to use with the shared secret. Supported values: AES,
ARIA, RC2, RC5, CAMELLIA, CAST5, CAST6, CHACHA7539, etc." },
+ "keyEncapsulationAlgorithm": { "index": 1, "kind": "attribute",
"displayName": "Key Encapsulation Algorithm", "group": "common", "required":
false, "type": "enum", "javaType": "java.lang.String", "enum": [ "MLKEM",
"BIKE", "HQC", "CMCE", "SABER", "FRODO", "NTRU", "NTRULPRime", "SNTRUPrime",
"KYBER" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "MLKEM", "description": "The Post-Quantum KEM algorithm to use
for key encapsulation. Supported values: MLKEM, [...]
+ "symmetricKeyAlgorithm": { "index": 2, "kind": "attribute", "displayName":
"Symmetric Key Algorithm", "group": "common", "required": false, "type":
"enum", "javaType": "java.lang.String", "enum": [ "AES", "ARIA", "RC2", "RC5",
"CAMELLIA", "CAST5", "CAST6", "CHACHA7539", "DSTU7624", "GOST28147",
"GOST3412_2015", "GRAIN128", "HC128", "HC256", "SALSA20", "SEED", "SM4",
"DESEDE" ], "deprecated": false, "autowired": false, "secret": false,
"defaultValue": "AES", "description": "The symmet [...]
"symmetricKeyLength": { "index": 3, "kind": "attribute", "displayName":
"Symmetric Key Length", "group": "common", "required": false, "type":
"integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": 128, "description": "The length (in
bits) of the symmetric key." },
"keyPair": { "index": 4, "kind": "attribute", "displayName": "Key Pair",
"group": "common", "required": false, "type": "object", "javaType":
"java.security.KeyPair", "deprecated": false, "autowired": false, "secret":
false, "description": "Refers to the KeyPair to lookup from the register to use
for KEM operations." },
"bufferSize": { "index": 5, "kind": "attribute", "displayName": "Buffer
Size", "group": "advanced", "label": "advanced", "required": false, "type":
"integer", "javaType": "java.lang.Integer", "deprecated": false, "autowired":
false, "secret": false, "defaultValue": 4096, "description": "The size of the
buffer used for streaming encryption\/decryption." },
diff --git a/components-starter/camel-ibm-cos-starter/pom.xml
b/components-starter/camel-ibm-cos-starter/pom.xml
new file mode 100644
index 00000000000..437ec53255b
--- /dev/null
+++ b/components-starter/camel-ibm-cos-starter/pom.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.camel.springboot</groupId>
+ <artifactId>components-starter</artifactId>
+ <version>4.16.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>camel-ibm-cos-starter</artifactId>
+ <packaging>jar</packaging>
+ <name>Camel SB Starters :: ibm-cos</name>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ <version>${spring-boot-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-ibm-cos</artifactId>
+ <version>${camel-version}</version>
+ <!--START OF GENERATED CODE-->
+ <exclusions>
+ <exclusion>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </exclusion>
+ </exclusions>
+ <!--END OF GENERATED CODE-->
+ </dependency>
+ <!--START OF GENERATED CODE-->
+ <dependency>
+ <groupId>org.apache.camel.springboot</groupId>
+ <artifactId>camel-core-starter</artifactId>
+ </dependency>
+ <!--END OF GENERATED CODE-->
+ </dependencies>
+</project>
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/docs/ibm-cos.json
b/components-starter/camel-ibm-cos-starter/src/main/docs/ibm-cos.json
new file mode 100644
index 00000000000..07d63e8ca7c
--- /dev/null
+++ b/components-starter/camel-ibm-cos-starter/src/main/docs/ibm-cos.json
@@ -0,0 +1,220 @@
+{
+ "groups": [
+ {
+ "name": "camel.component.ibm-cos",
+ "type":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.customizer",
+ "type":
"org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon$CustomizerProperties",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "sourceMethod": "getCustomizer()"
+ }
+ ],
+ "properties": [
+ {
+ "name": "camel.component.ibm-cos.api-key",
+ "type": "java.lang.String",
+ "description": "IBM Cloud API Key for authentication",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.auto-create-bucket",
+ "type": "java.lang.Boolean",
+ "description": "Automatically create the bucket if it doesn't exist",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": false
+ },
+ {
+ "name": "camel.component.ibm-cos.autoclose-body",
+ "type": "java.lang.Boolean",
+ "description": "Whether to automatically close the object input stream
after processing",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.autowired-enabled",
+ "type": "java.lang.Boolean",
+ "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.",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.bridge-error-handler",
+ "type": "java.lang.Boolean",
+ "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 n [...]
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": false
+ },
+ {
+ "name": "camel.component.ibm-cos.configuration",
+ "type": "org.apache.camel.component.ibm.cos.IBMCOSConfiguration",
+ "description": "The component configuration. The option is a
org.apache.camel.component.ibm.cos.IBMCOSConfiguration type.",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.cos-client",
+ "type": "com.ibm.cloud.objectstorage.services.s3.AmazonS3",
+ "description": "Reference to an IBM COS Client instance in the registry.
The option is a com.ibm.cloud.objectstorage.services.s3.AmazonS3 type.",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.customizer.enabled",
+ "type": "java.lang.Boolean",
+ "sourceType":
"org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon$CustomizerProperties"
+ },
+ {
+ "name": "camel.component.ibm-cos.delete-after-read",
+ "type": "java.lang.Boolean",
+ "description": "Delete the object from IBM COS after it has been
retrieved",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.delete-after-write",
+ "type": "java.lang.Boolean",
+ "description": "Delete the object from the local filesystem after
uploading",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": false
+ },
+ {
+ "name": "camel.component.ibm-cos.delimiter",
+ "type": "java.lang.String",
+ "description": "The delimiter to use for listing objects",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.destination-bucket",
+ "type": "java.lang.String",
+ "description": "The destination bucket to move objects to",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.destination-bucket-prefix",
+ "type": "java.lang.String",
+ "description": "The prefix to add to objects in the destination bucket",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.destination-bucket-suffix",
+ "type": "java.lang.String",
+ "description": "The suffix to add to objects in the destination bucket",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.enabled",
+ "type": "java.lang.Boolean",
+ "description": "Whether to enable auto configuration of the ibm-cos
component. This is enabled by default.",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.endpoint-url",
+ "type": "java.lang.String",
+ "description": "IBM COS Endpoint URL (e.g.,
https:\/\/s3.us-south.cloud-object-storage.appdomain.cloud)",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.file-name",
+ "type": "java.lang.String",
+ "description": "To get the object from the bucket with the given file
name",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.health-check-consumer-enabled",
+ "type": "java.lang.Boolean",
+ "description": "Used for enabling or disabling all consumer based health
checks from this component",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.health-check-producer-enabled",
+ "type": "java.lang.Boolean",
+ "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.",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.include-body",
+ "type": "java.lang.Boolean",
+ "description": "Include the object body in the exchange",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.include-folders",
+ "type": "java.lang.Boolean",
+ "description": "Include folders\/directories when listing objects",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": true
+ },
+ {
+ "name": "camel.component.ibm-cos.key-name",
+ "type": "java.lang.String",
+ "description": "The key name for the object",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.lazy-start-producer",
+ "type": "java.lang.Boolean",
+ "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 [...]
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": false
+ },
+ {
+ "name": "camel.component.ibm-cos.location",
+ "type": "java.lang.String",
+ "description": "IBM COS Location\/Region (e.g., us-south, eu-gb)",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.move-after-read",
+ "type": "java.lang.Boolean",
+ "description": "Move the object to a different bucket after it has been
retrieved",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": false
+ },
+ {
+ "name": "camel.component.ibm-cos.multi-part-upload",
+ "type": "java.lang.Boolean",
+ "description": "Use multi-part upload for large files",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": false
+ },
+ {
+ "name": "camel.component.ibm-cos.operation",
+ "type": "org.apache.camel.component.ibm.cos.IBMCOSOperations",
+ "description": "The operation to perform",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.part-size",
+ "type": "java.lang.Long",
+ "description": "Part size for multi-part uploads (default 25MB)",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration",
+ "defaultValue": 26214400
+ },
+ {
+ "name": "camel.component.ibm-cos.prefix",
+ "type": "java.lang.String",
+ "description": "The prefix to use for listing objects",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.service-instance-id",
+ "type": "java.lang.String",
+ "description": "IBM COS Service Instance ID (CRN)",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ },
+ {
+ "name": "camel.component.ibm-cos.storage-class",
+ "type": "java.lang.String",
+ "description": "The storage class to use when storing objects (e.g.,
STANDARD, VAULT, COLD, FLEX)",
+ "sourceType":
"org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConfiguration"
+ }
+ ],
+ "hints": [],
+ "ignored": {
+ "properties": []
+ }
+}
\ No newline at end of file
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentAutoConfiguration.java
b/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentAutoConfiguration.java
new file mode 100644
index 00000000000..3e579087074
--- /dev/null
+++
b/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentAutoConfiguration.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.ibm.cos.springboot;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Component;
+import org.apache.camel.component.ibm.cos.IBMCOSComponent;
+import org.apache.camel.spi.ComponentCustomizer;
+import org.apache.camel.spring.boot.CamelAutoConfiguration;
+import org.apache.camel.spring.boot.ComponentConfigurationProperties;
+import org.apache.camel.spring.boot.util.CamelPropertiesHelper;
+import
org.apache.camel.spring.boot.util.ConditionalOnCamelContextAndAutoConfigurationBeans;
+import org.apache.camel.spring.boot.util.ConditionalOnHierarchicalProperties;
+import org.apache.camel.spring.boot.util.HierarchicalPropertiesEvaluator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Conditional;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Configuration(proxyBeanMethods = false)
+@Conditional(ConditionalOnCamelContextAndAutoConfigurationBeans.class)
+@EnableConfigurationProperties({ComponentConfigurationProperties.class,IBMCOSComponentConfiguration.class})
+@ConditionalOnHierarchicalProperties({"camel.component",
"camel.component.ibm-cos"})
+@AutoConfigureAfter({CamelAutoConfiguration.class,
IBMCOSComponentConverter.class})
+public class IBMCOSComponentAutoConfiguration {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+ private final CamelContext camelContext;
+ @Autowired
+ private IBMCOSComponentConfiguration configuration;
+
+ public IBMCOSComponentAutoConfiguration(
+ org.apache.camel.CamelContext camelContext) {
+ this.camelContext = camelContext;
+ }
+
+ @Lazy
+ @Bean
+ public ComponentCustomizer configureIBMCOSComponent() {
+ return new ComponentCustomizer() {
+ @Override
+ public void configure(String name, Component target) {
+ CamelPropertiesHelper.copyProperties(camelContext,
configuration, target);
+ }
+ @Override
+ public boolean isEnabled(String name, Component target) {
+ return HierarchicalPropertiesEvaluator.evaluate(
+ applicationContext,
+ "camel.component.customizer",
+ "camel.component.ibm-cos.customizer")
+ && target instanceof IBMCOSComponent;
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentConfiguration.java
b/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentConfiguration.java
new file mode 100644
index 00000000000..e22331220e7
--- /dev/null
+++
b/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentConfiguration.java
@@ -0,0 +1,418 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.ibm.cos.springboot;
+
+import com.ibm.cloud.objectstorage.services.s3.AmazonS3;
+import org.apache.camel.component.ibm.cos.IBMCOSConfiguration;
+import org.apache.camel.component.ibm.cos.IBMCOSOperations;
+import org.apache.camel.spring.boot.ComponentConfigurationPropertiesCommon;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * Store and retrieve objects from IBM Cloud Object Storage.
+ *
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@ConfigurationProperties(prefix = "camel.component.ibm-cos")
+public class IBMCOSComponentConfiguration
+ extends
+ ComponentConfigurationPropertiesCommon {
+
+ /**
+ * Whether to enable auto configuration of the ibm-cos component. This is
+ * enabled by default.
+ */
+ private Boolean enabled;
+ /**
+ * Automatically create the bucket if it doesn't exist
+ */
+ private Boolean autoCreateBucket = false;
+ /**
+ * The component configuration. The option is a
+ * org.apache.camel.component.ibm.cos.IBMCOSConfiguration type.
+ */
+ private IBMCOSConfiguration configuration;
+ /**
+ * The delimiter to use for listing objects
+ */
+ private String delimiter;
+ /**
+ * IBM COS Endpoint URL (e.g.,
+ * https://s3.us-south.cloud-object-storage.appdomain.cloud)
+ */
+ private String endpointUrl;
+ /**
+ * IBM COS Location/Region (e.g., us-south, eu-gb)
+ */
+ private String location;
+ /**
+ * The prefix to use for listing objects
+ */
+ private String prefix;
+ /**
+ * 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.
+ */
+ private Boolean bridgeErrorHandler = false;
+ /**
+ * Delete the object from IBM COS after it has been retrieved
+ */
+ private Boolean deleteAfterRead = true;
+ /**
+ * The destination bucket to move objects to
+ */
+ private String destinationBucket;
+ /**
+ * The prefix to add to objects in the destination bucket
+ */
+ private String destinationBucketPrefix;
+ /**
+ * The suffix to add to objects in the destination bucket
+ */
+ private String destinationBucketSuffix;
+ /**
+ * To get the object from the bucket with the given file name
+ */
+ private String fileName;
+ /**
+ * Include the object body in the exchange
+ */
+ private Boolean includeBody = true;
+ /**
+ * Include folders/directories when listing objects
+ */
+ private Boolean includeFolders = true;
+ /**
+ * Move the object to a different bucket after it has been retrieved
+ */
+ private Boolean moveAfterRead = false;
+ /**
+ * Whether to automatically close the object input stream after processing
+ */
+ private Boolean autocloseBody = true;
+ /**
+ * Delete the object from the local filesystem after uploading
+ */
+ private Boolean deleteAfterWrite = false;
+ /**
+ * The key name for the object
+ */
+ private String keyName;
+ /**
+ * Whether the producer should be started lazy (on the first message). By
+ * starting lazy you can use this to allow CamelContext and routes to
+ * startup in situations where a producer may otherwise fail during
starting
+ * and cause the route to fail being started. By deferring this startup to
+ * be lazy then the startup failure can be handled during routing messages
+ * via Camel's routing error handlers. Beware that when the first message
is
+ * processed then creating and starting the producer may take a little time
+ * and prolong the total processing time of the processing.
+ */
+ private Boolean lazyStartProducer = false;
+ /**
+ * Use multi-part upload for large files
+ */
+ private Boolean multiPartUpload = false;
+ /**
+ * The operation to perform
+ */
+ private IBMCOSOperations operation;
+ /**
+ * Part size for multi-part uploads (default 25MB)
+ */
+ private Long partSize = 26214400L;
+ /**
+ * The storage class to use when storing objects (e.g., STANDARD, VAULT,
+ * COLD, FLEX)
+ */
+ private String storageClass;
+ /**
+ * Whether autowiring is enabled. This is used for automatic autowiring
+ * options (the option must be marked as autowired) by looking up in the
+ * registry to find if there is a single instance of matching type, which
+ * then gets configured on the component. This can be used for automatic
+ * configuring JDBC data sources, JMS connection factories, AWS Clients,
+ * etc.
+ */
+ private Boolean autowiredEnabled = true;
+ /**
+ * Reference to an IBM COS Client instance in the registry. The option is a
+ * com.ibm.cloud.objectstorage.services.s3.AmazonS3 type.
+ */
+ private AmazonS3 cosClient;
+ /**
+ * Used for enabling or disabling all consumer based health checks from
this
+ * component
+ */
+ private Boolean healthCheckConsumerEnabled = true;
+ /**
+ * 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.
+ */
+ private Boolean healthCheckProducerEnabled = true;
+ /**
+ * IBM Cloud API Key for authentication
+ */
+ private String apiKey;
+ /**
+ * IBM COS Service Instance ID (CRN)
+ */
+ private String serviceInstanceId;
+
+ public Boolean getAutoCreateBucket() {
+ return autoCreateBucket;
+ }
+
+ public void setAutoCreateBucket(Boolean autoCreateBucket) {
+ this.autoCreateBucket = autoCreateBucket;
+ }
+
+ public IBMCOSConfiguration getConfiguration() {
+ return configuration;
+ }
+
+ public void setConfiguration(IBMCOSConfiguration configuration) {
+ this.configuration = configuration;
+ }
+
+ public String getDelimiter() {
+ return delimiter;
+ }
+
+ public void setDelimiter(String delimiter) {
+ this.delimiter = delimiter;
+ }
+
+ public String getEndpointUrl() {
+ return endpointUrl;
+ }
+
+ public void setEndpointUrl(String endpointUrl) {
+ this.endpointUrl = endpointUrl;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public void setLocation(String location) {
+ this.location = location;
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public void setPrefix(String prefix) {
+ this.prefix = prefix;
+ }
+
+ public Boolean getBridgeErrorHandler() {
+ return bridgeErrorHandler;
+ }
+
+ public void setBridgeErrorHandler(Boolean bridgeErrorHandler) {
+ this.bridgeErrorHandler = bridgeErrorHandler;
+ }
+
+ public Boolean getDeleteAfterRead() {
+ return deleteAfterRead;
+ }
+
+ public void setDeleteAfterRead(Boolean deleteAfterRead) {
+ this.deleteAfterRead = deleteAfterRead;
+ }
+
+ public String getDestinationBucket() {
+ return destinationBucket;
+ }
+
+ public void setDestinationBucket(String destinationBucket) {
+ this.destinationBucket = destinationBucket;
+ }
+
+ public String getDestinationBucketPrefix() {
+ return destinationBucketPrefix;
+ }
+
+ public void setDestinationBucketPrefix(String destinationBucketPrefix) {
+ this.destinationBucketPrefix = destinationBucketPrefix;
+ }
+
+ public String getDestinationBucketSuffix() {
+ return destinationBucketSuffix;
+ }
+
+ public void setDestinationBucketSuffix(String destinationBucketSuffix) {
+ this.destinationBucketSuffix = destinationBucketSuffix;
+ }
+
+ public String getFileName() {
+ return fileName;
+ }
+
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
+
+ public Boolean getIncludeBody() {
+ return includeBody;
+ }
+
+ public void setIncludeBody(Boolean includeBody) {
+ this.includeBody = includeBody;
+ }
+
+ public Boolean getIncludeFolders() {
+ return includeFolders;
+ }
+
+ public void setIncludeFolders(Boolean includeFolders) {
+ this.includeFolders = includeFolders;
+ }
+
+ public Boolean getMoveAfterRead() {
+ return moveAfterRead;
+ }
+
+ public void setMoveAfterRead(Boolean moveAfterRead) {
+ this.moveAfterRead = moveAfterRead;
+ }
+
+ public Boolean getAutocloseBody() {
+ return autocloseBody;
+ }
+
+ public void setAutocloseBody(Boolean autocloseBody) {
+ this.autocloseBody = autocloseBody;
+ }
+
+ public Boolean getDeleteAfterWrite() {
+ return deleteAfterWrite;
+ }
+
+ public void setDeleteAfterWrite(Boolean deleteAfterWrite) {
+ this.deleteAfterWrite = deleteAfterWrite;
+ }
+
+ public String getKeyName() {
+ return keyName;
+ }
+
+ public void setKeyName(String keyName) {
+ this.keyName = keyName;
+ }
+
+ public Boolean getLazyStartProducer() {
+ return lazyStartProducer;
+ }
+
+ public void setLazyStartProducer(Boolean lazyStartProducer) {
+ this.lazyStartProducer = lazyStartProducer;
+ }
+
+ public Boolean getMultiPartUpload() {
+ return multiPartUpload;
+ }
+
+ public void setMultiPartUpload(Boolean multiPartUpload) {
+ this.multiPartUpload = multiPartUpload;
+ }
+
+ public IBMCOSOperations getOperation() {
+ return operation;
+ }
+
+ public void setOperation(IBMCOSOperations operation) {
+ this.operation = operation;
+ }
+
+ public Long getPartSize() {
+ return partSize;
+ }
+
+ public void setPartSize(Long partSize) {
+ this.partSize = partSize;
+ }
+
+ public String getStorageClass() {
+ return storageClass;
+ }
+
+ public void setStorageClass(String storageClass) {
+ this.storageClass = storageClass;
+ }
+
+ public Boolean getAutowiredEnabled() {
+ return autowiredEnabled;
+ }
+
+ public void setAutowiredEnabled(Boolean autowiredEnabled) {
+ this.autowiredEnabled = autowiredEnabled;
+ }
+
+ public AmazonS3 getCosClient() {
+ return cosClient;
+ }
+
+ public void setCosClient(AmazonS3 cosClient) {
+ this.cosClient = cosClient;
+ }
+
+ public Boolean getHealthCheckConsumerEnabled() {
+ return healthCheckConsumerEnabled;
+ }
+
+ public void setHealthCheckConsumerEnabled(Boolean
healthCheckConsumerEnabled) {
+ this.healthCheckConsumerEnabled = healthCheckConsumerEnabled;
+ }
+
+ public Boolean getHealthCheckProducerEnabled() {
+ return healthCheckProducerEnabled;
+ }
+
+ public void setHealthCheckProducerEnabled(Boolean
healthCheckProducerEnabled) {
+ this.healthCheckProducerEnabled = healthCheckProducerEnabled;
+ }
+
+ public String getApiKey() {
+ return apiKey;
+ }
+
+ public void setApiKey(String apiKey) {
+ this.apiKey = apiKey;
+ }
+
+ public String getServiceInstanceId() {
+ return serviceInstanceId;
+ }
+
+ public void setServiceInstanceId(String serviceInstanceId) {
+ this.serviceInstanceId = serviceInstanceId;
+ }
+}
\ No newline at end of file
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentConverter.java
b/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentConverter.java
new file mode 100644
index 00000000000..77f5c0a5782
--- /dev/null
+++
b/components-starter/camel-ibm-cos-starter/src/main/java/org/apache/camel/component/ibm/cos/springboot/IBMCOSComponentConverter.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.ibm.cos.springboot;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import org.springframework.beans.factory.annotation.Autowired;
+import
org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.convert.TypeDescriptor;
+import org.springframework.core.convert.converter.GenericConverter;
+import org.springframework.stereotype.Component;
+
+/**
+ * Generated by camel-package-maven-plugin - do not edit this file!
+ */
+@Configuration(proxyBeanMethods = false)
+@ConfigurationPropertiesBinding
+@Component
+public class IBMCOSComponentConverter implements GenericConverter {
+
+ @Autowired
+ private ApplicationContext applicationContext;
+
+ public Set<ConvertiblePair> getConvertibleTypes() {
+ Set<ConvertiblePair> answer = new LinkedHashSet<>();
+ answer.add(new ConvertiblePair(String.class,
org.apache.camel.component.ibm.cos.IBMCOSConfiguration.class));
+ answer.add(new ConvertiblePair(String.class,
com.ibm.cloud.objectstorage.services.s3.AmazonS3.class));
+ return answer;
+ }
+
+ public Object convert(
+ Object source,
+ TypeDescriptor sourceType,
+ TypeDescriptor targetType) {
+ if (source == null) {
+ return null;
+ }
+ String ref = source.toString();
+ if (!ref.startsWith("#")) {
+ return null;
+ }
+ ref = ref.startsWith("#bean:") ? ref.substring(6) : ref.substring(1);
+ switch (targetType.getName()) {
+ case "org.apache.camel.component.ibm.cos.IBMCOSConfiguration":
return applicationContext.getBean(ref,
org.apache.camel.component.ibm.cos.IBMCOSConfiguration.class);
+ case "com.ibm.cloud.objectstorage.services.s3.AmazonS3": return
applicationContext.getBean(ref,
com.ibm.cloud.objectstorage.services.s3.AmazonS3.class);
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/LICENSE.txt
b/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 00000000000..6b0b1270ff0
--- /dev/null
+++
b/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/NOTICE.txt
b/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 00000000000..2e215bf2e6b
--- /dev/null
+++
b/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+ =========================================================================
+ == NOTICE file corresponding to the section 4 d of ==
+ == the Apache License, Version 2.0, ==
+ == in this case for the Apache Camel distribution. ==
+ =========================================================================
+
+ This product includes software developed by
+ The Apache Software Foundation (http://www.apache.org/).
+
+ Please read the different LICENSE files present in the licenses directory of
+ this distribution.
diff --git
a/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
b/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 00000000000..2661f76ec5f
--- /dev/null
+++
b/components-starter/camel-ibm-cos-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1,19 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentConverter
+org.apache.camel.component.ibm.cos.springboot.IBMCOSComponentAutoConfiguration
diff --git a/components-starter/pom.xml b/components-starter/pom.xml
index 751c969baec..c3d16e3043e 100644
--- a/components-starter/pom.xml
+++ b/components-starter/pom.xml
@@ -258,6 +258,7 @@
<module>camel-huaweicloud-imagerecognition-starter</module>
<module>camel-huaweicloud-obs-starter</module>
<module>camel-huaweicloud-smn-starter</module>
+ <module>camel-ibm-cos-starter</module>
<module>camel-ibm-secrets-manager-starter</module>
<module>camel-ical-starter</module>
<module>camel-iec60870-starter</module>
diff --git a/tooling/camel-spring-boot-bom/pom.xml
b/tooling/camel-spring-boot-bom/pom.xml
index f94d671ffb2..61a51bd686d 100644
--- a/tooling/camel-spring-boot-bom/pom.xml
+++ b/tooling/camel-spring-boot-bom/pom.xml
@@ -823,6 +823,11 @@
<artifactId>camel-huaweicloud-smn-starter</artifactId>
<version>4.16.0-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.springboot</groupId>
+ <artifactId>camel-ibm-cos-starter</artifactId>
+ <version>4.16.0-SNAPSHOT</version>
+ </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-ibm-secrets-manager-starter</artifactId>
diff --git a/tooling/camel-spring-boot-dependencies/pom.xml
b/tooling/camel-spring-boot-dependencies/pom.xml
index 0f769d7f2a1..40927159b21 100644
--- a/tooling/camel-spring-boot-dependencies/pom.xml
+++ b/tooling/camel-spring-boot-dependencies/pom.xml
@@ -1087,6 +1087,11 @@
<artifactId>camel-huaweicloud-smn-starter</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.springboot</groupId>
+ <artifactId>camel-ibm-cos-starter</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-ibm-secrets-manager-starter</artifactId>