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

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


The following commit(s) were added to refs/heads/main by this push:
     new 93dde35cf5fd CAMEL-23241 - Upgrade Minio to 9+
93dde35cf5fd is described below

commit 93dde35cf5fd26f218ac03754501d3bbccb4cdc6
Author: AurĂ©lien Pupier <[email protected]>
AuthorDate: Wed Jul 22 14:49:10 2026 +0200

    CAMEL-23241 - Upgrade Minio to 9+
    
    Co-authored-by: IBM Bob IDE 2.0.1
    Signed-off-by: AurĂ©lien Pupier <[email protected]>
---
 .../org/apache/camel/catalog/components/minio.json |   4 +-
 .../component/minio/MinioComponentConfigurer.java  |   4 +-
 .../component/minio/MinioEndpointConfigurer.java   |   4 +-
 .../org/apache/camel/component/minio/minio.json    |   4 +-
 .../camel/component/minio/MinioConfiguration.java  |   7 +-
 .../camel/component/minio/MinioConsumer.java       |  15 +--
 .../camel/component/minio/MinioProducer.java       |  30 +++---
 .../integration/MinioListObjectsOperationIT.java   |   6 +-
 .../ROOT/pages/camel-4x-upgrade-guide-4_22.adoc    | 103 +++++++++++++++++++++
 .../dsl/MinioComponentBuilderFactory.java          |   6 +-
 .../endpoint/dsl/MinioEndpointBuilderFactory.java  |  18 ++--
 parent/pom.xml                                     |   2 +-
 12 files changed, 146 insertions(+), 57 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/minio.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/minio.json
