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 aa48bb8a90ad CAMEL-24901: camel-aws2-s3 - add 4.18/4.22 upgrade-guide
notes for the key/bucket Simple-evaluation change (#26841)
aa48bb8a90ad is described below
commit aa48bb8a90adfae80a657a9ef427002d6634af31
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Sep 25 10:15:44 2026 +0200
CAMEL-24901: camel-aws2-s3 - add 4.18/4.22 upgrade-guide notes for the
key/bucket Simple-evaluation change (#26841)
Follow-up doc-sync to #26746 / CAMEL-24901.
Co-authored-by: Claude Opus 4.8 <[email protected]>
---
.../ROOT/pages/camel-4x-upgrade-guide-4_18.adoc | 32 ++++++++++++++++++++++
.../ROOT/pages/camel-4x-upgrade-guide-4_22.adoc | 32 ++++++++++++++++++++++
2 files changed, 64 insertions(+)
diff --git
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc
index f9c5f49202eb..a80230d15c7d 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_18.adoc
@@ -2274,6 +2274,38 @@ that resolve outside the configured directory are
rejected.
If `downloadFileName` is configured with an expression (i.e. it contains `$`),
the local
path is built by that expression as before and is not subject to this check.
+=== camel-aws2-s3
+
+The producer no longer evaluates the S3 object key or bucket name taken from a
message header as a Simple
+expression. `AWS2S3Utils.determineKey()` and `determineBucketName()` evaluate
the Simple language only for the
+values configured on the endpoint (`keyName` and `bucketName`); a key supplied
through the `CamelAwsS3Key` header,
+or a bucket name supplied through the `CamelAwsS3OverrideBucketName` header,
is now used literally. The
+`CamelAwsS3Key` header carries message content — for example the name of a
consumed object, which the consumer
+sets on the exchange — whereas a dynamic key or bucket is a route authoring
feature.
+
+Configured dynamic keys and buckets are unchanged:
+
+[source,java]
+----
+from("direct:start")
+ .to("aws2-s3://mybucket?keyName=RAW(${date:now:yyyyMMdd}/file.txt)");
+----
+
+A route that needs a dynamic value on the header must evaluate it in the
route, so the header already holds the
+resolved value when it reaches the producer:
+
+[source,java]
+----
+from("direct:start")
+ .setHeader(AWS2S3Constants.KEY, simple("${date:now:yyyyMMdd}/file.txt"))
+ .to("aws2-s3://mybucket");
+----
+
+A header that carries a literal `${...}` string is now used as the object key
verbatim instead of being evaluated.
+
+A configured `keyName` or `bucketName` whose Simple expression resolves to
`null` now fails with an
+`IllegalArgumentException` at the producer, instead of passing a `null`
key/bucket on to the AWS SDK.
+
=== camel-core - REST client request validation and binary bodies
When `clientRequestValidation` is enabled and the REST service declares a
required body, the incoming
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 fac86e48c844..d429a7bbc767 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
@@ -2092,6 +2092,38 @@ Configure the `target` and `credentials` endpoint
options instead, or route to a
with `toD` when the destination varies per message. The constants remain in
place for backwards
compatibility and are now marked deprecated in the component metadata.
+=== camel-aws2-s3
+
+The producer no longer evaluates the S3 object key or bucket name taken from a
message header as a Simple
+expression. `AWS2S3Utils.determineKey()` and `determineBucketName()` evaluate
the Simple language only for the
+values configured on the endpoint (`keyName` and `bucketName`); a key supplied
through the `CamelAwsS3Key` header,
+or a bucket name supplied through the `CamelAwsS3OverrideBucketName` header,
is now used literally. The
+`CamelAwsS3Key` header carries message content — for example the name of a
consumed object, which the consumer
+sets on the exchange — whereas a dynamic key or bucket is a route authoring
feature.
+
+Configured dynamic keys and buckets are unchanged:
+
+[source,java]
+----
+from("direct:start")
+ .to("aws2-s3://mybucket?keyName=RAW(${date:now:yyyyMMdd}/file.txt)");
+----
+
+A route that needs a dynamic value on the header must evaluate it in the
route, so the header already holds the
+resolved value when it reaches the producer:
+
+[source,java]
+----
+from("direct:start")
+ .setHeader(AWS2S3Constants.KEY, simple("${date:now:yyyyMMdd}/file.txt"))
+ .to("aws2-s3://mybucket");
+----
+
+A header that carries a literal `${...}` string is now used as the object key
verbatim instead of being evaluated.
+
+A configured `keyName` or `bucketName` whose Simple expression resolves to
`null` now fails with an
+`IllegalArgumentException` at the producer, instead of passing a `null`
key/bucket on to the AWS SDK.
+
=== camel-hazelcast - ReplicatedHazelcastAggregationRepository now applies the
default serialization filter
`ReplicatedHazelcastAggregationRepository` now applies the same default