This is an automated email from the ASF dual-hosted git repository. christophd pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2907675a4288579217948cf93f7e4c2d76f4a909 Author: Christoph Deppisch <[email protected]> AuthorDate: Thu Oct 15 19:56:58 2026 +0200 CAMEL-25378: Bump parent to 4.24.0-SNAPSHOT and clarify redelivery doc Co-Authored-By: Claude Opus 4.6 <[email protected]> --- bom/camel-bom/pom.xml | 2 +- .../org/apache/camel/catalog/components/citrus.json | 2 +- .../org/apache/camel/catalog/docs/citrus-component.adoc | 14 +++++++++++++- components/camel-test/camel-test-citrus/pom.xml | 2 +- .../META-INF/org/apache/camel/component/citrus/citrus.json | 2 +- .../services/org/apache/camel/component.properties | 2 +- .../camel-test-citrus/src/main/docs/citrus-component.adoc | 4 +++- 7 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml index 369a1040e16d..72312b9de073 100644 --- a/bom/camel-bom/pom.xml +++ b/bom/camel-bom/pom.xml @@ -2455,7 +2455,7 @@ <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-test-citrus</artifactId> - <version>4.23.0-SNAPSHOT</version> + <version>4.24.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.camel</groupId> diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/citrus.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/citrus.json index 058471240c86..b068b5b4b76a 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/citrus.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/citrus.json @@ -11,7 +11,7 @@ "supportLevel": "Preview", "groupId": "org.apache.camel", "artifactId": "camel-test-citrus", - "version": "4.23.0-SNAPSHOT", + "version": "4.24.0-SNAPSHOT", "scheme": "citrus", "extendsScheme": "", "syntax": "citrus:operation\/name", diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/citrus-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/citrus-component.adoc index 3b223533a49f..91b9b9254e03 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/citrus-component.adoc +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/citrus-component.adoc @@ -39,8 +39,10 @@ citrus:operation/name[?options] Where `operation` is `validate` or `receive`, and `name` is an optional identifier to distinguish multiple Citrus endpoints in the same route. -* `validate` — validates exchanges without modifying them (pass-through validation). +* `validate` — validates exchanges without modifying them (pass-through validation). Validation + failures are collected silently and only surface when `assertIsSatisfied()` is called. * `receive` — validates exchanges and returns a simulated response (request/response simulation). + Validation failures remain on the exchange and trigger Camel's `onException` handlers. // component options: START include::partial$component-configure-options.adoc[] @@ -53,6 +55,10 @@ include::partial$component-endpoint-headers.adoc[] The Citrus endpoint acts as a producer-only endpoint. Routes send exchanges *to* `citrus:validate`, and the component validates each exchange using Citrus message validation. +NOTE: Spec setup (`validate()`, `validateAll()`, `when().receive()`) must complete before exchanges +start arriving. For async consumers (SEDA, timer-based routes), ensure all validation chains are +fully configured before starting the `CamelContext`. + === Validation modules The component does not bundle Citrus validation modules. You must add the required validation @@ -394,6 +400,12 @@ The two operations handle validation failures differently with respect to Camel' `onException` handlers and redelivery policies *do* trigger, which matches the expected behavior for a request/response endpoint where callers need to see errors. +NOTE: Each redelivery attempt counts as a new exchange in the mock counter. So if a +`receive(1)` spec fails and Camel redelivers, the retry is exchange 2 and +`receive(2)` applies to it — not `receive(1)` again. If no spec exists for the retry, it +passes without validation and the earlier failure is not recorded, so set +`expectedMessageCount(...)` to catch the extra exchange. + === Exchange properties and variables as Citrus variables All exchange properties and exchange variables are automatically propagated to the Citrus test diff --git a/components/camel-test/camel-test-citrus/pom.xml b/components/camel-test/camel-test-citrus/pom.xml index 278ed3139486..3a61ebdd4565 100644 --- a/components/camel-test/camel-test-citrus/pom.xml +++ b/components/camel-test/camel-test-citrus/pom.xml @@ -23,7 +23,7 @@ <parent> <groupId>org.apache.camel</groupId> <artifactId>camel-test-parent</artifactId> - <version>4.23.0-SNAPSHOT</version> + <version>4.24.0-SNAPSHOT</version> </parent> <artifactId>camel-test-citrus</artifactId> diff --git a/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/org/apache/camel/component/citrus/citrus.json b/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/org/apache/camel/component/citrus/citrus.json index 058471240c86..b068b5b4b76a 100644 --- a/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/org/apache/camel/component/citrus/citrus.json +++ b/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/org/apache/camel/component/citrus/citrus.json @@ -11,7 +11,7 @@ "supportLevel": "Preview", "groupId": "org.apache.camel", "artifactId": "camel-test-citrus", - "version": "4.23.0-SNAPSHOT", + "version": "4.24.0-SNAPSHOT", "scheme": "citrus", "extendsScheme": "", "syntax": "citrus:operation\/name", diff --git a/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/services/org/apache/camel/component.properties index 2ecb2a503903..ecc06c05f86d 100644 --- a/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/services/org/apache/camel/component.properties +++ b/components/camel-test/camel-test-citrus/src/generated/resources/META-INF/services/org/apache/camel/component.properties @@ -2,6 +2,6 @@ components=citrus groupId=org.apache.camel artifactId=camel-test-citrus -version=4.23.0-SNAPSHOT +version=4.24.0-SNAPSHOT projectName=Camel :: Test :: Citrus projectDescription=Citrus message validation component for testing diff --git a/components/camel-test/camel-test-citrus/src/main/docs/citrus-component.adoc b/components/camel-test/camel-test-citrus/src/main/docs/citrus-component.adoc index f004bb3dcff8..91b9b9254e03 100644 --- a/components/camel-test/camel-test-citrus/src/main/docs/citrus-component.adoc +++ b/components/camel-test/camel-test-citrus/src/main/docs/citrus-component.adoc @@ -402,7 +402,9 @@ The two operations handle validation failures differently with respect to Camel' NOTE: Each redelivery attempt counts as a new exchange in the mock counter. So if a `receive(1)` spec fails and Camel redelivers, the retry is exchange 2 and -`receive(2)` applies to it — not `receive(1)` again. +`receive(2)` applies to it — not `receive(1)` again. If no spec exists for the retry, it +passes without validation and the earlier failure is not recorded, so set +`expectedMessageCount(...)` to catch the extra exchange. === Exchange properties and variables as Citrus variables
