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 624a2598a715dba0b1e5e3935b20e51fe9f1cd17 Author: Andrea Cosentino <[email protected]> AuthorDate: Tue Apr 6 07:12:33 2021 +0200 CAMEL-16185 - AWS S3: improve multipart support - streaming upload --- .../camel/catalog/docs/aws2-s3-component.adoc | 10 +++-- .../aws2/s3/AWS2S3ComponentConfigurer.java | 23 ++++++++--- .../aws2/s3/AWS2S3EndpointConfigurer.java | 23 ++++++++--- .../aws2/s3/AWS2S3EndpointUriFactory.java | 5 ++- .../apache/camel/component/aws2/s3/aws2-s3.json | 6 ++- .../src/main/docs/aws2-s3-component.adoc | 10 +++-- .../aws2/s3/stream/AWS2S3StreamUploadProducer.java | 8 ++-- .../S3StreamUploadTimeoutLocalstackTest.java | 2 +- .../dsl/Aws2S3ComponentBuilderFactory.java | 26 ++++++++++-- .../endpoint/dsl/AWS2S3EndpointBuilderFactory.java | 46 +++++++++++++++++++--- .../modules/ROOT/pages/aws2-s3-component.adoc | 10 +++-- 11 files changed, 127 insertions(+), 42 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-s3-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-s3-component.adoc index 5d5ea99..dc3fd8f 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-s3-component.adoc +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-s3-component.adoc @@ -47,7 +47,7 @@ from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&pref // component options: START -The AWS 2 S3 Storage Service component supports 47 options, which are listed below. +The AWS 2 S3 Storage Service component supports 48 options, which are listed below. @@ -94,7 +94,8 @@ The AWS 2 S3 Storage Service component supports 47 options, which are listed bel | *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, getObjectRange | | AWS2S3Operations | *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long | *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | | String -| *streamMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadTimeout* (producer) | While streaming upload mode is true, this option set the timeout to complete upload | | long | *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled | | String | *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean | *useCustomerKey* (producer) | Define if Customer Key must be used or not | false | boolean @@ -133,7 +134,7 @@ with the following path and query parameters: |=== -=== Query Parameters (65 parameters): +=== Query Parameters (66 parameters): [width="100%",cols="2,5,^1,2",options="header"] @@ -184,7 +185,8 @@ with the following path and query parameters: | *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, getObjectRange | | AWS2S3Operations | *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long | *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | | String -| *streamMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadTimeout* (producer) | While streaming upload mode is true, this option set the timeout to complete upload | | long | *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled | | String | *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean | *useCustomerKey* (producer) | Define if Customer Key must be used or not | false | boolean diff --git a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java index 89a4c80..4920a0a 100644 --- a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java +++ b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3ComponentConfigurer.java @@ -1,9 +1,14 @@ /* Generated by camel build tools - do NOT edit this file! */ package org.apache.camel.component.aws2.s3; +import java.util.Map; + import org.apache.camel.CamelContext; +import org.apache.camel.spi.ExtendedPropertyConfigurerGetter; import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.spi.ConfigurerStrategy; import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.util.CaseInsensitiveMap; import org.apache.camel.support.component.PropertyConfigurerSupport; /** @@ -99,8 +104,10 @@ public class AWS2S3ComponentConfigurer extends PropertyConfigurerSupport impleme case "secretKey": getOrCreateConfiguration(target).setSecretKey(property(camelContext, java.lang.String.class, value)); return true; case "storageclass": case "storageClass": getOrCreateConfiguration(target).setStorageClass(property(camelContext, java.lang.String.class, value)); return true; - case "streammode": - case "streamMode": getOrCreateConfiguration(target).setStreamingUploadMode(property(camelContext, boolean.class, value)); return true; + case "streaminguploadmode": + case "streamingUploadMode": getOrCreateConfiguration(target).setStreamingUploadMode(property(camelContext, boolean.class, value)); return true; + case "streaminguploadtimeout": + case "streamingUploadTimeout": getOrCreateConfiguration(target).setStreamingUploadTimeout(property(camelContext, long.class, value)); return true; case "trustallcertificates": case "trustAllCertificates": getOrCreateConfiguration(target).setTrustAllCertificates(property(camelContext, boolean.class, value)); return true; case "uriendpointoverride": @@ -199,8 +206,10 @@ public class AWS2S3ComponentConfigurer extends PropertyConfigurerSupport impleme case "secretKey": return java.lang.String.class; case "storageclass": case "storageClass": return java.lang.String.class; - case "streammode": - case "streamMode": return boolean.class; + case "streaminguploadmode": + case "streamingUploadMode": return boolean.class; + case "streaminguploadtimeout": + case "streamingUploadTimeout": return long.class; case "trustallcertificates": case "trustAllCertificates": return boolean.class; case "uriendpointoverride": @@ -295,8 +304,10 @@ public class AWS2S3ComponentConfigurer extends PropertyConfigurerSupport impleme case "secretKey": return getOrCreateConfiguration(target).getSecretKey(); case "storageclass": case "storageClass": return getOrCreateConfiguration(target).getStorageClass(); - case "streammode": - case "streamMode": return getOrCreateConfiguration(target).isStreamingUploadMode(); + case "streaminguploadmode": + case "streamingUploadMode": return getOrCreateConfiguration(target).isStreamingUploadMode(); + case "streaminguploadtimeout": + case "streamingUploadTimeout": return getOrCreateConfiguration(target).getStreamingUploadTimeout(); case "trustallcertificates": case "trustAllCertificates": return getOrCreateConfiguration(target).isTrustAllCertificates(); case "uriendpointoverride": diff --git a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java index bd98c61..9b57190 100644 --- a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java +++ b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointConfigurer.java @@ -1,9 +1,14 @@ /* Generated by camel build tools - do NOT edit this file! */ package org.apache.camel.component.aws2.s3; +import java.util.Map; + import org.apache.camel.CamelContext; +import org.apache.camel.spi.ExtendedPropertyConfigurerGetter; import org.apache.camel.spi.PropertyConfigurerGetter; +import org.apache.camel.spi.ConfigurerStrategy; import org.apache.camel.spi.GeneratedPropertyConfigurer; +import org.apache.camel.util.CaseInsensitiveMap; import org.apache.camel.support.component.PropertyConfigurerSupport; /** @@ -122,8 +127,10 @@ public class AWS2S3EndpointConfigurer extends PropertyConfigurerSupport implemen case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true; case "storageclass": case "storageClass": target.getConfiguration().setStorageClass(property(camelContext, java.lang.String.class, value)); return true; - case "streammode": - case "streamMode": target.getConfiguration().setStreamingUploadMode(property(camelContext, boolean.class, value)); return true; + case "streaminguploadmode": + case "streamingUploadMode": target.getConfiguration().setStreamingUploadMode(property(camelContext, boolean.class, value)); return true; + case "streaminguploadtimeout": + case "streamingUploadTimeout": target.getConfiguration().setStreamingUploadTimeout(property(camelContext, long.class, value)); return true; case "timeunit": case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true; case "trustallcertificates": @@ -256,8 +263,10 @@ public class AWS2S3EndpointConfigurer extends PropertyConfigurerSupport implemen case "startScheduler": return boolean.class; case "storageclass": case "storageClass": return java.lang.String.class; - case "streammode": - case "streamMode": return boolean.class; + case "streaminguploadmode": + case "streamingUploadMode": return boolean.class; + case "streaminguploadtimeout": + case "streamingUploadTimeout": return long.class; case "timeunit": case "timeUnit": return java.util.concurrent.TimeUnit.class; case "trustallcertificates": @@ -386,8 +395,10 @@ public class AWS2S3EndpointConfigurer extends PropertyConfigurerSupport implemen case "startScheduler": return target.isStartScheduler(); case "storageclass": case "storageClass": return target.getConfiguration().getStorageClass(); - case "streammode": - case "streamMode": return target.getConfiguration().isStreamingUploadMode(); + case "streaminguploadmode": + case "streamingUploadMode": return target.getConfiguration().isStreamingUploadMode(); + case "streaminguploadtimeout": + case "streamingUploadTimeout": return target.getConfiguration().getStreamingUploadTimeout(); case "timeunit": case "timeUnit": return target.getTimeUnit(); case "trustallcertificates": diff --git a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java index e6c1ba0..6eb9073 100644 --- a/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java +++ b/components/camel-aws/camel-aws2-s3/src/generated/java/org/apache/camel/component/aws2/s3/AWS2S3EndpointUriFactory.java @@ -20,12 +20,11 @@ public class AWS2S3EndpointUriFactory extends org.apache.camel.support.component private static final Set<String> PROPERTY_NAMES; private static final Set<String> SECRET_PROPERTY_NAMES; static { - Set<String> props = new HashSet<>(66); + Set<String> props = new HashSet<>(67); props.add("customerAlgorithm"); props.add("fileName"); props.add("batchMessageNumber"); props.add("useCustomerKey"); - props.add("streamMode"); props.add("bucketNameOrArn"); props.add("customerKeyId"); props.add("prefix"); @@ -37,6 +36,7 @@ public class AWS2S3EndpointUriFactory extends org.apache.camel.support.component props.add("bridgeErrorHandler"); props.add("awsKMSKeyId"); props.add("delimiter"); + props.add("streamingUploadMode"); props.add("amazonS3Client"); props.add("greedy"); props.add("maxMessagesPerPoll"); @@ -45,6 +45,7 @@ public class AWS2S3EndpointUriFactory extends org.apache.camel.support.component props.add("moveAfterRead"); props.add("sendEmptyMessageWhenIdle"); props.add("schedulerProperties"); + props.add("streamingUploadTimeout"); props.add("proxyHost"); props.add("backoffIdleThreshold"); props.add("trustAllCertificates"); diff --git a/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json b/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json index feced29..584eec8 100644 --- a/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json +++ b/components/camel-aws/camel-aws2-s3/src/generated/resources/org/apache/camel/component/aws2/s3/aws2-s3.json @@ -62,7 +62,8 @@ "operation": { "kind": "property", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws2.s3.AWS2S3Operations", "enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", "listBuckets", "getObject", "getObjectRange" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": [...] "partSize": { "kind": "property", "displayName": "Part Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 26214400, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Setup the partSize which is used in multi part upload, the default size is 25M." }, "storageClass": { "kind": "property", "displayName": "Storage Class", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request." }, - "streamMode": { "kind": "property", "displayName": "Stream Mode", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "When stream mode is true the upload to bucket will be done in streaming" }, + "streamingUploadMode": { "kind": "property", "displayName": "Streaming Upload Mode", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "When stream mode is true the upload to bucket will be done in streaming" }, + "streamingUploadTimeout": { "kind": "property", "displayName": "Streaming Upload Timeout", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "While streaming upload mode is true, this option set the timeout to complete upload" }, "awsKMSKeyId": { "kind": "property", "displayName": "Aws KMSKey Id", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define the id of KMS key to use in case KMS is enabled" }, "useAwsKMS": { "kind": "property", "displayName": "Use Aws KMS", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if KMS must be used or not" }, "useCustomerKey": { "kind": "property", "displayName": "Use Customer Key", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if Customer Key must be used or not" }, @@ -117,7 +118,8 @@ "operation": { "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "producer", "required": false, "type": "object", "javaType": "org.apache.camel.component.aws2.s3.AWS2S3Operations", "enum": [ "copyObject", "listObjects", "deleteObject", "deleteBucket", "listBuckets", "getObject", "getObjectRange" ], "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": [...] "partSize": { "kind": "parameter", "displayName": "Part Size", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 26214400, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Setup the partSize which is used in multi part upload, the default size is 25M." }, "storageClass": { "kind": "parameter", "displayName": "Storage Class", "group": "producer", "label": "producer", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request." }, - "streamMode": { "kind": "parameter", "displayName": "Stream Mode", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "When stream mode is true the upload to bucket will be done in streaming" }, + "streamingUploadMode": { "kind": "parameter", "displayName": "Streaming Upload Mode", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "When stream mode is true the upload to bucket will be done in streaming" }, + "streamingUploadTimeout": { "kind": "parameter", "displayName": "Streaming Upload Timeout", "group": "producer", "label": "producer", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "While streaming upload mode is true, this option set the timeout to complete upload" }, "awsKMSKeyId": { "kind": "parameter", "displayName": "Aws KMSKey Id", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define the id of KMS key to use in case KMS is enabled" }, "useAwsKMS": { "kind": "parameter", "displayName": "Use Aws KMS", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if KMS must be used or not" }, "useCustomerKey": { "kind": "parameter", "displayName": "Use Customer Key", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.s3.AWS2S3Configuration", "configurationField": "configuration", "description": "Define if Customer Key must be used or not" }, 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 5d5ea99..dc3fd8f 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 @@ -47,7 +47,7 @@ from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&pref // component options: START -The AWS 2 S3 Storage Service component supports 47 options, which are listed below. +The AWS 2 S3 Storage Service component supports 48 options, which are listed below. @@ -94,7 +94,8 @@ The AWS 2 S3 Storage Service component supports 47 options, which are listed bel | *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, getObjectRange | | AWS2S3Operations | *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long | *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | | String -| *streamMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadTimeout* (producer) | While streaming upload mode is true, this option set the timeout to complete upload | | long | *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled | | String | *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean | *useCustomerKey* (producer) | Define if Customer Key must be used or not | false | boolean @@ -133,7 +134,7 @@ with the following path and query parameters: |=== -=== Query Parameters (65 parameters): +=== Query Parameters (66 parameters): [width="100%",cols="2,5,^1,2",options="header"] @@ -184,7 +185,8 @@ with the following path and query parameters: | *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, getObjectRange | | AWS2S3Operations | *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long | *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | | String -| *streamMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadTimeout* (producer) | While streaming upload mode is true, this option set the timeout to complete upload | | long | *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled | | String | *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean | *useCustomerKey* (producer) | Define if Customer Key must be used or not | false | boolean diff --git a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/stream/AWS2S3StreamUploadProducer.java b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/stream/AWS2S3StreamUploadProducer.java index 21e8b53c..412df8f 100644 --- a/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/stream/AWS2S3StreamUploadProducer.java +++ b/components/camel-aws/camel-aws2-s3/src/main/java/org/apache/camel/component/aws2/s3/stream/AWS2S3StreamUploadProducer.java @@ -73,11 +73,13 @@ public class AWS2S3StreamUploadProducer extends DefaultProducer { @Override protected void doStart() throws Exception { super.doStart(); - if (ObjectHelper.isNotEmpty(getConfiguration().getStreamingUploadTimeout())) { + if (getConfiguration().getStreamingUploadTimeout() > 0) { timeoutCheckerExecutorService = getEndpoint().getCamelContext().getExecutorServiceManager().newSingleThreadScheduledExecutor(this, - "timeout_checker"); - timeoutCheckerExecutorService.scheduleAtFixedRate(new AggregationIntervalTask(), getConfiguration().getStreamingUploadTimeout(), getConfiguration().getStreamingUploadTimeout(), TimeUnit.MILLISECONDS); + "timeout_checker"); + timeoutCheckerExecutorService.scheduleAtFixedRate(new AggregationIntervalTask(), + getConfiguration().getStreamingUploadTimeout(), getConfiguration().getStreamingUploadTimeout(), + TimeUnit.MILLISECONDS); } } diff --git a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/localstack/S3StreamUploadTimeoutLocalstackTest.java b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/localstack/S3StreamUploadTimeoutLocalstackTest.java index d958e1c..79f1d54 100644 --- a/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/localstack/S3StreamUploadTimeoutLocalstackTest.java +++ b/components/camel-aws/camel-aws2-s3/src/test/java/org/apache/camel/component/aws2/s3/localstack/S3StreamUploadTimeoutLocalstackTest.java @@ -55,7 +55,7 @@ public class S3StreamUploadTimeoutLocalstackTest extends Aws2S3BaseTest { @Override public void configure() throws Exception { String awsEndpoint1 - = "aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random"; + = "aws2-s3://mycamel-1?autoCreateBucket=true&streamingUploadMode=true&keyName=fileTest.txt&batchMessageNumber=25&namingStrategy=random&streamingUploadTimeout=10000"; from("direct:stream1").to(awsEndpoint1).to("mock:result"); diff --git a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3ComponentBuilderFactory.java b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3ComponentBuilderFactory.java index f31f288..9218000 100644 --- a/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3ComponentBuilderFactory.java +++ b/core/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/Aws2S3ComponentBuilderFactory.java @@ -730,11 +730,28 @@ public interface Aws2S3ComponentBuilderFactory { * Default: false * Group: producer * - * @param streamMode the value to set + * @param streamingUploadMode the value to set * @return the dsl builder */ - default Aws2S3ComponentBuilder streamMode(boolean streamMode) { - doSetProperty("streamMode", streamMode); + default Aws2S3ComponentBuilder streamingUploadMode( + boolean streamingUploadMode) { + doSetProperty("streamingUploadMode", streamingUploadMode); + return this; + } + /** + * While streaming upload mode is true, this option set the timeout to + * complete upload. + * + * The option is a: <code>long</code> type. + * + * Group: producer + * + * @param streamingUploadTimeout the value to set + * @return the dsl builder + */ + default Aws2S3ComponentBuilder streamingUploadTimeout( + long streamingUploadTimeout) { + doSetProperty("streamingUploadTimeout", streamingUploadTimeout); return this; } /** @@ -893,7 +910,8 @@ public interface Aws2S3ComponentBuilderFactory { case "operation": getOrCreateConfiguration((AWS2S3Component) component).setOperation((org.apache.camel.component.aws2.s3.AWS2S3Operations) value); return true; case "partSize": getOrCreateConfiguration((AWS2S3Component) component).setPartSize((long) value); return true; case "storageClass": getOrCreateConfiguration((AWS2S3Component) component).setStorageClass((java.lang.String) value); return true; - case "streamMode": getOrCreateConfiguration((AWS2S3Component) component).setStreamMode((boolean) value); return true; + case "streamingUploadMode": getOrCreateConfiguration((AWS2S3Component) component).setStreamingUploadMode((boolean) value); return true; + case "streamingUploadTimeout": getOrCreateConfiguration((AWS2S3Component) component).setStreamingUploadTimeout((long) value); return true; case "awsKMSKeyId": getOrCreateConfiguration((AWS2S3Component) component).setAwsKMSKeyId((java.lang.String) value); return true; case "useAwsKMS": getOrCreateConfiguration((AWS2S3Component) component).setUseAwsKMS((boolean) value); return true; case "useCustomerKey": getOrCreateConfiguration((AWS2S3Component) component).setUseCustomerKey((boolean) value); return true; diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3EndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3EndpointBuilderFactory.java index 0f77798..bcc7ff6 100644 --- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3EndpointBuilderFactory.java +++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/AWS2S3EndpointBuilderFactory.java @@ -2251,11 +2251,12 @@ public interface AWS2S3EndpointBuilderFactory { * Default: false * Group: producer * - * @param streamMode the value to set + * @param streamingUploadMode the value to set * @return the dsl builder */ - default AWS2S3EndpointProducerBuilder streamMode(boolean streamMode) { - doSetProperty("streamMode", streamMode); + default AWS2S3EndpointProducerBuilder streamingUploadMode( + boolean streamingUploadMode) { + doSetProperty("streamingUploadMode", streamingUploadMode); return this; } /** @@ -2268,11 +2269,44 @@ public interface AWS2S3EndpointBuilderFactory { * Default: false * Group: producer * - * @param streamMode the value to set + * @param streamingUploadMode the value to set * @return the dsl builder */ - default AWS2S3EndpointProducerBuilder streamMode(String streamMode) { - doSetProperty("streamMode", streamMode); + default AWS2S3EndpointProducerBuilder streamingUploadMode( + String streamingUploadMode) { + doSetProperty("streamingUploadMode", streamingUploadMode); + return this; + } + /** + * While streaming upload mode is true, this option set the timeout to + * complete upload. + * + * The option is a: <code>long</code> type. + * + * Group: producer + * + * @param streamingUploadTimeout the value to set + * @return the dsl builder + */ + default AWS2S3EndpointProducerBuilder streamingUploadTimeout( + long streamingUploadTimeout) { + doSetProperty("streamingUploadTimeout", streamingUploadTimeout); + return this; + } + /** + * While streaming upload mode is true, this option set the timeout to + * complete upload. + * + * The option will be converted to a <code>long</code> type. + * + * Group: producer + * + * @param streamingUploadTimeout the value to set + * @return the dsl builder + */ + default AWS2S3EndpointProducerBuilder streamingUploadTimeout( + String streamingUploadTimeout) { + doSetProperty("streamingUploadTimeout", streamingUploadTimeout); return this; } /** diff --git a/docs/components/modules/ROOT/pages/aws2-s3-component.adoc b/docs/components/modules/ROOT/pages/aws2-s3-component.adoc index d9b4856..f20ba1f 100644 --- a/docs/components/modules/ROOT/pages/aws2-s3-component.adoc +++ b/docs/components/modules/ROOT/pages/aws2-s3-component.adoc @@ -49,7 +49,7 @@ from("aws2-s3://helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&pref // component options: START -The AWS 2 S3 Storage Service component supports 47 options, which are listed below. +The AWS 2 S3 Storage Service component supports 48 options, which are listed below. @@ -96,7 +96,8 @@ The AWS 2 S3 Storage Service component supports 47 options, which are listed bel | *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, getObjectRange | | AWS2S3Operations | *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long | *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | | String -| *streamMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadTimeout* (producer) | While streaming upload mode is true, this option set the timeout to complete upload | | long | *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled | | String | *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean | *useCustomerKey* (producer) | Define if Customer Key must be used or not | false | boolean @@ -135,7 +136,7 @@ with the following path and query parameters: |=== -=== Query Parameters (65 parameters): +=== Query Parameters (66 parameters): [width="100%",cols="2,5,^1,2",options="header"] @@ -186,7 +187,8 @@ with the following path and query parameters: | *operation* (producer) | The operation to do in case the user don't want to do only an upload. There are 7 enums and the value can be one of: copyObject, listObjects, deleteObject, deleteBucket, listBuckets, getObject, getObjectRange | | AWS2S3Operations | *partSize* (producer) | Setup the partSize which is used in multi part upload, the default size is 25M. | 26214400 | long | *storageClass* (producer) | The storage class to set in the com.amazonaws.services.s3.model.PutObjectRequest request. | | String -| *streamMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadMode* (producer) | When stream mode is true the upload to bucket will be done in streaming | false | boolean +| *streamingUploadTimeout* (producer) | While streaming upload mode is true, this option set the timeout to complete upload | | long | *awsKMSKeyId* (producer) | Define the id of KMS key to use in case KMS is enabled | | String | *useAwsKMS* (producer) | Define if KMS must be used or not | false | boolean | *useCustomerKey* (producer) | Define if Customer Key must be used or not | false | boolean