index 70f86d5468e9..e1720630fbf3 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/minio.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/minio.json
@@ -72,7 +72,7 @@
     "accessKey": { "index": 45, "kind": "property", "displayName": "Access 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Secret Access Key or Minio Access 
Key. If not set camel will connect to servic [...]
     "secretKey": { "index": 46, "kind": "property", "displayName": "Secret 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Access Key Id or Minio Secret Key. 
If not set camel will connect to service fo [...]
     "serverSideEncryption": { "index": 47, "kind": "property", "displayName": 
"Server Side Encryption", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "io.minio.ServerSideEncryption", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption." },
-    "serverSideEncryptionCustomerKey": { "index": 48, "kind": "property", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryptionCustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source objec [...]
+    "serverSideEncryptionCustomerKey": { "index": 48, "kind": "property", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryption.CustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source obje [...]
   },
   "headers": {
     "CamelMinioBucketName": { "index": 0, "kind": "header", "displayName": "", 
"group": "common", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Consumer: The name of the bucket in which this object is 
contained.", "constantName": 
"org.apache.camel.component.minio.MinioConstants#BUCKET_NAME" },
@@ -163,6 +163,6 @@
     "accessKey": { "index": 60, "kind": "parameter", "displayName": "Access 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Secret Access Key or Minio Access 
Key. If not set camel will connect to servi [...]
     "secretKey": { "index": 61, "kind": "parameter", "displayName": "Secret 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Access Key Id or Minio Secret Key. 
If not set camel will connect to service f [...]
     "serverSideEncryption": { "index": 62, "kind": "parameter", "displayName": 
"Server Side Encryption", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "io.minio.ServerSideEncryption", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption." },
-    "serverSideEncryptionCustomerKey": { "index": 63, "kind": "parameter", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryptionCustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source obje [...]
+    "serverSideEncryptionCustomerKey": { "index": 63, "kind": "parameter", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryption.CustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source obj [...]
   }
 }
diff --git 
a/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioComponentConfigurer.java
 
b/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioComponentConfigurer.java
index cdbacc28f074..ecdc93fd2770 100644
--- 
a/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioComponentConfigurer.java
+++ 
b/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioComponentConfigurer.java
@@ -106,7 +106,7 @@ public class MinioComponentConfigurer extends 
PropertyConfigurerSupport implemen
         case "serversideencryption":
         case "serverSideEncryption": 
getOrCreateConfiguration(target).setServerSideEncryption(property(camelContext, 
io.minio.ServerSideEncryption.class, value)); return true;
         case "serversideencryptioncustomerkey":
-        case "serverSideEncryptionCustomerKey": 
getOrCreateConfiguration(target).setServerSideEncryptionCustomerKey(property(camelContext,
 io.minio.ServerSideEncryptionCustomerKey.class, value)); return true;
+        case "serverSideEncryptionCustomerKey": 
getOrCreateConfiguration(target).setServerSideEncryptionCustomerKey(property(camelContext,
 io.minio.ServerSideEncryption.CustomerKey.class, value)); return true;
         case "startafter":
         case "startAfter": 
getOrCreateConfiguration(target).setStartAfter(property(camelContext, 
java.lang.String.class, value)); return true;
         case "storageclass":
@@ -205,7 +205,7 @@ public class MinioComponentConfigurer extends 
PropertyConfigurerSupport implemen
         case "serversideencryption":
         case "serverSideEncryption": return 
io.minio.ServerSideEncryption.class;
         case "serversideencryptioncustomerkey":
-        case "serverSideEncryptionCustomerKey": return 
io.minio.ServerSideEncryptionCustomerKey.class;
+        case "serverSideEncryptionCustomerKey": return 
io.minio.ServerSideEncryption.CustomerKey.class;
         case "startafter":
         case "startAfter": return java.lang.String.class;
         case "storageclass":
diff --git 
a/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioEndpointConfigurer.java
 
b/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioEndpointConfigurer.java
index f7700f55614c..a7dc9f1a8474 100644
--- 
a/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioEndpointConfigurer.java
+++ 
b/components/camel-minio/src/generated/java/org/apache/camel/component/minio/MinioEndpointConfigurer.java
@@ -119,7 +119,7 @@ public class MinioEndpointConfigurer extends 
PropertyConfigurerSupport implement
         case "serversideencryption":
         case "serverSideEncryption": 
target.getConfiguration().setServerSideEncryption(property(camelContext, 
io.minio.ServerSideEncryption.class, value)); return true;
         case "serversideencryptioncustomerkey":
-        case "serverSideEncryptionCustomerKey": 
target.getConfiguration().setServerSideEncryptionCustomerKey(property(camelContext,
 io.minio.ServerSideEncryptionCustomerKey.class, value)); return true;
+        case "serverSideEncryptionCustomerKey": 
target.getConfiguration().setServerSideEncryptionCustomerKey(property(camelContext,
 io.minio.ServerSideEncryption.CustomerKey.class, value)); return true;
         case "startafter":
         case "startAfter": 
target.getConfiguration().setStartAfter(property(camelContext, 
java.lang.String.class, value)); return true;
         case "startscheduler":
@@ -244,7 +244,7 @@ public class MinioEndpointConfigurer extends 
PropertyConfigurerSupport implement
         case "serversideencryption":
         case "serverSideEncryption": return 
io.minio.ServerSideEncryption.class;
         case "serversideencryptioncustomerkey":
-        case "serverSideEncryptionCustomerKey": return 
io.minio.ServerSideEncryptionCustomerKey.class;
+        case "serverSideEncryptionCustomerKey": return 
io.minio.ServerSideEncryption.CustomerKey.class;
         case "startafter":
         case "startAfter": return java.lang.String.class;
         case "startscheduler":
diff --git 
a/components/camel-minio/src/generated/resources/META-INF/org/apache/camel/component/minio/minio.json
 
b/components/camel-minio/src/generated/resources/META-INF/org/apache/camel/component/minio/minio.json
index 70f86d5468e9..e1720630fbf3 100644
--- 
a/components/camel-minio/src/generated/resources/META-INF/org/apache/camel/component/minio/minio.json
+++ 
b/components/camel-minio/src/generated/resources/META-INF/org/apache/camel/component/minio/minio.json
@@ -72,7 +72,7 @@
     "accessKey": { "index": 45, "kind": "property", "displayName": "Access 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Secret Access Key or Minio Access 
Key. If not set camel will connect to servic [...]
     "secretKey": { "index": 46, "kind": "property", "displayName": "Secret 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Access Key Id or Minio Secret Key. 
If not set camel will connect to service fo [...]
     "serverSideEncryption": { "index": 47, "kind": "property", "displayName": 
"Server Side Encryption", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "io.minio.ServerSideEncryption", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption." },
-    "serverSideEncryptionCustomerKey": { "index": 48, "kind": "property", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryptionCustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source objec [...]
+    "serverSideEncryptionCustomerKey": { "index": 48, "kind": "property", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryption.CustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source obje [...]
   },
   "headers": {
     "CamelMinioBucketName": { "index": 0, "kind": "header", "displayName": "", 
"group": "common", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Consumer: The name of the bucket in which this object is 
contained.", "constantName": 
"org.apache.camel.component.minio.MinioConstants#BUCKET_NAME" },
@@ -163,6 +163,6 @@
     "accessKey": { "index": 60, "kind": "parameter", "displayName": "Access 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Secret Access Key or Minio Access 
Key. If not set camel will connect to servi [...]
     "secretKey": { "index": 61, "kind": "parameter", "displayName": "Secret 
Key", "group": "security", "label": "security", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": true, "security": "secret", "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Amazon AWS Access Key Id or Minio Secret Key. 
If not set camel will connect to service f [...]
     "serverSideEncryption": { "index": 62, "kind": "parameter", "displayName": 
"Server Side Encryption", "group": "security", "label": "security", "required": 
false, "type": "object", "javaType": "io.minio.ServerSideEncryption", 
"deprecated": false, "autowired": false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption." },
-    "serverSideEncryptionCustomerKey": { "index": 63, "kind": "parameter", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryptionCustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source obje [...]
+    "serverSideEncryptionCustomerKey": { "index": 63, "kind": "parameter", 
"displayName": "Server Side Encryption Customer Key", "group": "security", 
"label": "security", "required": false, "type": "object", "javaType": 
"io.minio.ServerSideEncryption.CustomerKey", "deprecated": false, "autowired": 
false, "secret": false, "configurationClass": 
"org.apache.camel.component.minio.MinioConfiguration", "configurationField": 
"configuration", "description": "Server-side encryption for source obj [...]
   }
 }
diff --git 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConfiguration.java
 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConfiguration.java
index 2d7c19d58d27..0e43b1abbf8a 100644
--- 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConfiguration.java
+++ 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConfiguration.java
@@ -20,7 +20,6 @@ import java.time.ZonedDateTime;
 
 import io.minio.MinioClient;
 import io.minio.ServerSideEncryption;
-import io.minio.ServerSideEncryptionCustomerKey;
 import okhttp3.OkHttpClient;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.spi.Metadata;
@@ -58,7 +57,7 @@ public class MinioConfiguration implements Cloneable {
     @UriParam(label = "common")
     private String policy;
     @UriParam(label = "security")
-    private ServerSideEncryptionCustomerKey serverSideEncryptionCustomerKey;
+    private ServerSideEncryption.CustomerKey serverSideEncryptionCustomerKey;
     @UriParam(label = "security")
     private ServerSideEncryption serverSideEncryption;
     @UriParam(label = "common")
@@ -250,14 +249,14 @@ public class MinioConfiguration implements Cloneable {
         this.policy = policy;
     }
 
-    public ServerSideEncryptionCustomerKey 
getServerSideEncryptionCustomerKey() {
+    public ServerSideEncryption.CustomerKey 
getServerSideEncryptionCustomerKey() {
         return serverSideEncryptionCustomerKey;
     }
 
     /**
      * Server-side encryption for source object while copy/move objects.
      */
-    public void 
setServerSideEncryptionCustomerKey(ServerSideEncryptionCustomerKey 
serverSideEncryptionCustomerKey) {
+    public void 
setServerSideEncryptionCustomerKey(ServerSideEncryption.CustomerKey 
serverSideEncryptionCustomerKey) {
         this.serverSideEncryptionCustomerKey = serverSideEncryptionCustomerKey;
     }
 
diff --git 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConsumer.java
 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConsumer.java
index d52d75a055fa..e94575cd72ab 100644
--- 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConsumer.java
+++ 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioConsumer.java
@@ -16,10 +16,7 @@
  */
 package org.apache.camel.component.minio;
 
-import java.io.IOException;
 import java.io.InputStream;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
 import java.util.Deque;
 import java.util.Iterator;
 import java.util.LinkedList;
@@ -27,13 +24,13 @@ import java.util.Queue;
 
 import io.minio.BucketExistsArgs;
 import io.minio.CopyObjectArgs;
-import io.minio.CopySource;
 import io.minio.GetObjectArgs;
 import io.minio.ListObjectsArgs;
 import io.minio.MakeBucketArgs;
 import io.minio.MinioClient;
 import io.minio.RemoveObjectArgs;
 import io.minio.Result;
+import io.minio.SourceObject;
 import io.minio.errors.MinioException;
 import io.minio.messages.Item;
 import org.apache.camel.Exchange;
@@ -329,14 +326,13 @@ public class MinioConsumer extends 
ScheduledBatchPollingConsumer {
                 removeObject(srcBucketName, srcObjectName);
                 LOG.trace("Deleted object from bucket {} with objectName 
{}...", srcBucketName, srcObjectName);
             }
-        } catch (MinioException | NoSuchAlgorithmException | 
InvalidKeyException | IOException e) {
+        } catch (MinioException e) {
             getExceptionHandler().handleException("Error occurred during 
moving or deleting object. This exception is ignored.",
                     exchange, e);
         }
     }
 
-    private void removeObject(String srcBucketName, String srcObjectName)
-            throws MinioException, IOException, InvalidKeyException, 
NoSuchAlgorithmException {
+    private void removeObject(String srcBucketName, String srcObjectName) 
throws MinioException {
         RemoveObjectArgs.Builder removeObjectRequest = 
RemoveObjectArgs.builder()
                 .bucket(srcBucketName)
                 .object(srcObjectName)
@@ -349,8 +345,7 @@ public class MinioConsumer extends 
ScheduledBatchPollingConsumer {
         getMinioClient().removeObject(removeObjectRequest.build());
     }
 
-    private void copyObject(String srcBucketName, String srcObjectName)
-            throws MinioException, IOException, InvalidKeyException, 
NoSuchAlgorithmException {
+    private void copyObject(String srcBucketName, String srcObjectName) throws 
MinioException {
         String destinationBucketName = 
getConfiguration().getDestinationBucketName();
         if (isEmpty(destinationBucketName)) {
             throw new IllegalArgumentException("Destination Bucket name must 
be specified to copy operation");
@@ -364,7 +359,7 @@ public class MinioConsumer extends 
ScheduledBatchPollingConsumer {
         LOG.trace("Copying object from bucket {} with objectName {} to bucket 
{}...",
                 srcBucketName, srcObjectName, destinationBucketName);
 
-        CopySource.Builder copySourceBuilder = 
CopySource.builder().bucket(srcBucketName).object(srcObjectName);
+        SourceObject.Builder copySourceBuilder = 
SourceObject.builder().bucket(srcBucketName).object(srcObjectName);
 
         
MinioChecks.checkIfConfigIsNotEmptyAndSetAndConfig(getConfiguration()::getServerSideEncryptionCustomerKey,
                 copySourceBuilder::ssec);
diff --git 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioProducer.java
 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioProducer.java
index 01583c3199ab..9b9d926883a9 100644
--- 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioProducer.java
+++ 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioProducer.java
@@ -22,16 +22,14 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.security.InvalidKeyException;
-import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import io.minio.CopyObjectArgs;
-import io.minio.CopySource;
 import io.minio.GetObjectArgs;
 import io.minio.GetPresignedObjectUrlArgs;
+import io.minio.Http;
 import io.minio.ListObjectsArgs;
 import io.minio.MinioClient;
 import io.minio.ObjectWriteResponse;
@@ -40,15 +38,10 @@ import io.minio.RemoveBucketArgs;
 import io.minio.RemoveObjectArgs;
 import io.minio.RemoveObjectsArgs;
 import io.minio.Result;
-import io.minio.errors.ErrorResponseException;
-import io.minio.errors.InsufficientDataException;
-import io.minio.errors.InternalException;
-import io.minio.errors.InvalidResponseException;
-import io.minio.errors.ServerException;
-import io.minio.errors.XmlParserException;
-import io.minio.http.Method;
-import io.minio.messages.Bucket;
+import io.minio.SourceObject;
+import io.minio.errors.MinioException;
 import io.minio.messages.Item;
+import io.minio.messages.ListAllMyBucketsResult;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.InvalidPayloadException;
@@ -111,10 +104,10 @@ public class MinioProducer extends DefaultProducer {
                     getPartialObject(minioClient, exchange);
                     break;
                 case createDownloadLink:
-                    createPresignedUrl(minioClient, exchange, Method.GET);
+                    createPresignedUrl(minioClient, exchange, Http.Method.GET);
                     break;
                 case createUploadLink:
-                    createPresignedUrl(minioClient, exchange, Method.PUT);
+                    createPresignedUrl(minioClient, exchange, Http.Method.PUT);
                     break;
                 default:
                     throw new IllegalArgumentException("Unsupported 
operation");
@@ -195,10 +188,9 @@ public class MinioProducer extends DefaultProducer {
     private void doPutObject(
             Exchange exchange, String bucketName, String objectName, 
Map<String, String> objectMetadata,
             Map<String, String> extraHeaders, InputStream inputStream, long 
contentLength)
-            throws IOException, ErrorResponseException, 
InsufficientDataException, InternalException, InvalidKeyException,
-            InvalidResponseException, NoSuchAlgorithmException, 
ServerException, XmlParserException {
+            throws IOException, MinioException {
         PutObjectArgs.Builder putObjectRequest = PutObjectArgs.builder()
-                .stream(inputStream, contentLength, -1)
+                .stream(inputStream, contentLength, -1L)
                 .bucket(bucketName)
                 .object(objectName)
                 .userMetadata(objectMetadata);
@@ -259,7 +251,7 @@ public class MinioProducer extends DefaultProducer {
                 throw new IllegalArgumentException("Destination Key must be 
specified for copyObject Operation");
             }
 
-            CopySource.Builder copySourceBuilder = CopySource.builder()
+            SourceObject.Builder copySourceBuilder = SourceObject.builder()
                     .bucket(bucketName)
                     .object(sourceKey);
 
@@ -311,7 +303,7 @@ public class MinioProducer extends DefaultProducer {
     }
 
     private void listBuckets(MinioClient minioClient, Exchange exchange) 
throws Exception {
-        List<Bucket> bucketsList = minioClient.listBuckets();
+        List<ListAllMyBucketsResult.Bucket> bucketsList = 
minioClient.listBuckets();
         Message message = getMessageForResponse(exchange);
         //returns iterator of bucketList
         message.setBody(bucketsList.iterator());
@@ -411,7 +403,7 @@ public class MinioProducer extends DefaultProducer {
         }
     }
 
-    private void createPresignedUrl(MinioClient minioClient, Exchange 
exchange, Method method) throws Exception {
+    private void createPresignedUrl(MinioClient minioClient, Exchange 
exchange, Http.Method method) throws Exception {
         int expiry = 60 * 60;
         Integer expirationInSeconds = 
exchange.getIn().getHeader(MinioConstants.PRESIGNED_URL_EXPIRATION_TIME, 
Integer.class);
         Message message = getMessageForResponse(exchange);
diff --git 
a/components/camel-minio/src/test/java/org/apache/camel/component/minio/integration/MinioListObjectsOperationIT.java
 
b/components/camel-minio/src/test/java/org/apache/camel/component/minio/integration/MinioListObjectsOperationIT.java
index 5da4ab14a35b..47eb749d836f 100644
--- 
a/components/camel-minio/src/test/java/org/apache/camel/component/minio/integration/MinioListObjectsOperationIT.java
+++ 
b/components/camel-minio/src/test/java/org/apache/camel/component/minio/integration/MinioListObjectsOperationIT.java
@@ -26,7 +26,7 @@ import io.minio.MinioClient;
 import io.minio.RemoveBucketArgs;
 import io.minio.RemoveObjectsArgs;
 import io.minio.Result;
-import io.minio.messages.DeleteObject;
+import io.minio.messages.DeleteRequest;
 import io.minio.messages.Item;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.EndpointInject;
@@ -115,12 +115,12 @@ class MinioListObjectsOperationIT extends 
MinioIntegrationTestSupport {
 
         
client.makeBucket(MakeBucketArgs.builder().bucket(BUCKET_NAME).build());
 
-        final List<DeleteObject> objects = new ArrayList<>(20);
+        final List<DeleteRequest.Object> objects = new ArrayList<>(20);
 
         // set up the environment
         for (int i = 0; i < 20; i++) {
             String currentDeleteObjectName = "CamelUnitTest-" + 
randomAlphanumeric(5);
-            objects.add(new DeleteObject(currentDeleteObjectName));
+            objects.add(new DeleteRequest.Object(currentDeleteObjectName));
             template.send("direct:addObject", ExchangePattern.InOnly, new 
Processor() {
                 @Override
                 public void process(Exchange exchange) throws Exception {
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc
index 6d822f0742dc..9a0b63d686ae 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc
@@ -977,3 +977,106 @@ camel.resilience4j.waitDurationInOpenState = 60000
 The `io.vavr:vavr` and `io.vavr:vavr-match` runtime dependencies have been 
removed from
 `camel-resilience4j`. The single internal usage of Vavr's `Try` monad has been 
replaced with a
 plain try-catch. This eliminates two transitive runtime JARs. No user-facing 
behavior change.
+
+=== camel-minio - Upgraded to minio 9.0.3 - Breaking Changes
+
+The underlying `io.minio:minio` library has been upgraded from 8.x to 9.0.3.
+This release contains several breaking API changes that affect users who pass 
`io.minio` objects
+directly through the Camel Minio component (e.g. via `pojoRequest=true` or 
custom `MinioClient`
+configuration).
+
+==== ServerSideEncryptionCustomerKey renamed
+
+`io.minio.ServerSideEncryptionCustomerKey` has been removed as a top-level 
class.
+Use the inner class `io.minio.ServerSideEncryption.CustomerKey` instead.
+
+[source,java]
+----
+// Before:
+import io.minio.ServerSideEncryptionCustomerKey;
+ServerSideEncryptionCustomerKey ssec = ...;
+
+// After:
+import io.minio.ServerSideEncryption;
+ServerSideEncryption.CustomerKey ssec = ...;
+----
+
+The `serverSideEncryptionCustomerKey` endpoint/component option type has 
changed accordingly.
+
+==== CopySource renamed to SourceObject
+
+`io.minio.CopySource` has been removed. Use `io.minio.SourceObject` instead.
+`CopyObjectArgs.Builder.source()` now accepts a `SourceObject`.
+
+[source,java]
+----
+// Before:
+import io.minio.CopySource;
+CopySource src = CopySource.builder().bucket("b").object("o").build();
+
+// After:
+import io.minio.SourceObject;
+SourceObject src = SourceObject.builder().bucket("b").object("o").build();
+----
+
+==== Method enum moved inside Http class
+
+`io.minio.http.Method` (package `io.minio.http`) has been removed.
+Use the nested enum `io.minio.Http.Method` instead.
+
+[source,java]
+----
+// Before:
+import io.minio.http.Method;
+
+// After:
+import io.minio.Http;
+// reference as Http.Method.GET, Http.Method.PUT, etc.
+----
+
+==== Bucket type changed for listBuckets
+
+`io.minio.messages.Bucket` has been removed. The `MinioClient.listBuckets()` 
method now returns
+`List<io.minio.messages.ListAllMyBucketsResult.Bucket>`.
+
+[source,java]
+----
+// Before:
+import io.minio.messages.Bucket;
+List<Bucket> buckets = minioClient.listBuckets();
+
+// After:
+import io.minio.messages.ListAllMyBucketsResult;
+List<ListAllMyBucketsResult.Bucket> buckets = minioClient.listBuckets();
+----
+
+==== DeleteObject renamed to DeleteRequest.Object
+
+`io.minio.messages.DeleteObject` has been removed. Use 
`io.minio.messages.DeleteRequest.Object` instead.
+
+[source,java]
+----
+// Before:
+import io.minio.messages.DeleteObject;
+new DeleteObject("my-object-name");
+
+// After:
+import io.minio.messages.DeleteRequest;
+new DeleteRequest.Object("my-object-name");
+----
+
+==== MinioClient methods now throw MinioException only
+
+All `MinioClient` methods previously declared multiple checked exceptions
+(`InvalidKeyException`, `NoSuchAlgorithmException`, `IOException`, etc.).
+In 9.x they now uniformly declare `throws io.minio.errors.MinioException`.
+Update any catch blocks or method `throws` declarations accordingly.
+
+[source,java]
+----
+// Before:
+} catch (MinioException | InvalidKeyException | NoSuchAlgorithmException | 
IOException e) { ... }
+
+// After:
+} catch (MinioException e) { ... }
+----
diff --git 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MinioComponentBuilderFactory.java
 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MinioComponentBuilderFactory.java
index 54c30e4c76ed..1fdf5ef654eb 100644
--- 
a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MinioComponentBuilderFactory.java
+++ 
b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/MinioComponentBuilderFactory.java
@@ -887,7 +887,7 @@ public interface MinioComponentBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option is a:
-         * &lt;code&gt;io.minio.ServerSideEncryptionCustomerKey&lt;/code&gt;
+         * &lt;code&gt;io.minio.ServerSideEncryption.CustomerKey&lt;/code&gt;
          * type.
          * 
          * Group: security
@@ -895,7 +895,7 @@ public interface MinioComponentBuilderFactory {
          * @param serverSideEncryptionCustomerKey the value to set
          * @return the dsl builder
          */
-        default MinioComponentBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryptionCustomerKey 
serverSideEncryptionCustomerKey) {
+        default MinioComponentBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryption.CustomerKey 
serverSideEncryptionCustomerKey) {
             doSetProperty("serverSideEncryptionCustomerKey", 
serverSideEncryptionCustomerKey);
             return this;
         }
@@ -968,7 +968,7 @@ public interface MinioComponentBuilderFactory {
             case "accessKey": getOrCreateConfiguration((MinioComponent) 
component).setAccessKey((java.lang.String) value); return true;
             case "secretKey": getOrCreateConfiguration((MinioComponent) 
component).setSecretKey((java.lang.String) value); return true;
             case "serverSideEncryption": 
getOrCreateConfiguration((MinioComponent) 
component).setServerSideEncryption((io.minio.ServerSideEncryption) value); 
return true;
-            case "serverSideEncryptionCustomerKey": 
getOrCreateConfiguration((MinioComponent) 
component).setServerSideEncryptionCustomerKey((io.minio.ServerSideEncryptionCustomerKey)
 value); return true;
+            case "serverSideEncryptionCustomerKey": 
getOrCreateConfiguration((MinioComponent) 
component).setServerSideEncryptionCustomerKey((io.minio.ServerSideEncryption.CustomerKey)
 value); return true;
             default: return false;
             }
         }
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MinioEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MinioEndpointBuilderFactory.java
index 9389add6bf84..8af828321b39 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MinioEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MinioEndpointBuilderFactory.java
@@ -1447,14 +1447,14 @@ public interface MinioEndpointBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option is a:
-         * <code>io.minio.ServerSideEncryptionCustomerKey</code> type.
+         * <code>io.minio.ServerSideEncryption.CustomerKey</code> type.
          * 
          * Group: security
          * 
          * @param serverSideEncryptionCustomerKey the value to set
          * @return the dsl builder
          */
-        default MinioEndpointConsumerBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryptionCustomerKey 
serverSideEncryptionCustomerKey) {
+        default MinioEndpointConsumerBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryption.CustomerKey 
serverSideEncryptionCustomerKey) {
             doSetProperty("serverSideEncryptionCustomerKey", 
serverSideEncryptionCustomerKey);
             return this;
         }
@@ -1462,7 +1462,7 @@ public interface MinioEndpointBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option will be converted to a
-         * <code>io.minio.ServerSideEncryptionCustomerKey</code> type.
+         * <code>io.minio.ServerSideEncryption.CustomerKey</code> type.
          * 
          * Group: security
          * 
@@ -2055,14 +2055,14 @@ public interface MinioEndpointBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option is a:
-         * <code>io.minio.ServerSideEncryptionCustomerKey</code> type.
+         * <code>io.minio.ServerSideEncryption.CustomerKey</code> type.
          * 
          * Group: security
          * 
          * @param serverSideEncryptionCustomerKey the value to set
          * @return the dsl builder
          */
-        default MinioEndpointProducerBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryptionCustomerKey 
serverSideEncryptionCustomerKey) {
+        default MinioEndpointProducerBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryption.CustomerKey 
serverSideEncryptionCustomerKey) {
             doSetProperty("serverSideEncryptionCustomerKey", 
serverSideEncryptionCustomerKey);
             return this;
         }
@@ -2070,7 +2070,7 @@ public interface MinioEndpointBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option will be converted to a
-         * <code>io.minio.ServerSideEncryptionCustomerKey</code> type.
+         * <code>io.minio.ServerSideEncryption.CustomerKey</code> type.
          * 
          * Group: security
          * 
@@ -2437,14 +2437,14 @@ public interface MinioEndpointBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option is a:
-         * <code>io.minio.ServerSideEncryptionCustomerKey</code> type.
+         * <code>io.minio.ServerSideEncryption.CustomerKey</code> type.
          * 
          * Group: security
          * 
          * @param serverSideEncryptionCustomerKey the value to set
          * @return the dsl builder
          */
-        default MinioEndpointBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryptionCustomerKey 
serverSideEncryptionCustomerKey) {
+        default MinioEndpointBuilder 
serverSideEncryptionCustomerKey(io.minio.ServerSideEncryption.CustomerKey 
serverSideEncryptionCustomerKey) {
             doSetProperty("serverSideEncryptionCustomerKey", 
serverSideEncryptionCustomerKey);
             return this;
         }
@@ -2452,7 +2452,7 @@ public interface MinioEndpointBuilderFactory {
          * Server-side encryption for source object while copy/move objects.
          * 
          * The option will be converted to a
-         * <code>io.minio.ServerSideEncryptionCustomerKey</code> type.
+         * <code>io.minio.ServerSideEncryption.CustomerKey</code> type.
          * 
          * Group: security
          * 
diff --git a/parent/pom.xml b/parent/pom.xml
index b862e9a64702..acbc12dae441 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -383,7 +383,7 @@
         <milo-version>1.1.5</milo-version>
         <milvus-client-version>2.6.22</milvus-client-version>
         <mina-version>2.2.9</mina-version>
-        <minio-version>8.6.0</minio-version>
+        <minio-version>9.0.3</minio-version>
         <mockito-version>5.23.0</mockito-version>
         <mojo-executor-version>2.4.1</mojo-executor-version>
         <mongo-java-driver-version>5.9.0</mongo-java-driver-version>


Reply via email to