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: &lt;code&gt;long&lt;/code&gt; 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: &lt;code&gt;long&lt;/code&gt; 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 &lt;code&gt;long&lt;/code&gt; 
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

Reply via email to