This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
commit fc6ccf43672b96de3d804cbc3a5ac26eb06cbbb4 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Thu Jul 30 08:10:09 2020 +0200 CAMEL-15347 - Camel-aws2-s3: moveAfterRead true bucket not created --- .../camel/component/aws2/s3/AWS2S3Consumer.java | 35 ++++++++++++++++++++++ .../src/test/resources/log4j2.properties | 2 +- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java index acc6eab..154a5d4 100644 --- a/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java +++ b/components/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/AWS2S3Consumer.java @@ -40,6 +40,7 @@ import software.amazon.awssdk.core.ResponseInputStream; import software.amazon.awssdk.core.sync.ResponseTransformer; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CopyObjectRequest; +import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteObjectRequest; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.services.s3.model.GetObjectRequest.Builder; @@ -62,6 +63,40 @@ public class AWS2S3Consumer extends ScheduledBatchPollingConsumer { public AWS2S3Consumer(AWS2S3Endpoint endpoint, Processor processor) throws NoFactoryAvailableException { super(endpoint, processor); } + + @Override + protected void doStart() throws Exception { + super.doStart(); + + if (getConfiguration().isMoveAfterRead()) { + try { + ListObjectsRequest.Builder builder = ListObjectsRequest.builder(); + builder.bucket(getConfiguration().getDestinationBucket()); + builder.maxKeys(maxMessagesPerPoll); + getAmazonS3Client().listObjects(builder.build()); + LOG.trace("Bucket [{}] already exists", getConfiguration().getDestinationBucket()); + return; + } catch (AwsServiceException ase) { + /* 404 means the bucket doesn't exist */ + if (ase.awsErrorDetails().errorCode().equalsIgnoreCase("404")) { + throw ase; + } + } + + LOG.trace("Destination Bucket [{}] doesn't exist yet", getConfiguration().getDestinationBucket()); + + if (getConfiguration().isAutoCreateBucket()) { + // creates the new bucket because it doesn't exist yet + CreateBucketRequest createBucketRequest = CreateBucketRequest.builder().bucket(getConfiguration().getDestinationBucket()).build(); + + LOG.trace("Creating Destination bucket [{}] in region [{}] with request [{}]...", getConfiguration().getDestinationBucket(), getConfiguration().getRegion(), createBucketRequest); + + getAmazonS3Client().createBucket(createBucketRequest); + + LOG.trace("Destination Bucket created"); + } + } + } @Override protected int poll() throws Exception { diff --git a/components/camel-aws2-s3/src/test/resources/log4j2.properties b/components/camel-aws2-s3/src/test/resources/log4j2.properties index a287c66..b4e4ec4 100644 --- a/components/camel-aws2-s3/src/test/resources/log4j2.properties +++ b/components/camel-aws2-s3/src/test/resources/log4j2.properties @@ -24,5 +24,5 @@ appender.out.type = Console appender.out.name = out appender.out.layout.type = PatternLayout appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n -rootLogger.level = INFO +rootLogger.level = TRACE rootLogger.appenderRef.file.ref = file