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

acosentino pushed a commit to branch CAMEL-21206
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 9e5af7ea88caaf3a7ea96885de712fe4c3c0aff3
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Sep 12 07:38:28 2024 +0200

    CAMEL-21206 - Camel-Google-Storage: Support prefix in ListObjects operation
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../camel/catalog/components/google-storage.json   | 47 +++++++++++-----------
 .../component/google/storage/google-storage.json   | 47 +++++++++++-----------
 .../storage/GoogleCloudStorageConstants.java       |  3 ++
 .../google/storage/GoogleCloudStorageProducer.java | 16 ++++++--
 .../google/storage/unit/ProducerLocalTest.java     | 21 ++++++++++
 .../GoogleCloudStorageEndpointBuilderFactory.java  | 12 ++++++
 6 files changed, 96 insertions(+), 50 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
index 7822a5935ee..1b89d18c95c 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/google-storage.json
@@ -49,29 +49,30 @@
     "CamelGoogleCloudStorageOperation": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform.", "const [...]
     "CamelGoogleCloudStorageBucketName": { "index": 1, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "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.google.storage.GoogleCloudStorageConstants#BUCKET_NAME"
 },
     "CamelGoogleCloudStorageObjectName": { "index": 2, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The object Name which will be used for 
the current operation", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#OBJECT_NAME"
 },
-    "CamelGoogleCloudStorageDestinationObjectName": { "index": 3, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
object Destination Name which will be used for the current operation", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DESTINATION_OBJECT_NAME"
 },
-    "CamelGoogleCloudStorageDestinationBucketName": { "index": 4, "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.google.storage.GoogleCloudStorageConstants#DESTINATION_BUCKET_NAME"
 },
-    "CamelGoogleCloudStorageDownloadLinkExpirationTime": { "index": 5, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "Long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": "300000", 
"description": "The time in millisecond the download link will be valid.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DOWNLOAD_LINK_EXPIRATION_TIME"
 },
-    "CamelGoogleCloudStorageContentLength": { "index": 6, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content length of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_LENGTH"
 },
-    "CamelGoogleCloudStorageContentType": { "index": 7, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content type of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_TYPE"
 },
