Skip to content

CAMEL-25878: Upgrade Citrus to 5.1.0 - #28173

Merged
davsclaus merged 2 commits into
mainfrom
CAMEL-25878-citrus-5.1.0
Oct 21, 2026
Merged

davsclaus merged 2 commits into
mainfrom
CAMEL-25878-citrus-5.1.0

Conversation

@davsclaus

Copy link
Copy Markdown
Contributor

Upgrades Citrus from 5.0.2 to 5.1.0 (CAMEL-25878), used by camel-test-citrus and by camel-jbang-plugin-test (camel test).

Citrus 5.1.0 no longer sends the default Content-Type: text/plain on a bodyless HTTP request (citrusframework/citrus#1826, citrusframework/citrus#1829). With that header, a REST DSL route with bindingMode: json answers a GET with 500, so Citrus tests of such routes had to set the Content-Type on every GET (apache/camel-jbang-examples#129). Its Spring (7.0.9) and Spring Boot (4.1.1) versions match Camel's.

The plugin reads the Citrus version at runtime (CitrusVersion.version()), so parent/pom.xml is the only change.

Tested locally:

  • camel-test-citrus: mvn verify, 41 tests pass.
  • camel-jbang-plugin-test: mvn verify, 6 tests pass.
  • With the rebuilt plugin installed, camel test run of the camel-jbang-examples contracts/rest-code-first test, with the Content-Type workaround removed from its GETs, passes (Citrus 5.1.0, integration on Camel 4.23.0).

Claude Code on behalf of davsclaus

🤖 Generated with Claude Code

Citrus 5.1.0 no longer sends the default Content-Type text/plain on a bodyless HTTP request
(citrusframework/citrus#1826), so a camel test of a REST DSL route with bindingMode=json needs no Content-Type on
its GETs.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Claus Ibsen <claus.ibsen@gmail.com>
@github-actions

Copy link
Copy Markdown
Contributor

🌟 Thank you for your contribution to the Apache Camel project! 🌟
🤖 CI automation will test this PR automatically.

🐫 Apache Camel Committers, please review the following items:

  • First-time contributors require MANUAL approval for the GitHub Actions to run
  • You can use the command /component-test (camel-)component-name1 (camel-)component-name2.. to request a test from the test bot although they are normally detected and executed by CI.
  • You can label PRs using skip-tests and test-dependents to fine-tune the checks executed by this PR.
  • Build and test logs are available in the summary page. Only Apache Camel committers have access to the summary.

⚠️ Be careful when sharing logs. Review their contents before sharing them publicly.

@gnodet-bot gnodet-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean, minimal dependency bump (5.0.2→5.1.0) with correct scope (single property change in parent/pom.xml). No concerns. ✅

This review was generated by an AI agent, Hermès on behalf of @gnodet.

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

✅ Generated files are up to date

An earlier CI run reported uncommitted generated changes; the latest run no longer does.

@github-actions

Copy link
Copy Markdown
Contributor

🧪 CI tested the following changed modules:

  • docs
  • dsl/camel-jbang/camel-jbang-plugin-test
  • parent

✅ POM dependency changes: targeted tests included

Changed properties: citrus-version

Modules affected by dependency changes (1)
  • :camel-test-citrus

🔬 Scalpel shadow comparison — Scalpel: 9 of 707 tested, 3 compile-only — current: 1 all tested

Maveniverse Scalpel detected 9 affected modules (current approach: 1).

Changed properties: citrus-version

Skip-tests mode would test 9 modules (4 direct + 0 downstream), skip tests for 3 (generated code, meta-modules)

⚠️ Modules only in Scalpel (8)
  • camel-jbang-mcp
  • camel-jbang-plugin-mcp
  • camel-jbang-plugin-tui
  • camel-jbang-plugin-validate
  • camel-jpa
  • camel-test-citrus
  • camel-yaml-dsl-validator
  • camel-yaml-dsl-validator-maven-plugin
Modules Scalpel would test (9)
  • camel-jbang-mcp ← depends on affected reactor module org.apache.camel:camel-yaml-dsl-validator
  • camel-jbang-plugin-mcp ← depends on affected reactor module org.apache.camel:camel-jbang-core
  • camel-jbang-plugin-tui ← depends on affected reactor module org.apache.camel:camel-yaml-dsl-validator
  • camel-jbang-plugin-validate ← depends on affected reactor module org.apache.camel:camel-yaml-dsl-validator
  • camel-jpa ← effective property camel.surefire.fork.additional-vmargs
  • camel-launcher-container ← depends on affected reactor module org.apache.camel:camel-launcher
  • camel-test-citrus ← effective dep org.citrusframework:citrus-api, effective dep org.citrusframework:citrus-base, effective dep org.citrusframework:citrus-validation-json, effective dep org.citrusframework:citrus-validation-xml, effective dep org.citrusframework:citrus-validation-text, effective dep org.citrusframework:citrus-validation-yaml
  • camel-yaml-dsl-validator ← depends on affected reactor module org.apache.camel:camel-catalog
  • camel-yaml-dsl-validator-maven-plugin ← depends on affected reactor module org.apache.camel:camel-yaml-dsl-validator
Modules with tests skipped (3)
  • camel-itest
  • camel-yaml-dsl
  • camel-yaml-dsl-deserializers

ℹ️ Shadow mode — Scalpel observes but does not affect test execution. Learn more

💡 Manual integration tests recommended:

You modified dsl/camel-jbang/camel-jbang-plugin-test. The related integration tests in dsl/camel-jbang/camel-jbang-it are excluded from CI. Consider running them manually:

mvn verify -f dsl/camel-jbang/camel-jbang-it -Djbang-it-test
All tested modules (36 modules, 7m 6s total)

Total reactor time: 7m 6s

Module Duration Status
Camel :: JPA 57.4s SUCCESS
Camel :: Launcher 53.8s SUCCESS
Camel :: JBang :: MCP 43.1s SUCCESS
Camel :: JBang :: Plugin :: Validate 29.9s SUCCESS
Camel :: Test :: Citrus 29.7s SUCCESS
Camel :: YAML DSL 24.1s SUCCESS
Camel :: Catalog :: Camel Catalog 23.4s SUCCESS
Camel :: YAML DSL :: Validator 23.3s SUCCESS
Camel :: Component DSL 20.1s SUCCESS
Camel :: Kamelet Main 15.2s SUCCESS
Camel :: Docs 14.4s SUCCESS
Camel :: JBang :: Plugin :: Kubernetes 13.5s SUCCESS
Camel :: JBang :: Plugin :: Testing 13.5s SUCCESS
Camel :: Catalog :: Camel Report Maven Plugin 10.2s SUCCESS
Camel :: YAML DSL :: Deserializers 9.6s SUCCESS
Camel :: All Components Sync point 9.6s SUCCESS
Camel :: Catalog :: Camel Route Parser 7.0s SUCCESS
Camel :: YAML DSL :: Validator Maven Plugin 4.8s SUCCESS
Camel :: Catalog :: Maven 3.6s SUCCESS
Camel :: YAML DSL :: Maven Plugins 3.4s SUCCESS
Camel :: Catalog :: Suggest (deprecated) 2.5s SUCCESS
Camel :: Coverage 2.2s SUCCESS
Camel :: Assembly 1.9s SUCCESS
Camel :: Catalog :: Dummy Component 1.7s SUCCESS
Camel :: JBang :: Integration tests 1.3s SUCCESS
Camel :: JBang :: Plugin :: Edit 1.3s SUCCESS
Camel :: JBang :: Main 1.3s SUCCESS
Camel :: JBang :: Plugin :: Generate 1.1s SUCCESS
Camel :: Catalog :: Console 1.1s SUCCESS
Camel :: Endpoint DSL :: Support 0.8s SUCCESS
Camel :: JBang :: Plugin :: MCP 0.6s SUCCESS
Camel :: Launcher :: Container 0.5s SUCCESS
Camel :: Endpoint DSL n/a
Camel :: Integration Tests n/a
Camel :: JBang :: Core n/a
Camel :: JBang :: Plugin :: TUI n/a

Top 20 slowest modules:

  • Camel :: JPA (57.4s)
  • Camel :: Launcher (53.8s)
  • Camel :: JBang :: MCP (43.1s)
  • Camel :: JBang :: Plugin :: Validate (29.9s)
  • Camel :: Test :: Citrus (29.7s)
  • Camel :: YAML DSL (24.1s)
  • Camel :: Catalog :: Camel Catalog (23.4s)
  • Camel :: YAML DSL :: Validator (23.3s)
  • Camel :: Component DSL (20.1s)
  • Camel :: Kamelet Main (15.2s)
  • Camel :: Docs (14.4s)
  • Camel :: JBang :: Plugin :: Kubernetes (13.5s)
  • Camel :: JBang :: Plugin :: Testing (13.5s)
  • Camel :: Catalog :: Camel Report Maven Plugin (10.2s)
  • Camel :: YAML DSL :: Deserializers (9.6s)
  • Camel :: All Components Sync point (9.6s)
  • Camel :: Catalog :: Camel Route Parser (7.0s)
  • Camel :: YAML DSL :: Validator Maven Plugin (4.8s)
  • Camel :: Catalog :: Maven (3.6s)
  • Camel :: YAML DSL :: Maven Plugins (3.4s)

⚙️ View full build and test results

@oscerd oscerd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TL;DR

The upgrade is clean and ready to merge: Citrus 5.1.0 is on Central, CI is green on JDK 21 and 25, none of the 5.1.0 changes touch an API Camel calls, and the regenerated test agent pages match the corrected option texts of 5.1.0.

Blockers

  • None

Other findings: 2, neither blocks this PR

  1. Not caused by this PR: TestPluginExporter still adds org.citrusframework:citrus-junit5:${citrus.version}. From Citrus 5.0.0 on the artifact is citrus-junit-jupiter (citrus-junit5 ends at 4.10.3 on Central), so camel export of a project with a test/ folder writes a dependency that does not resolve, on main and on camel-4.22.x (5.0.0). Could we fix it in a follow-up Jira? deps.add(asDependency("citrus-junit-jupiter")); also provides the org.citrusframework.junit.jupiter.CitrusSupport that junit-test.tmpl imports.
  2. Optional, your call: a line in camel-4x-upgrade-guide-4_24.adoc saying camel test (Citrus 5.1.0) no longer sends a default Content-Type on GET/HEAD/OPTIONS/TRACE, for anyone whose tests check that header on the receiving side.

Checked

  • Release notes: https://github.com/citrusframework/citrus/releases/tag/v5.1.0 (v5.0.2...v5.1.0). Relevant items are #1829, #1832, #1770, #1772 and #1739. Diffing the 5.0.2 and 5.1.0 sources of the classes camel-test-citrus and camel-jbang-plugin-test use shows no signature change, and the bytecode is still Java 17.
  • Central: https://repo1.maven.org/maven2/org/citrusframework/citrus-jbang/5.1.0/ returns 200, as do citrus-api, citrus-base and citrus-validation-json/xml/text/yaml 5.1.0.
  • Transitives: Spring 7.0.9, Spring Boot 4.1.1, Jackson 2.22.3/3.2.3, picocli 4.7.7, log4j 2.25.5 and httpclient5 5.6.4 equal parent/pom.xml; no new major line.
  • CI: camel-test-citrus 41/41 and TestPluginTest 6/6 on JDK 21 and 25. citrus-version is the only version reference; the weekly bot regenerates the SBOM.

Reviewed with Claude Code on behalf of oscerd. This review was generated by an AI agent and may contain inaccuracies; please verify all suggestions before applying.

@davsclaus davsclaus self-assigned this Oct 21, 2026
@davsclaus
davsclaus merged commit 7ddf876 into main Oct 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants