This is an automated email from the ASF dual-hosted git repository.
oscerd 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 5a91203adcd1 CAMEL-23132: Update camel-aws2-s3 to use ListObjectsV2
API instead of deprecated ListObjects API (#23086)
5a91203adcd1 is described below
commit 5a91203adcd19f4e91e05a570b01ac13c1532b62
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri May 8 14:42:02 2026 +0200
CAMEL-23132: Update camel-aws2-s3 to use ListObjectsV2 API instead of
deprecated ListObjects API (#23086)
Signed-off-by: Andrea Cosentino <[email protected]>
---
.../camel-aws2-s3/src/main/docs/aws2-s3-component.adoc | 2 +-
.../org/apache/camel/component/aws2/s3/AWS2S3Consumer.java | 14 +++++++-------
.../org/apache/camel/component/aws2/s3/AWS2S3Producer.java | 8 ++++----
.../aws2/s3/AWS2S3ProducerHttpResponseCodeTest.java | 8 ++++----
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git
a/components/camel-aws/camel-aws2-s3/src/main/docs/aws2-s3-component.adoc
b/components/camel-aws/camel-aws2-s3/src/main/docs/aws2-s3-component.adoc
index eeb43ddd13fa..24209506fbea 100644
--- a/components/camel-aws/camel-aws2-s3/src/main/docs/aws2-s3-component.adoc
+++ b/components/camel-aws/camel-aws2-s3/src/main/docs/aws2-s3-component.adoc
@@ -1219,7 +1219,7 @@ In AWS S3 there are multiple operations you can submit,
as an example for List b
[source,java]
------------------------------------------------------------------------------------------------------
from("direct:aws2-s3")
- .setBody(ListObjectsRequest.builder().bucket(bucketName).build())
+.setBody(ListObjectsV2Request.builder().bucket(bucketName).build())
.to("aws2-s3://test?amazonS3Client=#amazonS3Client&operation=listObjects&pojoRequest=true")
------------------------------------------------------------------------------------------------------
diff --git
a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
index 7da4ead6ac2f..e29563f4dd81 100644
---
a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
+++
b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java
@@ -52,8 +52,8 @@ import
software.amazon.awssdk.services.s3.model.GetObjectRequest.Builder;
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
import software.amazon.awssdk.services.s3.model.HeadBucketRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
-import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
-import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
+import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
+import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
import software.amazon.awssdk.services.s3.model.NoSuchKeyException;
import software.amazon.awssdk.services.s3.model.S3Object;
import software.amazon.awssdk.utils.IoUtils;
@@ -130,7 +130,7 @@ public class AWS2S3Consumer extends
ScheduledBatchPollingConsumer {
} else {
LOG.trace("Queueing objects in bucket [{}]...", bucketName);
- ListObjectsRequest.Builder listObjectsRequest =
ListObjectsRequest.builder();
+ ListObjectsV2Request.Builder listObjectsRequest =
ListObjectsV2Request.builder();
listObjectsRequest.bucket(bucketName);
if (ObjectHelper.isNotEmpty(getConfiguration().getPrefix())) {
listObjectsRequest.prefix(getConfiguration().getPrefix());
@@ -146,13 +146,13 @@ public class AWS2S3Consumer extends
ScheduledBatchPollingConsumer {
// continue from where we left last time
if (marker != null) {
LOG.trace("Resuming from marker: {}", marker);
- listObjectsRequest.marker(marker);
+ listObjectsRequest.continuationToken(marker);
}
- ListObjectsResponse listObjects =
getAmazonS3Client().listObjects(listObjectsRequest.build());
+ ListObjectsV2Response listObjects =
getAmazonS3Client().listObjectsV2(listObjectsRequest.build());
if (Boolean.TRUE.equals(listObjects.isTruncated())) {
- String next = listObjects.nextMarker();
+ String next = listObjects.nextContinuationToken();
if (next == null && listObjects.hasContents() &&
ObjectHelper.isEmpty(listObjects.prefix())) {
// fallback to use last key from the returned list of
objects
int size = listObjects.contents().size();
@@ -162,7 +162,7 @@ public class AWS2S3Consumer extends
ScheduledBatchPollingConsumer {
}
}
marker = next;
- LOG.trace("Returned list is truncated, so setting next marker:
{}", marker);
+ LOG.trace("Returned list is truncated, so setting next
continuation token: {}", marker);
} else {
// no more data so clear marker
marker = null;
diff --git
a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
index 4d65759d900b..728cc5d946ef 100644
---
a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
+++
b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Producer.java
@@ -692,8 +692,8 @@ public class AWS2S3Producer extends DefaultProducer {
if (getConfiguration().isPojoRequest()) {
Object payload = exchange.getIn().getMandatoryBody();
- if (payload instanceof ListObjectsRequest req) {
- ListObjectsResponse objectList = s3Client.listObjects(req);
+ if (payload instanceof ListObjectsV2Request req) {
+ ListObjectsV2Response objectList = s3Client.listObjectsV2(req);
Message message = getMessageForResponse(exchange);
message.setBody(objectList.contents());
populateHttpResponseCode(objectList, message);
@@ -704,13 +704,13 @@ public class AWS2S3Producer extends DefaultProducer {
final String prefix
= exchange.getIn().getHeader(AWS2S3Constants.PREFIX,
getConfiguration().getPrefix(), String.class);
- final ListObjectsRequest listObjectsRequest = ListObjectsRequest
+ final ListObjectsV2Request listObjectsRequest =
ListObjectsV2Request
.builder()
.bucket(bucketName)
.delimiter(delimiter)
.prefix(prefix)
.build();
- ListObjectsResponse objectList =
s3Client.listObjects(listObjectsRequest);
+ ListObjectsV2Response objectList =
s3Client.listObjectsV2(listObjectsRequest);
Message message = getMessageForResponse(exchange);
message.setBody(objectList.contents());
diff --git
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ProducerHttpResponseCodeTest.java
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ProducerHttpResponseCodeTest.java
index 5cf82aecc5b6..22b1b37405a9 100644
---
a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ProducerHttpResponseCodeTest.java
+++
b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/AWS2S3ProducerHttpResponseCodeTest.java
@@ -34,8 +34,8 @@ import
software.amazon.awssdk.services.s3.model.DeleteBucketResponse;
import software.amazon.awssdk.services.s3.model.DeleteObjectRequest;
import software.amazon.awssdk.services.s3.model.DeleteObjectResponse;
import software.amazon.awssdk.services.s3.model.ListBucketsResponse;
-import software.amazon.awssdk.services.s3.model.ListObjectsRequest;
-import software.amazon.awssdk.services.s3.model.ListObjectsResponse;
+import software.amazon.awssdk.services.s3.model.ListObjectsV2Request;
+import software.amazon.awssdk.services.s3.model.ListObjectsV2Response;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.any;
@@ -126,8 +126,8 @@ public class AWS2S3ProducerHttpResponseCodeTest {
@Test
public void listObjectsShouldSetHttpResponseCode() throws Exception {
when(configuration.getOperation()).thenReturn(AWS2S3Operations.listObjects);
- when(s3Client.listObjects(any(ListObjectsRequest.class)))
- .thenReturn((ListObjectsResponse) ListObjectsResponse.builder()
+ when(s3Client.listObjectsV2(any(ListObjectsV2Request.class)))
+ .thenReturn((ListObjectsV2Response)
ListObjectsV2Response.builder()
.sdkHttpResponse(httpStatus(200))
.build());