-    "CamelGoogleCloudStorageCacheControl": { "index": 8, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Cache-Control metadata can specify 
two different aspects of how data is served from Cloud Storage: whether the 
data can be cached and whether the data can be transformed", "constantName": 
"org.apache.camel.component.google.s [...]
-    "CamelGoogleCloudStorageContentDisposition": { "index": 9, "kind": 
"header", "displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content disposition of this 
object.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_DISPOSITION"
 },
-    "CamelGoogleCloudStorageContentEncoding": { "index": 10, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content encoding of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_ENCODING"
 },
-    "CamelGoogleCloudStorageContentMd5": { "index": 11, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The md5 checksum of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_MD5"
 },
-    "CamelFileName": { "index": 12, "kind": "header", "displayName": "", 
"group": "consumer", "label": "consumer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The name of the blob", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#FILE_NAME"
 },
-    "CamelGoogleCloudStorageComponentCount": { "index": 13, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The component count of this object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_COMPONENT_COUNT"
 },
-    "CamelGoogleCloudStorageContentLanguage": { "index": 14, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Content-Language metadata indicates 
the language(s) that the object is intended for.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CONTENT_LANGUAGE"
 },
-    "CamelGoogleCloudStorageCustomTime": { "index": 15, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Custom-Time metadata is a 
user-specified date and time represented in the RFC 3339 format 
YYYY-MM-DD'T'HH:MM:SS.SS'Z' or YYYY-MM-DD'T'HH:MM:SS'Z' when milliseconds are 
zero. This metadata is typically set in order to  [...]
-    "CamelGoogleCloudStorageCrc32cHex": { "index": 16, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The CRC32c of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CRC32C_HEX"
 },
-    "CamelGoogleCloudStorageETag": { "index": 17, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The ETag for the Object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_ETAG"
 },
-    "CamelGoogleCloudStorageGeneration": { "index": 18, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Is the generation number of the object 
for which you are retrieving information.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_GENERATION"
 },
-    "CamelGoogleCloudStorageBlobId": { "index": 19, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.BlobId", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
blob id of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_BLOB_ID"
 },
-    "CamelGoogleCloudStorageKmsKeyName": { "index": 20, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The KMS key name", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_KMS_KEY_NAME"
 },
-    "CamelGoogleCloudStorageMediaLink": { "index": 21, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The media link", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_MEDIA_LINK"
 },
-    "CamelGoogleCloudStorageMetageneration": { "index": 22, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The metageneration of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_METAGENERATION"
 },
-    "CamelGoogleCloudStorageStorageClass": { "index": 23, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.StorageClass", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
storage class of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_STORAGE_CLASS"
 },
-    "CamelGoogleCloudStorageCreateTime": { "index": 24, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The creation time of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CREATE_TIME"
 },
-    "CamelGoogleCloudStorageLastUpdate": { "index": 25, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Date", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The last update of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_LAST_UPDATE"
 }
+    "CamelGoogleCloudStoragePrefixName": { "index": 3, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The prefix to be used in List Objects 
operation", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#PREFIX_NAME"
 },
+    "CamelGoogleCloudStorageDestinationObjectName": { "index": 4, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
object Destination Name which will be used for the current operation", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DESTINATION_OBJECT_NAME"
 },
+    "CamelGoogleCloudStorageDestinationBucketName": { "index": 5, "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.google.storage.GoogleCloudStorageConstants#DESTINATION_BUCKET_NAME"
 },
+    "CamelGoogleCloudStorageDownloadLinkExpirationTime": { "index": 6, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "Long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": "300000", 
"description": "The time in millisecond the download link will be valid.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DOWNLOAD_LINK_EXPIRATION_TIME"
 },
+    "CamelGoogleCloudStorageContentLength": { "index": 7, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content length of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_LENGTH"
 },
+    "CamelGoogleCloudStorageContentType": { "index": 8, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content type of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_TYPE"
 },
+    "CamelGoogleCloudStorageCacheControl": { "index": 9, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Cache-Control metadata can specify 
two different aspects of how data is served from Cloud Storage: whether the 
data can be cached and whether the data can be transformed", "constantName": 
"org.apache.camel.component.google.s [...]
+    "CamelGoogleCloudStorageContentDisposition": { "index": 10, "kind": 
"header", "displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content disposition of this 
object.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_DISPOSITION"
 },
+    "CamelGoogleCloudStorageContentEncoding": { "index": 11, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content encoding of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_ENCODING"
 },
+    "CamelGoogleCloudStorageContentMd5": { "index": 12, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The md5 checksum of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_MD5"
 },
+    "CamelFileName": { "index": 13, "kind": "header", "displayName": "", 
"group": "consumer", "label": "consumer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The name of the blob", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#FILE_NAME"
 },
+    "CamelGoogleCloudStorageComponentCount": { "index": 14, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The component count of this object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_COMPONENT_COUNT"
 },
+    "CamelGoogleCloudStorageContentLanguage": { "index": 15, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Content-Language metadata indicates 
the language(s) that the object is intended for.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CONTENT_LANGUAGE"
 },
+    "CamelGoogleCloudStorageCustomTime": { "index": 16, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Custom-Time metadata is a 
user-specified date and time represented in the RFC 3339 format 
YYYY-MM-DD'T'HH:MM:SS.SS'Z' or YYYY-MM-DD'T'HH:MM:SS'Z' when milliseconds are 
zero. This metadata is typically set in order to  [...]
+    "CamelGoogleCloudStorageCrc32cHex": { "index": 17, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The CRC32c of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CRC32C_HEX"
 },
+    "CamelGoogleCloudStorageETag": { "index": 18, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The ETag for the Object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_ETAG"
 },
+    "CamelGoogleCloudStorageGeneration": { "index": 19, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Is the generation number of the object 
for which you are retrieving information.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_GENERATION"
 },
+    "CamelGoogleCloudStorageBlobId": { "index": 20, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.BlobId", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
blob id of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_BLOB_ID"
 },
+    "CamelGoogleCloudStorageKmsKeyName": { "index": 21, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The KMS key name", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_KMS_KEY_NAME"
 },
+    "CamelGoogleCloudStorageMediaLink": { "index": 22, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The media link", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_MEDIA_LINK"
 },
+    "CamelGoogleCloudStorageMetageneration": { "index": 23, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The metageneration of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_METAGENERATION"
 },
+    "CamelGoogleCloudStorageStorageClass": { "index": 24, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.StorageClass", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
storage class of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_STORAGE_CLASS"
 },
+    "CamelGoogleCloudStorageCreateTime": { "index": 25, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The creation time of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CREATE_TIME"
 },
+    "CamelGoogleCloudStorageLastUpdate": { "index": 26, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Date", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The last update of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_LAST_UPDATE"
 }
   },
   "properties": {
     "bucketName": { "index": 0, "kind": "path", "displayName": "Bucket Name", 
"group": "common", "label": "common", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "Bucket name or ARN" },
diff --git 
a/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
 
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
index 7822a5935ee..1b89d18c95c 100644
--- 
a/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
+++ 
b/components/camel-google/camel-google-storage/src/generated/resources/META-INF/org/apache/camel/component/google/storage/google-storage.json
@@ -49,29 +49,30 @@
     "CamelGoogleCloudStorageOperation": { "index": 0, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": 
"org.apache.camel.component.google.storage.GoogleCloudStorageOperations", 
"enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", 
"listBuckets", "getObject", "createDownloadLink" ], "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
operation to perform.", "const [...]
     "CamelGoogleCloudStorageBucketName": { "index": 1, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "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.google.storage.GoogleCloudStorageConstants#BUCKET_NAME"
 },
     "CamelGoogleCloudStorageObjectName": { "index": 2, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The object Name which will be used for 
the current operation", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#OBJECT_NAME"
 },
-    "CamelGoogleCloudStorageDestinationObjectName": { "index": 3, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
object Destination Name which will be used for the current operation", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DESTINATION_OBJECT_NAME"
 },
-    "CamelGoogleCloudStorageDestinationBucketName": { "index": 4, "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.google.storage.GoogleCloudStorageConstants#DESTINATION_BUCKET_NAME"
 },
-    "CamelGoogleCloudStorageDownloadLinkExpirationTime": { "index": 5, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "Long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": "300000", 
"description": "The time in millisecond the download link will be valid.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DOWNLOAD_LINK_EXPIRATION_TIME"
 },
-    "CamelGoogleCloudStorageContentLength": { "index": 6, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content length of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_LENGTH"
 },
-    "CamelGoogleCloudStorageContentType": { "index": 7, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content type of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_TYPE"
 },
-    "CamelGoogleCloudStorageCacheControl": { "index": 8, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Cache-Control metadata can specify 
two different aspects of how data is served from Cloud Storage: whether the 
data can be cached and whether the data can be transformed", "constantName": 
"org.apache.camel.component.google.s [...]
-    "CamelGoogleCloudStorageContentDisposition": { "index": 9, "kind": 
"header", "displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content disposition of this 
object.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_DISPOSITION"
 },
-    "CamelGoogleCloudStorageContentEncoding": { "index": 10, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content encoding of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_ENCODING"
 },
-    "CamelGoogleCloudStorageContentMd5": { "index": 11, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The md5 checksum of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_MD5"
 },
-    "CamelFileName": { "index": 12, "kind": "header", "displayName": "", 
"group": "consumer", "label": "consumer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The name of the blob", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#FILE_NAME"
 },
-    "CamelGoogleCloudStorageComponentCount": { "index": 13, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The component count of this object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_COMPONENT_COUNT"
 },
-    "CamelGoogleCloudStorageContentLanguage": { "index": 14, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Content-Language metadata indicates 
the language(s) that the object is intended for.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CONTENT_LANGUAGE"
 },
-    "CamelGoogleCloudStorageCustomTime": { "index": 15, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Custom-Time metadata is a 
user-specified date and time represented in the RFC 3339 format 
YYYY-MM-DD'T'HH:MM:SS.SS'Z' or YYYY-MM-DD'T'HH:MM:SS'Z' when milliseconds are 
zero. This metadata is typically set in order to  [...]
-    "CamelGoogleCloudStorageCrc32cHex": { "index": 16, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The CRC32c of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CRC32C_HEX"
 },
-    "CamelGoogleCloudStorageETag": { "index": 17, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The ETag for the Object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_ETAG"
 },
-    "CamelGoogleCloudStorageGeneration": { "index": 18, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Is the generation number of the object 
for which you are retrieving information.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_GENERATION"
 },
-    "CamelGoogleCloudStorageBlobId": { "index": 19, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.BlobId", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
blob id of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_BLOB_ID"
 },
-    "CamelGoogleCloudStorageKmsKeyName": { "index": 20, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The KMS key name", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_KMS_KEY_NAME"
 },
-    "CamelGoogleCloudStorageMediaLink": { "index": 21, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The media link", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_MEDIA_LINK"
 },
-    "CamelGoogleCloudStorageMetageneration": { "index": 22, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The metageneration of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_METAGENERATION"
 },
-    "CamelGoogleCloudStorageStorageClass": { "index": 23, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.StorageClass", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
storage class of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_STORAGE_CLASS"
 },
-    "CamelGoogleCloudStorageCreateTime": { "index": 24, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The creation time of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CREATE_TIME"
 },
-    "CamelGoogleCloudStorageLastUpdate": { "index": 25, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Date", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The last update of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_LAST_UPDATE"
 }
+    "CamelGoogleCloudStoragePrefixName": { "index": 3, "kind": "header", 
"displayName": "", "group": "producer", "label": "producer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The prefix to be used in List Objects 
operation", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#PREFIX_NAME"
 },
+    "CamelGoogleCloudStorageDestinationObjectName": { "index": 4, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "String", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
object Destination Name which will be used for the current operation", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DESTINATION_OBJECT_NAME"
 },
+    "CamelGoogleCloudStorageDestinationBucketName": { "index": 5, "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.google.storage.GoogleCloudStorageConstants#DESTINATION_BUCKET_NAME"
 },
+    "CamelGoogleCloudStorageDownloadLinkExpirationTime": { "index": 6, "kind": 
"header", "displayName": "", "group": "producer", "label": "producer", 
"required": false, "javaType": "Long", "deprecated": false, "deprecationNote": 
"", "autowired": false, "secret": false, "defaultValue": "300000", 
"description": "The time in millisecond the download link will be valid.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#DOWNLOAD_LINK_EXPIRATION_TIME"
 },
+    "CamelGoogleCloudStorageContentLength": { "index": 7, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content length of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_LENGTH"
 },
+    "CamelGoogleCloudStorageContentType": { "index": 8, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content type of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_TYPE"
 },
+    "CamelGoogleCloudStorageCacheControl": { "index": 9, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Cache-Control metadata can specify 
two different aspects of how data is served from Cloud Storage: whether the 
data can be cached and whether the data can be transformed", "constantName": 
"org.apache.camel.component.google.s [...]
+    "CamelGoogleCloudStorageContentDisposition": { "index": 10, "kind": 
"header", "displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content disposition of this 
object.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_DISPOSITION"
 },
+    "CamelGoogleCloudStorageContentEncoding": { "index": 11, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The content encoding of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_ENCODING"
 },
+    "CamelGoogleCloudStorageContentMd5": { "index": 12, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The md5 checksum of this object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#CONTENT_MD5"
 },
+    "CamelFileName": { "index": 13, "kind": "header", "displayName": "", 
"group": "consumer", "label": "consumer", "required": false, "javaType": 
"String", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "The name of the blob", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#FILE_NAME"
 },
+    "CamelGoogleCloudStorageComponentCount": { "index": 14, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The component count of this object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_COMPONENT_COUNT"
 },
+    "CamelGoogleCloudStorageContentLanguage": { "index": 15, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Content-Language metadata indicates 
the language(s) that the object is intended for.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CONTENT_LANGUAGE"
 },
+    "CamelGoogleCloudStorageCustomTime": { "index": 16, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The Custom-Time metadata is a 
user-specified date and time represented in the RFC 3339 format 
YYYY-MM-DD'T'HH:MM:SS.SS'Z' or YYYY-MM-DD'T'HH:MM:SS'Z' when milliseconds are 
zero. This metadata is typically set in order to  [...]
+    "CamelGoogleCloudStorageCrc32cHex": { "index": 17, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The CRC32c of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CRC32C_HEX"
 },
+    "CamelGoogleCloudStorageETag": { "index": 18, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The ETag for the Object.", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_ETAG"
 },
+    "CamelGoogleCloudStorageGeneration": { "index": 19, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Is the generation number of the object 
for which you are retrieving information.", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_GENERATION"
 },
+    "CamelGoogleCloudStorageBlobId": { "index": 20, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.BlobId", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
blob id of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_BLOB_ID"
 },
+    "CamelGoogleCloudStorageKmsKeyName": { "index": 21, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The KMS key name", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_KMS_KEY_NAME"
 },
+    "CamelGoogleCloudStorageMediaLink": { "index": 22, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The media link", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_MEDIA_LINK"
 },
+    "CamelGoogleCloudStorageMetageneration": { "index": 23, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The metageneration of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_METAGENERATION"
 },
+    "CamelGoogleCloudStorageStorageClass": { "index": 24, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "com.google.cloud.storage.StorageClass", "deprecated": false, 
"deprecationNote": "", "autowired": false, "secret": false, "description": "The 
storage class of the object", "constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_STORAGE_CLASS"
 },
+    "CamelGoogleCloudStorageCreateTime": { "index": 25, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Long", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The creation time of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_CREATE_TIME"
 },
+    "CamelGoogleCloudStorageLastUpdate": { "index": 26, "kind": "header", 
"displayName": "", "group": "consumer", "label": "consumer", "required": false, 
"javaType": "Date", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The last update of the object", 
"constantName": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConstants#METADATA_LAST_UPDATE"
 }
   },
   "properties": {
     "bucketName": { "index": 0, "kind": "path", "displayName": "Bucket Name", 
"group": "common", "label": "common", "required": true, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.google.storage.GoogleCloudStorageConfiguration", 
"configurationField": "configuration", "description": "Bucket name or ARN" },
diff --git 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConstants.java
 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConstants.java
index 1187073a386..8a848e04b5d 100644
--- 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConstants.java
+++ 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageConstants.java
@@ -31,6 +31,9 @@ public final class GoogleCloudStorageConstants {
     @Metadata(label = "producer", description = "The object Name which will be 
used for the current operation",
               javaType = "String")
     public static final String OBJECT_NAME = 
"CamelGoogleCloudStorageObjectName";
+    @Metadata(label = "producer", description = "The prefix to be used in List 
Objects operation",
+              javaType = "String")
+    public static final String PREFIX_NAME = 
"CamelGoogleCloudStoragePrefixName";
     @Metadata(label = "producer", description = "The object Destination Name 
which will be used for the current operation",
               javaType = "String")
     public static final String DESTINATION_OBJECT_NAME = 
"CamelGoogleCloudStorageDestinationObjectName";
diff --git 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java
 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java
index 75e5aca4b6b..34feb757a39 100644
--- 
a/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java
+++ 
b/components/camel-google/camel-google-storage/src/main/java/org/apache/camel/component/google/storage/GoogleCloudStorageProducer.java
@@ -342,10 +342,18 @@ public class GoogleCloudStorageProducer extends 
DefaultProducer {
 
     private void listObjects(Storage storage, Exchange exchange) {
         final String bucketName = determineBucketName();
-
-        List<Blob> bloblist = new LinkedList<>();
-        for (Blob blob : storage.list(bucketName).iterateAll()) {
-            bloblist.add(blob);
+        String prefix = 
exchange.getMessage().getHeader(GoogleCloudStorageConstants.PREFIX_NAME, 
String.class);
+        List<Blob> bloblist;
+        if (ObjectHelper.isEmpty(prefix)) {
+            bloblist = new LinkedList<>();
+            for (Blob blob : storage.list(bucketName).iterateAll()) {
+                bloblist.add(blob);
+            }
+        } else {
+            bloblist = new LinkedList<>();
+            for (Blob blob : storage.list(bucketName, 
Storage.BlobListOption.prefix(prefix)).iterateAll()) {
+                bloblist.add(blob);
+            }
         }
 
         Message message = getMessageForResponse(exchange);
diff --git 
a/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java
 
b/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java
index 8ec0bf210fb..6b064f7b2a0 100644
--- 
a/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java
+++ 
b/components/camel-google/camel-google-storage/src/test/java/org/apache/camel/component/google/storage/unit/ProducerLocalTest.java
@@ -101,6 +101,27 @@ public class ProducerLocalTest extends 
GoogleCloudStorageBaseTest {
         assertEquals(1, resp.size());
         assertEquals(fileName, resp.get(0).getName());
 
+        Exchange listObjectsExchangeWithPrefix = 
template.request("direct:listObjects", exchange -> {
+            exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION,
+                    GoogleCloudStorageOperations.listObjects);
+            exchange.getIn().setHeader(GoogleCloudStorageConstants.PREFIX_NAME,
+                    "just_");
+        });
+        LOG.info("listObjectsExchange.body={}", 
listObjectsExchangeWithPrefix.getMessage().getBody());
+        resp = listObjectsExchangeWithPrefix.getMessage().getBody(List.class);
+        assertEquals(1, resp.size());
+        assertEquals(fileName, resp.get(0).getName());
+
+        Exchange listObjectsExchangeWithPrefixNoRes = 
template.request("direct:listObjects", exchange -> {
+            exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION,
+                    GoogleCloudStorageOperations.listObjects);
+            exchange.getIn().setHeader(GoogleCloudStorageConstants.PREFIX_NAME,
+                    "file_");
+        });
+        LOG.info("listObjectsExchange.body={}", 
listObjectsExchangeWithPrefixNoRes.getMessage().getBody());
+        resp = 
listObjectsExchangeWithPrefixNoRes.getMessage().getBody(List.class);
+        assertEquals(0, resp.size());
+
         Exchange getObjectExchange = template.request("direct:getObject", 
exchange -> {
             exchange.getIn().setHeader(GoogleCloudStorageConstants.OPERATION,
                     GoogleCloudStorageOperations.getObject);
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
index 3bd4fafd60d..869dc6140db 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GoogleCloudStorageEndpointBuilderFactory.java
@@ -1503,6 +1503,18 @@ public interface 
GoogleCloudStorageEndpointBuilderFactory {
         public String googleCloudStorageObjectName() {
             return "CamelGoogleCloudStorageObjectName";
         }
+        /**
+         * The prefix to be used in List Objects operation.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: producer
+         * 
+         * @return the name of the header {@code GoogleCloudStoragePrefixName}.
+         */
+        public String googleCloudStoragePrefixName() {
+            return "CamelGoogleCloudStoragePrefixName";
+        }
         /**
          * The object Destination Name which will be used for the current
          * operation.

Reply via email to