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:
- * <code>io.minio.ServerSideEncryptionCustomerKey</code>
+ * <code>io.minio.ServerSideEncryption.CustomerKey</code>
* 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>