Skip to content

CAMEL-23879: Add SecureRandomHelper to camel-util, consolidate all SecureRandom usage#24374

Open
gnodet wants to merge 4 commits into
apache:mainfrom
gnodet:sonar/s2119-securerandom-reuse
Open

CAMEL-23879: Add SecureRandomHelper to camel-util, consolidate all SecureRandom usage#24374
gnodet wants to merge 4 commits into
apache:mainfrom
gnodet:sonar/s2119-securerandom-reuse

Conversation

@gnodet

@gnodet gnodet commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Claude Code on behalf of Guillaume Nodet

Fixes https://issues.apache.org/jira/browse/CAMEL-23879

SecureRandom is thread-safe but heavyweight to instantiate — each new SecureRandom() call gathers OS entropy. Multiple Camel modules were creating ad-hoc instances per call, paying that cost repeatedly.

This PR introduces a framework-level SecureRandomHelper in camel-util with a single shared instance exposed via getSecureRandom(), then wires all existing call sites to use it.

New: SecureRandomHelper (camel-util)

import org.apache.camel.util.SecureRandomHelper;

keygen.init(SecureRandomHelper.getSecureRandom());

Consumers updated

Module Files What changed
camel-pqc 25 40 new SecureRandom()SecureRandomHelper.getSecureRandom() across producers, data formats, lifecycle managers, KEM/signature material classes
camel-support 1 CipherPair — keygen initialization
camel-main 1 SelfSignedCertificateGenerator — key generation + cert signing

Design documentation

Added "Shared SecureRandom" section to design/security.adoc covering:

  • Rationale (OS entropy cost, thread safety, DRBG since Java 9)
  • Usage pattern
  • When to use vs. when NOT to use (user-configurable SecureRandomParameters, getInstanceStrong(), test code)

Why not RandomGenerator.of()?

JCA APIs (KeyPairGenerator.initialize(), KEMGenerateSpec()) require SecureRandom specifically — RandomGenerator is not a valid substitute.

SonarCloud

Resolves S2119 ("SecureRandom should not be created per-call") across all affected files as a side benefit.

Test plan

  • mvn clean install -Dquickly — camel-util, camel-support, camel-pqc all compile
  • Full CI — all existing tests exercise the shared instance
  • No new new SecureRandom() remains outside SecureRandomHelper itself

🤖 Generated with Claude Code

@gnodet gnodet requested review from davsclaus and oscerd July 2, 2026 07:51
@github-actions

github-actions Bot commented Jul 2, 2026

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 gnodet changed the title Reuse SecureRandom instances instead of creating per call (S2119) Consolidate SecureRandom usage: shared instance in camel-pqc + field promotion in camel-main Jul 2, 2026
@gnodet gnodet marked this pull request as ready for review July 2, 2026 08:17
@gnodet gnodet changed the title Consolidate SecureRandom usage: shared instance in camel-pqc + field promotion in camel-main Add SecureRandomHelper to camel-util, consolidate all SecureRandom usage Jul 2, 2026
@github-actions github-actions Bot added the docs label Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

🧪 CI tested the following changed modules:

  • components/camel-pqc
  • core/camel-main
  • core/camel-support
  • core/camel-util

ℹ️ Dependent modules were not tested because the total number of affected modules exceeded the threshold (50). Use the test-dependents label to force testing all dependents.


🔬 Scalpel shadow comparison — Scalpel: 644 tested, 29 compile-only — current: 558 all tested

Maveniverse Scalpel detected 673 affected modules (current approach: 558).

⚠️ Modules only in Scalpel (115)
  • apache-camel
  • bom-generator
  • bom-generator-maven-plugin
  • bundles-pom
  • camel
  • camel-allcomponents
  • camel-bom
  • camel-buildtools
  • camel-catalog
  • camel-catalog-console
  • camel-catalog-lucene
  • camel-catalog-maven
  • camel-catalog-suggest
  • camel-component-maven-plugin
  • camel-componentdsl
  • camel-csimple-maven-plugin
  • camel-endpointdsl
  • camel-endpointdsl-support
  • camel-enforcer-rules
  • camel-etc
  • camel-itest
  • camel-jbang-core
  • camel-jbang-it
  • camel-jbang-main
  • camel-jbang-parent
  • camel-jbang-plugin-edit
  • camel-jbang-plugin-generate
  • camel-jbang-plugin-kubernetes
  • camel-jbang-plugin-test
  • camel-kamelet-main
  • camel-launcher
  • camel-package-maven-plugin
  • camel-parent
  • camel-repackager-maven-plugin
  • camel-report-maven-plugin
  • camel-route-parser
  • camel-test-infra-arangodb
  • camel-test-infra-aws-common
  • camel-test-infra-aws-v2
  • camel-test-infra-azure-common
  • camel-test-infra-azure-storage-blob
  • camel-test-infra-azure-storage-datalake
  • camel-test-infra-azure-storage-queue
  • camel-test-infra-cassandra
  • camel-test-infra-chatscript
  • camel-test-infra-common
  • camel-test-infra-consul
  • camel-test-infra-couchbase
  • camel-test-infra-couchdb
  • camel-test-infra-dispatch-router
  • camel-test-infra-docling
  • camel-test-infra-elasticsearch
  • camel-test-infra-fhir
  • camel-test-infra-ftp
  • camel-test-infra-google-pubsub
  • camel-test-infra-hashicorp-vault
  • camel-test-infra-hazelcast
  • camel-test-infra-hivemq
  • camel-test-infra-ibmmq
  • camel-test-infra-iggy
  • camel-test-infra-ignite
  • camel-test-infra-infinispan
  • camel-test-infra-jaeger
  • camel-test-infra-jdbc
  • camel-test-infra-kafka
  • camel-test-infra-keycloak
  • camel-test-infra-mcp-everything
  • camel-test-infra-messaging-common
  • camel-test-infra-microprofile-lra
  • camel-test-infra-milvus
  • camel-test-infra-minio
  • camel-test-infra-mongodb
  • camel-test-infra-mosquitto
  • camel-test-infra-nats
  • camel-test-infra-neo4j
  • camel-test-infra-ollama
  • camel-test-infra-openai-mock
  • camel-test-infra-openldap
  • camel-test-infra-opensearch
  • camel-test-infra-parent
  • camel-test-infra-pinecone
  • camel-test-infra-postgres
  • camel-test-infra-pulsar
  • camel-test-infra-rabbitmq
  • camel-test-infra-redis
  • camel-test-infra-rocketmq
  • camel-test-infra-solr
  • camel-test-infra-tensorflow-serving
  • camel-test-infra-triton
  • camel-test-infra-weaviate
  • camel-test-infra-xmpp
  • camel-test-infra-zookeeper
  • camel-tooling-model
  • camel-tooling-util
  • camel-util-json
  • camel-validator-test-resources
  • camel-xml-io-util
  • camel-xml-jaxb-dsl-test
  • camel-xml-jaxp-util
  • camel-yaml-dsl
  • camel-yaml-dsl-deserializers
  • camel-yaml-dsl-maven-plugin
  • camel-yaml-dsl-parent
  • catalog
  • core
  • coverage
  • docs
  • dsl
  • dummy-component
  • maven-plugins
  • spi-annotations
  • test-infra
  • tests
  • tooling
  • tooling-parent

Skip-tests mode would test 644 modules (5 direct + 639 downstream), skip tests for 29 (generated code, meta-modules)

Modules Scalpel would test (644)
  • archetypes
  • bom-generator
  • bom-generator-maven-plugin
  • bundles-pom
  • camel
  • camel-a2a
  • camel-activemq
  • camel-activemq6
  • camel-ai-parent
  • camel-amqp
  • camel-api
  • camel-api-component-maven-plugin
  • camel-arangodb
  • camel-archetype-api-component
  • camel-archetype-component
  • camel-archetype-dataformat
  • camel-archetype-java
  • camel-archetype-main
  • camel-archetype-spring
  • camel-as2
  • camel-as2-api
  • camel-as2-parent
  • camel-asn1
  • camel-asterisk
  • camel-atmosphere-websocket
  • camel-atom
  • camel-attachments
  • camel-avro
  • camel-avro-rpc
  • camel-avro-rpc-jetty
  • camel-avro-rpc-parent
  • camel-avro-rpc-spi
  • camel-aws-bedrock
  • camel-aws-cloudtrail
  • camel-aws-common
  • camel-aws-config
  • camel-aws-parameter-store
  • camel-aws-parent
  • camel-aws-secrets-manager
  • camel-aws-security-hub
  • camel-aws2-athena
  • camel-aws2-comprehend
  • camel-aws2-cw
  • camel-aws2-ddb
  • camel-aws2-ec2
  • camel-aws2-ecs
  • camel-aws2-eks
  • camel-aws2-eventbridge
  • camel-aws2-iam
  • camel-aws2-kinesis
  • camel-aws2-kms
  • camel-aws2-lambda
  • camel-aws2-mq
  • camel-aws2-msk
  • camel-aws2-polly
  • camel-aws2-redshift
  • camel-aws2-rekognition
  • camel-aws2-s3
  • camel-aws2-s3-vectors
  • camel-aws2-ses
  • camel-aws2-sns
  • camel-aws2-sqs
  • camel-aws2-step-functions
  • camel-aws2-sts
  • camel-aws2-textract
  • camel-aws2-timestream
  • camel-aws2-transcribe
  • camel-aws2-translate
  • camel-azure-common
  • camel-azure-cosmosdb
  • camel-azure-eventgrid
  • camel-azure-eventhubs
  • camel-azure-files
  • camel-azure-functions
  • camel-azure-key-vault
  • camel-azure-parent
  • camel-azure-schema-registry
  • camel-azure-servicebus
  • camel-azure-storage-blob
  • camel-azure-storage-datalake
  • camel-azure-storage-queue
  • camel-barcode
  • camel-base
  • camel-base-engine
  • camel-base64
  • camel-bean
  • camel-bean-validator
  • camel-beanio
  • camel-bindy
  • camel-bom
  • camel-bonita
  • camel-box
  • camel-box-api
  • camel-box-parent
  • camel-braintree
  • camel-browse
  • camel-buildtools
  • camel-caffeine
  • camel-camunda
  • camel-cassandraql
  • camel-catalog-common
  • camel-cbor
  • camel-chatscript
  • camel-chunk
  • camel-cli-connector
  • camel-cli-debug
  • camel-clickup
  • camel-cloudevents
  • camel-cluster
  • camel-cm-sms
  • camel-coap
  • camel-cometd
  • camel-component-maven-plugin
  • camel-console
  • camel-consul
  • camel-controlbus
  • camel-core
  • camel-core-all
  • camel-core-catalog
  • camel-core-engine
  • camel-core-languages
  • camel-core-model
  • camel-core-processor
  • camel-core-reifier
  • camel-core-xml
  • camel-couchbase
  • camel-couchdb
  • camel-cron
  • camel-crypto
  • camel-crypto-pgp
  • camel-csimple-joor
  • camel-csv
  • camel-cxf-common
  • camel-cxf-parent
  • camel-cxf-rest
  • camel-cxf-soap
  • camel-cxf-spring-common
  • camel-cxf-spring-rest
  • camel-cxf-spring-soap
  • camel-cxf-spring-transport
  • camel-cxf-transport
  • camel-cyberark-vault
  • camel-dapr
  • camel-dataformat
  • camel-dataset
  • camel-datasonnet
  • camel-debezium-common
  • camel-debezium-common-parent
  • camel-debezium-db2
  • camel-debezium-maven-plugin
  • camel-debezium-mongodb
  • camel-debezium-mysql
  • camel-debezium-oracle
  • camel-debezium-parent
  • camel-debezium-postgres
  • camel-debezium-sqlserver
  • camel-debug
  • camel-dependencies
  • camel-dfdl
  • camel-dhis2
  • camel-dhis2-api
  • camel-dhis2-parent
  • camel-diagram
  • camel-digitalocean
  • camel-direct
  • camel-disruptor
  • camel-djl
  • camel-dns
  • camel-docker
  • camel-docling
  • camel-drill
  • camel-dropbox
  • camel-dsl-modeline
  • camel-dsl-support
  • camel-dynamic-router
  • camel-ehcache
  • camel-eip-documentation-enricher-maven-plugin
  • camel-elasticsearch
  • camel-elasticsearch-rest-client
  • camel-enforcer-rules
  • camel-etc
  • camel-event
  • camel-exec
  • camel-fastjson
  • camel-fhir
  • camel-fhir-api
  • camel-fhir-parent
  • camel-file
  • camel-file-watch
  • camel-flatpack
  • camel-flink
  • camel-flowable
  • camel-fop
  • camel-fory
  • camel-freemarker
  • camel-ftp
  • camel-ftp-common
  • camel-geocoder
  • camel-git
  • camel-github2
  • camel-google-bigquery
  • camel-google-calendar
  • camel-google-common
  • camel-google-drive
  • camel-google-firestore
  • camel-google-functions
  • camel-google-mail
  • camel-google-parent
  • camel-google-pubsub
  • camel-google-secret-manager
  • camel-google-sheets
  • camel-google-speech-to-text
  • camel-google-storage
  • camel-google-text-to-speech
  • camel-google-vertexai
  • camel-google-vision
  • camel-graphql
  • camel-grok
  • camel-groovy
  • camel-grpc
  • camel-gson
  • camel-hashicorp-vault
  • camel-hazelcast
  • camel-headersmap
  • camel-health
  • camel-hl7
  • camel-http
  • camel-http-base
  • camel-http-common
  • camel-huawei-parent
  • camel-huaweicloud-common
  • camel-huaweicloud-dms
  • camel-huaweicloud-frs
  • camel-huaweicloud-functiongraph
  • camel-huaweicloud-iam
  • camel-huaweicloud-imagerecognition
  • camel-huaweicloud-obs
  • camel-huaweicloud-smn
  • camel-huggingface
  • camel-ibm-cos
  • camel-ibm-parent
  • camel-ibm-secrets-manager
  • camel-ibm-watson-discovery
  • camel-ibm-watson-language
  • camel-ibm-watson-speech-to-text
  • camel-ibm-watson-text-to-speech
  • camel-ibm-watsonx-ai
  • camel-ibm-watsonx-data
  • camel-ical
  • camel-iec60870
  • camel-iggy
  • camel-ignite
  • camel-infinispan
  • camel-infinispan-common
  • camel-infinispan-embedded
  • camel-infinispan-parent
  • camel-influxdb
  • camel-influxdb2
  • camel-irc
  • camel-ironmq
  • camel-iso8583
  • camel-jackson
  • camel-jackson-avro
  • camel-jackson-protobuf
  • camel-jackson3
  • camel-jackson3-avro
  • camel-jackson3-protobuf
  • camel-jackson3xml
  • camel-jacksonxml
  • camel-jandex
  • camel-jasypt
  • camel-java-io
  • camel-java-joor-dsl
  • camel-javascript
  • camel-jaxb
  • camel-jbang-console
  • camel-jbang-mcp
  • camel-jbang-parent
  • camel-jbang-plugin-mcp
  • camel-jbang-plugin-route-parser
  • camel-jbang-plugin-tui
  • camel-jbang-plugin-validate
  • camel-jcache
  • camel-jcr
  • camel-jdbc
  • camel-jetty
  • camel-jetty-common
  • camel-jfr
  • camel-jgroups
  • camel-jgroups-raft
  • camel-jira
  • camel-jms
  • camel-jmx
  • camel-jolt
  • camel-jooq
  • camel-joor
  • camel-jpa
  • camel-jq
  • camel-jsch
  • camel-jslt
  • camel-json-patch
  • camel-json-validator
  • camel-jsonapi
  • camel-jsonata
  • camel-jsonb
  • camel-jsonpath
  • camel-jsoup
  • camel-jt400
  • camel-jta
  • camel-jte
  • camel-kafka
  • camel-kamelet
  • camel-kamelet-main-support
  • camel-keycloak
  • camel-knative
  • camel-knative-api
  • camel-knative-http
  • camel-knative-parent
  • camel-kserve
  • camel-kubernetes
  • camel-kudu
  • camel-langchain4j-agent
  • camel-langchain4j-agent-api
  • camel-langchain4j-chat
  • camel-langchain4j-core
  • camel-langchain4j-embeddings
  • camel-langchain4j-embeddingstore
  • camel-langchain4j-embeddingstore-api
  • camel-langchain4j-tokenizer
  • camel-langchain4j-tools
  • camel-langchain4j-web-search
  • camel-language
  • camel-launcher-container
  • camel-ldap
  • camel-ldif
  • camel-leveldb
  • camel-log
  • camel-lra
  • camel-lucene
  • camel-lumberjack
  • camel-lzf
  • camel-mail
  • camel-mail-microsoft-oauth
  • camel-main
  • camel-management
  • camel-management-api
  • camel-mapstruct
  • camel-master
  • camel-maven-plugin
  • camel-mdc
  • camel-metrics
  • camel-micrometer
  • camel-micrometer-observability
  • camel-micrometer-prometheus
  • camel-microprofile-config
  • camel-microprofile-fault-tolerance
  • camel-microprofile-health
  • camel-microprofile-parent
  • camel-milo
  • camel-milvus
  • camel-mina
  • camel-mina-sftp
  • camel-minio
  • camel-mllp
  • camel-mock
  • camel-mongodb
  • camel-mongodb-gridfs
  • camel-mustache
  • camel-mvel
  • camel-mybatis
  • camel-nats
  • camel-neo4j
  • camel-netty
  • camel-netty-http
  • camel-oaipmh
  • camel-oauth
  • camel-observability-services
  • camel-observation
  • camel-ocsf
  • camel-ognl
  • camel-olingo2
  • camel-olingo2-api
  • camel-olingo2-parent
  • camel-olingo4
  • camel-olingo4-api
  • camel-olingo4-parent
  • camel-once
  • camel-openai
  • camel-openapi-java
  • camel-openapi-rest-dsl-generator
  • camel-openapi-validator
  • camel-opensearch
  • camel-openstack
  • camel-opentelemetry
  • camel-opentelemetry-metrics
  • camel-opentelemetry2
  • camel-optaplanner
  • camel-package-maven-plugin
  • camel-paho
  • camel-paho-mqtt5
  • camel-parent
  • camel-parquet-avro
  • camel-pdf
  • camel-pg-replication-slot
  • camel-pgevent
  • camel-pgvector
  • camel-pinecone
  • camel-platform-http
  • camel-platform-http-jolokia
  • camel-platform-http-main
  • camel-platform-http-vertx
  • camel-plc4x
  • camel-pqc
  • camel-printer
  • camel-protobuf
  • camel-pubnub
  • camel-pulsar
  • camel-python
  • camel-qdrant
  • camel-quartz
  • camel-quickfix
  • camel-reactive-executor-tomcat
  • camel-reactive-executor-vertx
  • camel-reactive-streams
  • camel-reactor
  • camel-redis
  • camel-ref
  • camel-repackager-maven-plugin
  • camel-resilience4j
  • camel-resilience4j-micrometer
  • camel-resourceresolver-github
  • camel-rest
  • camel-rest-openapi
  • camel-restdsl-openapi-plugin
  • camel-robotframework
  • camel-rocketmq
  • camel-rss
  • camel-rxjava
  • camel-saga
  • camel-salesforce
  • camel-salesforce-codegen
  • camel-salesforce-maven-plugin
  • camel-salesforce-parent
  • camel-sap-netweaver
  • camel-saxon
  • camel-scheduler
  • camel-schematron
  • camel-seda
  • camel-servicenow
  • camel-servicenow-maven-plugin
  • camel-servicenow-parent
  • camel-servlet
  • camel-shell
  • camel-shiro
  • camel-sjms
  • camel-sjms2
  • camel-slack
  • camel-smb
  • camel-smooks
  • camel-smpp
  • camel-snakeyaml
  • camel-snmp
  • camel-soap
  • camel-solr
  • camel-splunk
  • camel-splunk-hec
  • camel-spring
  • camel-spring-ai-chat
  • camel-spring-ai-embeddings
  • camel-spring-ai-image
  • camel-spring-ai-parent
  • camel-spring-ai-tools
  • camel-spring-ai-vector-store
  • camel-spring-batch
  • camel-spring-cloud-config
  • camel-spring-jdbc
  • camel-spring-ldap
  • camel-spring-main
  • camel-spring-parent
  • camel-spring-rabbitmq
  • camel-spring-redis
  • camel-spring-security
  • camel-spring-ws
  • camel-spring-xml
  • camel-sql
  • camel-ssh
  • camel-stax
  • camel-stitch
  • camel-stream
  • camel-streamcaching-test
  • camel-stringtemplate
  • camel-stripe
  • camel-stub
  • camel-support
  • camel-swift
  • camel-syslog
  • camel-tahu
  • camel-tarfile
  • camel-telegram
  • camel-telemetry
  • camel-telemetry-dev
  • camel-tensorflow-serving
  • camel-test-infra-all
  • camel-test-infra-arangodb
  • camel-test-infra-artemis
  • camel-test-infra-aws-common
  • camel-test-infra-aws-v2
  • camel-test-infra-azure-common
  • camel-test-infra-azure-storage-blob
  • camel-test-infra-azure-storage-datalake
  • camel-test-infra-azure-storage-queue
  • camel-test-infra-cassandra
  • camel-test-infra-chatscript
  • camel-test-infra-cli
  • camel-test-infra-common
  • camel-test-infra-consul
  • camel-test-infra-core
  • camel-test-infra-couchbase
  • camel-test-infra-couchdb
  • camel-test-infra-dispatch-router
  • camel-test-infra-docling
  • camel-test-infra-elasticsearch
  • camel-test-infra-fhir
  • camel-test-infra-ftp
  • camel-test-infra-google-pubsub
  • camel-test-infra-hashicorp-vault
  • camel-test-infra-hazelcast
  • camel-test-infra-hivemq
  • camel-test-infra-ibmmq
  • camel-test-infra-iggy
  • camel-test-infra-ignite
  • camel-test-infra-infinispan
  • camel-test-infra-jaeger
  • camel-test-infra-jdbc
  • camel-test-infra-jetty
  • camel-test-infra-kafka
  • camel-test-infra-keycloak
  • camel-test-infra-mcp-everything
  • camel-test-infra-messaging-common
  • camel-test-infra-microprofile-lra
  • camel-test-infra-milvus
  • camel-test-infra-minio
  • camel-test-infra-mongodb
  • camel-test-infra-mosquitto
  • camel-test-infra-nats
  • camel-test-infra-neo4j
  • camel-test-infra-ollama
  • camel-test-infra-openai-mock
  • camel-test-infra-openldap
  • camel-test-infra-opensearch
  • camel-test-infra-parent
  • camel-test-infra-pinecone
  • camel-test-infra-postgres
  • camel-test-infra-pulsar
  • camel-test-infra-qdrant
  • camel-test-infra-rabbitmq
  • camel-test-infra-redis
  • camel-test-infra-rocketmq
  • camel-test-infra-smb
  • camel-test-infra-solr
  • camel-test-infra-tensorflow-serving
  • camel-test-infra-triton
  • camel-test-infra-weaviate
  • camel-test-infra-xmpp
  • camel-test-infra-zookeeper
  • camel-test-junit5
  • camel-test-junit6
  • camel-test-main-junit5
  • camel-test-main-junit6
  • camel-test-parent
  • camel-test-spring-junit5
  • camel-test-spring-junit6
  • camel-threadpoolfactory-vertx
  • camel-thrift
  • camel-thymeleaf
  • camel-tika
  • camel-timer
  • camel-tooling-maven
  • camel-tooling-model
  • camel-tooling-util
  • camel-tracing
  • camel-twilio
  • camel-twitter
  • camel-undertow
  • camel-undertow-spring-security
  • camel-univocity-parsers
  • camel-util
  • camel-util-json
  • camel-validator
  • camel-validator-test-resources
  • camel-velocity
  • camel-vertx
  • camel-vertx-common
  • camel-vertx-http
  • camel-vertx-parent
  • camel-vertx-websocket
  • camel-wal
  • camel-wasm
  • camel-weather
  • camel-weaviate
  • camel-web3j
  • camel-webhook
  • camel-whatsapp
  • camel-wordpress
  • camel-workday
  • camel-xchange
  • camel-xj
  • camel-xml-io
  • camel-xml-io-dsl
  • camel-xml-io-util
  • camel-xml-jaxb
  • camel-xml-jaxb-dsl
  • camel-xml-jaxb-dsl-test
  • camel-xml-jaxb-dsl-test-definition
  • camel-xml-jaxb-dsl-test-spring
  • camel-xml-jaxp
  • camel-xml-jaxp-util
  • camel-xmlsecurity
  • camel-xmpp
  • camel-xpath
  • camel-xslt
  • camel-xslt-saxon
  • camel-yaml-dsl-common
  • camel-yaml-dsl-parent
  • camel-yaml-dsl-validator
  • camel-yaml-dsl-validator-maven-plugin
  • camel-yaml-io
  • camel-zeebe
  • camel-zendesk
  • camel-zip-deflater
  • camel-zipfile
  • camel-zookeeper
  • camel-zookeeper-master
  • catalog
  • components
  • core
  • dsl
  • maven-plugins
  • spi-annotations
  • sync-properties-maven-plugin
  • test-infra
  • tests
  • tooling
  • tooling-parent
Modules with tests skipped (29)
  • apache-camel
  • camel-allcomponents
  • camel-catalog
  • camel-catalog-console
  • camel-catalog-lucene
  • camel-catalog-maven
  • camel-catalog-suggest
  • camel-componentdsl
  • camel-csimple-maven-plugin
  • camel-endpointdsl
  • camel-endpointdsl-support
  • camel-itest
  • camel-jbang-core
  • camel-jbang-it
  • camel-jbang-main
  • camel-jbang-plugin-edit
  • camel-jbang-plugin-generate
  • camel-jbang-plugin-kubernetes
  • camel-jbang-plugin-test
  • camel-kamelet-main
  • camel-launcher
  • camel-report-maven-plugin
  • camel-route-parser
  • camel-yaml-dsl
  • camel-yaml-dsl-deserializers
  • camel-yaml-dsl-maven-plugin
  • coverage
  • docs
  • dummy-component

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

Build reactor — dependencies compiled but only changed modules were tested (670 modules)
  • Camel :: AI :: A2A
  • Camel :: AI :: ChatScript
  • Camel :: AI :: Deep Java Library
  • Camel :: AI :: Docling
  • Camel :: AI :: Hugging Face
  • Camel :: AI :: KServe
  • Camel :: AI :: LangChain4j :: Agent
  • Camel :: AI :: LangChain4j :: Agent :: API
  • Camel :: AI :: LangChain4j :: Chat
  • Camel :: AI :: LangChain4j :: Core
  • Camel :: AI :: LangChain4j :: Embedding
  • Camel :: AI :: LangChain4j :: Embedding Store :: API
  • Camel :: AI :: LangChain4j :: EmbeddingStore
  • Camel :: AI :: LangChain4j :: Tokenizer
  • Camel :: AI :: LangChain4j :: Tools
  • Camel :: AI :: LangChain4j :: Web Search
  • Camel :: AI :: Milvus
  • Camel :: AI :: Neo4j
  • Camel :: AI :: OpenAI
  • Camel :: AI :: PGVector
  • Camel :: AI :: Parent
  • Camel :: AI :: Pinecone
  • Camel :: AI :: Qdrant
  • Camel :: AI :: TensorFlow Serving
  • Camel :: AI :: Weaviate
  • Camel :: AMQP
  • Camel :: API
  • Camel :: AS2 :: API
  • Camel :: AS2 :: Component
  • Camel :: AS2 :: Parent
  • Camel :: ASN.1
  • Camel :: AWS :: Common
  • Camel :: AWS :: Parent
  • Camel :: AWS CloudTrail
  • Camel :: AWS Config
  • Camel :: AWS Redshift Data
  • Camel :: AWS Rekognition
  • Camel :: AWS Security Hub
  • Camel :: AWS Step Functions
  • Camel :: AWS Timestream
  • Camel :: AWS2 :: Transcribe
  • Camel :: AWS2 Athena
  • Camel :: AWS2 Bedrock
  • Camel :: AWS2 CW
  • Camel :: AWS2 Comprehend
  • Camel :: AWS2 DDB
  • Camel :: AWS2 EC2
  • Camel :: AWS2 ECS
  • Camel :: AWS2 EKS
  • Camel :: AWS2 Eventbridge
  • Camel :: AWS2 IAM
  • Camel :: AWS2 KMS
  • Camel :: AWS2 Kinesis
  • Camel :: AWS2 Lambda
  • Camel :: AWS2 MQ
  • Camel :: AWS2 MSK
  • Camel :: AWS2 Parameter Store
  • Camel :: AWS2 Polly
  • Camel :: AWS2 S3
  • Camel :: AWS2 S3 Vectors
  • Camel :: AWS2 SES
  • Camel :: AWS2 SNS
  • Camel :: AWS2 SQS
  • Camel :: AWS2 STS
  • Camel :: AWS2 Secrets Manager
  • Camel :: AWS2 Textract
  • Camel :: AWS2 Translate
  • Camel :: ActiveMQ 5.x
  • Camel :: ActiveMQ 6.x
  • Camel :: All Components Sync point
  • Camel :: All Core Sync point
  • Camel :: ArangoDB
  • Camel :: Archetypes
  • Camel :: Archetypes :: API Component
  • Camel :: Archetypes :: Component
  • Camel :: Archetypes :: Data Format
  • Camel :: Archetypes :: Java Router
  • Camel :: Archetypes :: Main
  • Camel :: Archetypes :: Spring XML Based Router (deprecated)
  • Camel :: Assembly
  • Camel :: Asterisk
  • Camel :: Atmosphere WebSocket Servlet
  • Camel :: Atom
  • Camel :: Attachments
  • Camel :: Avro
  • Camel :: Avro RPC
  • Camel :: Avro RPC :: Jetty
  • Camel :: Avro RPC :: Parent
  • Camel :: Avro RPC :: Spi
  • Camel :: Azure :: Common
  • Camel :: Azure :: CosmosDB
  • Camel :: Azure :: Event Grid
  • Camel :: Azure :: Event Hubs
  • Camel :: Azure :: Files
  • Camel :: Azure :: Functions
  • Camel :: Azure :: Key Vault
  • Camel :: Azure :: Parent
  • Camel :: Azure :: Schema Registry
  • Camel :: Azure :: ServiceBus
  • Camel :: Azure :: Storage Blob
  • Camel :: Azure :: Storage Datalake
  • Camel :: Azure :: Storage Queue
  • Camel :: BOM
  • Camel :: BOM :: Generator
  • Camel :: Barcode
  • Camel :: Base
  • Camel :: Base Engine
  • Camel :: Base64
  • Camel :: Bean
  • Camel :: Bean validator
  • Camel :: BeanIO
  • Camel :: Bindy
  • Camel :: Bonita
  • Camel :: Box :: API
  • Camel :: Box :: Component
  • Camel :: Box :: Parent
  • Camel :: Braintree
  • Camel :: Browse
  • Camel :: Buildtools
  • Camel :: CBOR
  • Camel :: CM SMS
  • Camel :: CSV
  • Camel :: CXF :: Common
  • Camel :: CXF :: Common :: Spring
  • Camel :: CXF :: Parent
  • Camel :: CXF :: REST
  • Camel :: CXF :: REST :: Spring
  • Camel :: CXF :: SOAP
  • Camel :: CXF :: SOAP :: Spring
  • Camel :: CXF :: Transport
  • Camel :: CXF :: Transport :: Spring
  • Camel :: Caffeine
  • Camel :: Camunda
  • Camel :: Cassandra CQL
  • Camel :: Catalog
  • Camel :: Catalog :: CSimple Maven Plugin (deprecated)
  • Camel :: Catalog :: Camel Catalog
  • Camel :: Catalog :: Camel Report Maven Plugin
  • Camel :: Catalog :: Camel Route Parser
  • Camel :: Catalog :: Common
  • Camel :: Catalog :: Console
  • Camel :: Catalog :: Dummy Component
  • Camel :: Catalog :: Lucene (deprecated)
  • Camel :: Catalog :: Maven
  • Camel :: Catalog :: Suggest
  • Camel :: Chunk
  • Camel :: ClickUp
  • Camel :: CloudEvents
  • Camel :: Cluster
  • Camel :: CoAP
  • Camel :: Cometd
  • Camel :: Common Telemetry
  • Camel :: Common Tracing (deprecated)
  • Camel :: Component DSL
  • Camel :: Components
  • Camel :: Console
  • Camel :: Consul
  • Camel :: Controlbus
  • Camel :: Core
  • Camel :: Core Catalog
  • Camel :: Core Engine
  • Camel :: Core Languages
  • Camel :: Core Model
  • Camel :: Core Modules
  • Camel :: Core Processor
  • Camel :: Core Reifier
  • Camel :: Core XML
  • Camel :: CouchDB
  • Camel :: Couchbase
  • Camel :: Coverage
  • Camel :: Cron
  • Camel :: Crypto
  • Camel :: Crypto PGP
  • Camel :: CyberArk Vault
  • Camel :: DFDL
  • Camel :: DHIS2
  • Camel :: DHIS2 :: Parent
  • Camel :: DHIS2 API
  • Camel :: DNS
  • Camel :: DSL :: CLI Connector
  • Camel :: DSL :: CLI Debug
  • Camel :: DSL :: Modeline
  • Camel :: DSL :: Parent
  • Camel :: DSL :: Support
  • Camel :: Dapr
  • Camel :: DataSet
  • Camel :: DataSonnet
  • Camel :: Dataformat
  • Camel :: Debezium :: Common
  • Camel :: Debezium :: Common :: Parent
  • Camel :: Debezium :: DB2
  • Camel :: Debezium :: Maven Plugin
  • Camel :: Debezium :: MongoDB
  • Camel :: Debezium :: MySQL
  • Camel :: Debezium :: Oracle
  • Camel :: Debezium :: Parent
  • Camel :: Debezium :: PostgreSQL
  • Camel :: Debezium :: SQL Server
  • Camel :: Debugging
  • Camel :: Dependencies
  • Camel :: Diagram
  • Camel :: DigitalOcean (deprecated)
  • Camel :: Direct
  • Camel :: Disruptor
  • Camel :: Docker
  • Camel :: Docs
  • Camel :: Drill
  • Camel :: Dropbox
  • Camel :: Dynamic Router
  • Camel :: Ehcache
  • Camel :: ElasticSearch Rest Client
  • Camel :: Elasticsearch Java API Client
  • Camel :: Endpoint DSL
  • Camel :: Endpoint DSL :: Support
  • Camel :: Enforcer rules
  • Camel :: Etc
  • Camel :: Event
  • Camel :: Exec
  • Camel :: FHIR
  • Camel :: FHIR :: API
  • Camel :: FHIR :: Parent
  • Camel :: FOP
  • Camel :: FTP
  • Camel :: FTP Common
  • Camel :: Fastjson
  • Camel :: File
  • Camel :: File Watch
  • Camel :: FlatPack
  • Camel :: Flink
  • Camel :: Flowable
  • Camel :: Fory
  • Camel :: Freemarker
  • Camel :: Geocoder
  • Camel :: Git
  • Camel :: GitHub2
  • Camel :: Google :: BigQuery
  • Camel :: Google :: Calendar
  • Camel :: Google :: Common
  • Camel :: Google :: Drive
  • Camel :: Google :: Firestore
  • Camel :: Google :: Functions
  • Camel :: Google :: Mail
  • Camel :: Google :: Parent
  • Camel :: Google :: PubSub
  • Camel :: Google :: Secret Manager
  • Camel :: Google :: Sheets
  • Camel :: Google :: Speech To Text
  • Camel :: Google :: Storage
  • Camel :: Google :: Text To Speech
  • Camel :: Google :: Vertex AI
  • Camel :: Google :: Vision
  • Camel :: GraphQL
  • Camel :: Grok
  • Camel :: Groovy
  • Camel :: Gson
  • Camel :: HL7
  • Camel :: HTTP
  • Camel :: HTTP :: Base
  • Camel :: HTTP :: Common
  • Camel :: HashiCorp :: Key Vault
  • Camel :: HazelCast
  • Camel :: Headers Map (deprecated)
  • Camel :: Health
  • Camel :: Huawei Cloud :: Common
  • Camel :: Huawei Cloud :: DMS
  • Camel :: Huawei Cloud :: FaceRecognition
  • Camel :: Huawei Cloud :: FunctionGraph
  • Camel :: Huawei Cloud :: IAM
  • Camel :: Huawei Cloud :: ImageRecognition
  • Camel :: Huawei Cloud :: OBS
  • Camel :: Huawei Cloud :: Parent
  • Camel :: Huawei Cloud :: SimpleNotification
  • Camel :: IBM :: Cloud Object Storage
  • Camel :: IBM :: Parent
  • Camel :: IBM :: Secrets Manager
  • Camel :: IBM :: Watson Discovery
  • Camel :: IBM :: Watson Language
  • Camel :: IBM :: Watson Speech to Text
  • Camel :: IBM :: Watson Text to Speech
  • Camel :: IBM :: watsonx.ai
  • Camel :: IBM :: watsonx.data
  • Camel :: IEC 60870 (deprecated)
  • Camel :: IRC (deprecated)
  • Camel :: ISO-8583
  • Camel :: Iggy
  • Camel :: Ignite
  • Camel :: Infinispan :: Common
  • Camel :: Infinispan :: Embedded
  • Camel :: Infinispan :: Parent
  • Camel :: Infinispan :: Remote
  • Camel :: InfluxDB
  • Camel :: InfluxDB2
  • Camel :: Integration Tests
  • Camel :: Integration Tests :: Stream Caching Tests
  • Camel :: Integration Tests :: Test Bundles
  • Camel :: Integration Tests :: Validator Resources
  • Camel :: IronMQ
  • Camel :: JAXB
  • Camel :: JBang :: Console
  • Camel :: JBang :: Core
  • Camel :: JBang :: Integration tests
  • Camel :: JBang :: MCP
  • Camel :: JBang :: Main
  • Camel :: JBang :: Parent
  • Camel :: JBang :: Plugin :: Edit
  • Camel :: JBang :: Plugin :: Generate
  • Camel :: JBang :: Plugin :: Kubernetes
  • Camel :: JBang :: Plugin :: MCP
  • Camel :: JBang :: Plugin :: Route Parser
  • Camel :: JBang :: Plugin :: TUI
  • Camel :: JBang :: Plugin :: Testing
  • Camel :: JBang :: Plugin :: Validate
  • Camel :: JCR
  • Camel :: JCache
  • Camel :: JDBC
  • Camel :: JGroups
  • Camel :: JGroups Raft
  • Camel :: JIRA
  • Camel :: JMS
  • Camel :: JMX
  • Camel :: JOOQ
  • Camel :: JPA
  • Camel :: JQ
  • Camel :: JSON validator
  • Camel :: JSON-B
  • Camel :: JSONATA
  • Camel :: JSon Path
  • Camel :: JSonApi
  • Camel :: JSoup
  • Camel :: JTA
  • Camel :: Jackson
  • Camel :: Jackson 3
  • Camel :: Jackson 3 Avro
  • Camel :: Jackson 3 Protobuf
  • Camel :: Jackson 3 XML
  • Camel :: Jackson Avro
  • Camel :: Jackson Protobuf
  • Camel :: Jackson XML
  • Camel :: Jandex
  • Camel :: Jasypt
  • Camel :: Java DSL IO
  • Camel :: Java DSL with jOOR
  • Camel :: Java Flight Recorder
  • Camel :: Java Template Engine
  • Camel :: Java Toolbox for IBM i
  • Camel :: JavaScript
  • Camel :: Jetty
  • Camel :: Jetty :: Common
  • Camel :: Jolt
  • Camel :: Jsch
  • Camel :: Jslt
  • Camel :: JsonPatch (deprecated)
  • Camel :: Kafka
  • Camel :: Kamelet
  • Camel :: Kamelet Main
  • Camel :: Kamelet Main :: Support
  • Camel :: Keycloak
  • Camel :: Knative :: Parent
  • Camel :: Knative API
  • Camel :: Knative Component
  • Camel :: Knative HTTP
  • Camel :: Kubernetes
  • Camel :: Kudu
  • Camel :: LDAP
  • Camel :: LDIF
  • Camel :: LZF
  • Camel :: Language
  • Camel :: Launcher
  • Camel :: Launcher :: Container
  • Camel :: LevelDB (deprecated)
  • Camel :: Log
  • Camel :: Long-Running-Action
  • Camel :: Lucene
  • Camel :: Lumberjack
  • Camel :: MDC
  • Camel :: MINA
  • Camel :: MINA SFTP
  • Camel :: MLLP
  • Camel :: MVEL
  • Camel :: Mail
  • Camel :: Mail :: Microsoft OAuth
  • Camel :: Main
  • Camel :: Management
  • Camel :: Management API
  • Camel :: MapStruct
  • Camel :: Master
  • Camel :: Maven Plugins
  • Camel :: Maven Plugins :: BOM Generator
  • Camel :: Maven Plugins :: Camel API Component Plugin
  • Camel :: Maven Plugins :: Camel Maven Component
  • Camel :: Maven Plugins :: Camel Maven Package
  • Camel :: Maven Plugins :: Camel Maven Plugin
  • Camel :: Maven Plugins :: OpenApi REST DSL Generator
  • Camel :: Maven Plugins :: Repackager
  • Camel :: Maven Plugins :: Sync Properties
  • Camel :: Maven Plugins :: XML DSL Doc Enricher
  • Camel :: Metrics
  • Camel :: MicroProfile :: Config
  • Camel :: MicroProfile :: Fault Tolerance
  • Camel :: MicroProfile :: Health
  • Camel :: MicroProfile :: Parent
  • Camel :: Micrometer
  • Camel :: Micrometer :: Observability 2
  • Camel :: Micrometer :: Observation (deprecated)
  • Camel :: Micrometer :: Prometheus
  • Camel :: Milo
  • Camel :: MinIO
  • Camel :: Mock
  • Camel :: MongoDB
  • Camel :: MongoDB GridFS
  • Camel :: Mustache
  • Camel :: MyBatis
  • Camel :: Nats
  • Camel :: Netty
  • Camel :: Netty HTTP
  • Camel :: OAIPMH
  • Camel :: OAuth
  • Camel :: OCSF
  • Camel :: OGNL (deprecated)
  • Camel :: Observability Services
  • Camel :: Olingo2 (Deprecated) :: API
  • Camel :: Olingo2 (Deprecated) :: Component
  • Camel :: Olingo2 (Deprecated) :: Parent
  • Camel :: Olingo4 (Deprecated) :: API
  • Camel :: Olingo4 (Deprecated) :: Component
  • Camel :: Olingo4 (Deprecated) :: Parent
  • Camel :: Once
  • Camel :: OpenAPI :: Validator
  • Camel :: OpenApi Java
  • Camel :: OpenSearch Java API Client
  • Camel :: OpenStack
  • Camel :: OpenTelemetry (deprecated)
  • Camel :: Opentelemetry 2
  • Camel :: Opentelemetry Metrics
  • Camel :: OptaPlanner
  • Camel :: PDF
  • Camel :: PLC4X
  • Camel :: PQC
  • Camel :: Paho (deprecated)
  • Camel :: Paho MQTT 5
  • Camel :: Parent
  • Camel :: Parquet Avro
  • Camel :: PgEvent
  • Camel :: PgReplicationSlot
  • Camel :: Platform HTTP
  • Camel :: Platform HTTP :: Jolokia
  • Camel :: Platform HTTP :: Main
  • Camel :: Platform HTTP :: Vert.x
  • Camel :: Printer
  • Camel :: Protobuf
  • Camel :: PubNub
  • Camel :: Pulsar
  • Camel :: Python
  • Camel :: Quartz
  • Camel :: QuickFIX/J
  • Camel :: REST
  • Camel :: REST OpenApi
  • Camel :: RSS
  • Camel :: Reactive Executor :: Tomcat
  • Camel :: Reactive Executor :: Vert.x (deprecated)
  • Camel :: Reactive Streams
  • Camel :: Reactor
  • Camel :: Redis
  • Camel :: Ref
  • Camel :: Resilience4j
  • Camel :: Resilience4j :: Micrometer
  • Camel :: ResourceResolver GitHub
  • Camel :: RobotFramework
  • Camel :: RocketMQ
  • Camel :: RxJava
  • Camel :: SAP NetWeaver
  • Camel :: SMB
  • Camel :: SMPP
  • Camel :: SNMP
  • Camel :: SOAP
  • Camel :: SPI Annotations
  • Camel :: SQL
  • Camel :: SSH
  • Camel :: SWIFT
  • Camel :: Saga
  • Camel :: Salesforce
  • Camel :: Salesforce :: CodeGen
  • Camel :: Salesforce :: Maven Plugin
  • Camel :: Salesforce :: Parent
  • Camel :: Saxon
  • Camel :: Scheduler
  • Camel :: Schematron
  • Camel :: Seda
  • Camel :: ServiceNow :: Component
  • Camel :: ServiceNow :: Maven Plugin
  • Camel :: ServiceNow :: Parent
  • Camel :: Servlet
  • Camel :: Shell
  • Camel :: Shiro
  • Camel :: Simple JMS
  • Camel :: Simple JMS2
  • Camel :: Slack
  • Camel :: Smooks :: Parent
  • Camel :: SnakeYAML
  • Camel :: Solr
  • Camel :: Splunk (deprecated)
  • Camel :: Splunk HEC
  • Camel :: Spring
  • Camel :: Spring :: Parent
  • Camel :: Spring AI :: Chat
  • Camel :: Spring AI :: Embeddings
  • Camel :: Spring AI :: Image
  • Camel :: Spring AI :: Parent
  • Camel :: Spring AI :: Tools
  • Camel :: Spring AI :: Vector Store
  • Camel :: Spring Batch
  • Camel :: Spring Cloud Config
  • Camel :: Spring JDBC
  • Camel :: Spring LDAP
  • Camel :: Spring Main
  • Camel :: Spring RabbitMQ
  • Camel :: Spring Redis
  • Camel :: Spring Security
  • Camel :: Spring Web Services
  • Camel :: Spring XML
  • Camel :: StAX
  • Camel :: Stitch
  • Camel :: Stream
  • Camel :: StringTemplate
  • Camel :: Stripe
  • Camel :: Stub
  • Camel :: Support
  • Camel :: Syslog
  • Camel :: Tahu
  • Camel :: Tar File
  • Camel :: Telegram
  • Camel :: Telemetry :: Dev
  • Camel :: Test :: JUnit5
  • Camel :: Test :: JUnit6
  • Camel :: Test :: Main :: JUnit5
  • Camel :: Test :: Main :: JUnit6
  • Camel :: Test :: Parent
  • Camel :: Test :: Spring :: JUnit5
  • Camel :: Test Infra
  • Camel :: Test Infra :: AWS Common
  • Camel :: Test Infra :: AWS SDK v2
  • Camel :: Test Infra :: All test services
  • Camel :: Test Infra :: ArangoDB
  • Camel :: Test Infra :: Artemis
  • Camel :: Test Infra :: Azure Common
  • Camel :: Test Infra :: Azure Storage Blob
  • Camel :: Test Infra :: Azure Storage Datalake
  • Camel :: Test Infra :: Azure Storage Queue
  • Camel :: Test Infra :: Cassandra
  • Camel :: Test Infra :: ChatScript
  • Camel :: Test Infra :: Cli (Camel CLI)
  • Camel :: Test Infra :: Common
  • Camel :: Test Infra :: Consul
  • Camel :: Test Infra :: Core
  • Camel :: Test Infra :: CouchDb
  • Camel :: Test Infra :: Couchbase
  • Camel :: Test Infra :: Dispatch Router
  • Camel :: Test Infra :: Docling
  • Camel :: Test Infra :: Elasticsearch
  • Camel :: Test Infra :: FHIR
  • Camel :: Test Infra :: Ftp
  • Camel :: Test Infra :: Google Pub/Sub
  • Camel :: Test Infra :: Hashicorp Vault
  • Camel :: Test Infra :: Hazelcast
  • Camel :: Test Infra :: HiveMQ
  • Camel :: Test Infra :: IBM MQ
  • Camel :: Test Infra :: Iggy
  • Camel :: Test Infra :: Ignite
  • Camel :: Test Infra :: Infinispan
  • Camel :: Test Infra :: JDBC
  • Camel :: Test Infra :: Jaeger
  • Camel :: Test Infra :: Jetty
  • Camel :: Test Infra :: Kafka
  • Camel :: Test Infra :: Keycloak
  • Camel :: Test Infra :: MCP Everything
  • Camel :: Test Infra :: Messaging Common
  • Camel :: Test Infra :: Microprofile LRA
  • Camel :: Test Infra :: Milvus
  • Camel :: Test Infra :: Minio
  • Camel :: Test Infra :: MongoDB
  • Camel :: Test Infra :: Mosquitto
  • Camel :: Test Infra :: Nats
  • Camel :: Test Infra :: Neo4j
  • Camel :: Test Infra :: Ollama
  • Camel :: Test Infra :: OpenAI Mock
  • Camel :: Test Infra :: Openladp
  • Camel :: Test Infra :: Parent
  • Camel :: Test Infra :: Pinecone
  • Camel :: Test Infra :: Postgres
  • Camel :: Test Infra :: Pulsar
  • Camel :: Test Infra :: RabbitMQ
  • Camel :: Test Infra :: Redis
  • Camel :: Test Infra :: RocketMQ
  • Camel :: Test Infra :: Server Message Block
  • Camel :: Test Infra :: Solr
  • Camel :: Test Infra :: TensorFlow Serving
  • Camel :: Test Infra :: Triton Inference Server
  • Camel :: Test Infra :: Weaviate
  • Camel :: Test Infra :: Xmpp
  • Camel :: Test Infra :: ZooKeeper
  • Camel :: Test Infra :: opensearch
  • Camel :: Test Infra :: qdrant
  • Camel :: Thread Pool Factory :: Vert.x (deprecated)
  • Camel :: Thrift
  • Camel :: Thymeleaf
  • Camel :: Tika
  • Camel :: Timer
  • Camel :: Tooling
  • Camel :: Tooling :: Maven
  • Camel :: Tooling :: Model
  • Camel :: Tooling :: OpenApi REST DSL Generator
  • Camel :: Tooling :: Util
  • Camel :: Tooling Parent
  • Camel :: Twilio
  • Camel :: Twitter
  • Camel :: Undertow
  • Camel :: Undertow Spring Security
  • Camel :: UniVocity Parsers
  • Camel :: Util
  • Camel :: Util :: JSon
  • Camel :: Validator
  • Camel :: Velocity
  • Camel :: Vert.x :: Common
  • Camel :: Vert.x :: HTTP
  • Camel :: Vert.x :: Parent
  • Camel :: Vert.x :: WebSocket
  • Camel :: Vertx
  • Camel :: WAL
  • Camel :: Wasm
  • Camel :: Weather
  • Camel :: Web3j
  • Camel :: Webhook
  • Camel :: Whatsapp
  • Camel :: Wordpress
  • Camel :: Workday
  • Camel :: XChange
  • Camel :: XJ
  • Camel :: XML DSL Jaxb :: Test :: Definition
  • Camel :: XML DSL Jaxb :: Test :: Spring
  • Camel :: XML DSL Jaxb :: Tests
  • Camel :: XML DSL with camel-xml-io
  • Camel :: XML DSL with camel-xml-jaxb
  • Camel :: XML IO
  • Camel :: XML IO Util
  • Camel :: XML JAXB
  • Camel :: XML JAXP
  • Camel :: XML JAXP Util
  • Camel :: XML Security
  • Camel :: XMPP
  • Camel :: XPath
  • Camel :: XSLT
  • Camel :: XSLT Saxon
  • Camel :: YAML DSL
  • Camel :: YAML DSL :: Common
  • Camel :: YAML DSL :: Deserializers
  • Camel :: YAML DSL :: Maven Plugins
  • Camel :: YAML DSL :: Parent
  • Camel :: YAML DSL :: Validator
  • Camel :: YAML DSL :: Validator Maven Plugin
  • Camel :: YAML IO
  • Camel :: Zeebe (deprecated)
  • Camel :: Zendesk
  • Camel :: Zip Deflater
  • Camel :: Zip File
  • Camel :: Zookeeper
  • Camel :: Zookeeper Master
  • Camel :: csimple jOOR (deprecated)
  • Camel :: gRPC
  • Camel :: iCal
  • Camel :: jOOR

⚙️ View full build and test results

@gnodet gnodet changed the title Add SecureRandomHelper to camel-util, consolidate all SecureRandom usage CAMEL-23879: Add SecureRandomHelper to camel-util, consolidate all SecureRandom usage Jul 2, 2026
@gnodet gnodet force-pushed the sonar/s2119-securerandom-reuse branch from 7d7e0f2 to a3f47e6 Compare July 3, 2026 05:59
@gnodet gnodet requested a review from Copilot July 3, 2026 21:03

Copilot AI 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.

Pull request overview

This PR introduces a shared SecureRandom facility in camel-util (SecureRandomHelper) and updates multiple Camel modules (notably camel-pqc, plus camel-support and camel-main) to reuse that shared instance instead of repeatedly allocating new SecureRandom(). It also documents the intended framework guidance in design/security.adoc.

Changes:

  • Added org.apache.camel.util.SecureRandomHelper exposing a shared SecureRandom instance.
  • Replaced per-call new SecureRandom() usage across camel-pqc and a few core classes with SecureRandomHelper.getSecureRandom().
  • Added a “Shared SecureRandom” section to the security design documentation describing rationale and usage guidance.

Reviewed changes

Copilot reviewed 29 out of 29 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
design/security.adoc Documents the new “Shared SecureRandom” approach and usage guidance.
core/camel-util/src/main/java/org/apache/camel/util/SecureRandomHelper.java New helper exposing a shared SecureRandom instance for internal use.
core/camel-support/src/main/java/org/apache/camel/converter/stream/CipherPair.java Uses shared SecureRandom for KeyGenerator initialization.
core/camel-main/src/main/java/org/apache/camel/main/SelfSignedCertificateGenerator.java Uses shared SecureRandom for key generation and certificate serial number generation.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/PQCProducer.java Uses shared SecureRandom for KEM encapsulation/extraction initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/HashicorpVaultKeyLifecycleManager.java Uses shared SecureRandom for key pair generation initialization paths.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/FileBasedKeyLifecycleManager.java Uses shared SecureRandom for key pair generation initialization paths.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/lifecycle/AwsSecretsManagerKeyLifecycleManager.java Uses shared SecureRandom for key pair generation initialization paths.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/dataformat/PQCDataFormat.java Uses shared SecureRandom for KEM operations and nonce generation.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultXMSSMTMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultXMSSMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSPHINCSPLUSMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultSLHDSAMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/PQCDefaultMLDSAMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultSNTRUPrimeMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultSABERMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRUMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultNTRULPRimeMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultMLKEMMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultKYBERMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultHQCMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultFRODOMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultCMCEMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/kem/PQCDefaultBIKEMaterial.java Uses shared SecureRandom for KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/hybrid/PQCDefaultX25519MLKEMMaterial.java Uses shared SecureRandom for PQC KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/hybrid/PQCDefaultEd25519MLDSAMaterial.java Uses shared SecureRandom for PQC KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/hybrid/PQCDefaultECDSAMLDSAMaterial.java Uses shared SecureRandom for ECDSA and PQC KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/hybrid/PQCDefaultECDHMLKEMMaterial.java Uses shared SecureRandom for ECDH and PQC KPG initialization.
components/camel-pqc/src/main/java/org/apache/camel/component/pqc/crypto/hybrid/HybridKEM.java Uses shared SecureRandom for KEM generator initialization and EC ephemeral key generation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +22 to +26
* Provides a shared {@link SecureRandom} instance for use across Camel.
* <p>
* {@code SecureRandom} is thread-safe but heavyweight to instantiate — each {@code new SecureRandom()} call gathers OS
* entropy. Reusing a single instance avoids repeated initialization overhead while maintaining cryptographic security
* guarantees.
Comment thread design/security.adoc
Comment on lines +249 to +251
Since Java 9, the default `SecureRandom` implementation uses DRBG (Deterministic Random Bit
Generator) which handles concurrent access efficiently. A single shared instance is both safe and
performant.
Comment thread design/security.adoc
Comment on lines +255 to +259
`SecureRandomHelper` in `camel-util` provides a shared instance via a static getter:

[source,java]
----
import org.apache.camel.util.SecureRandomHelper;
Comment thread design/security.adoc
Comment on lines +244 to +248
`java.security.SecureRandom` is thread-safe but heavyweight to instantiate: each `new SecureRandom()`
call gathers OS entropy (reads from `/dev/urandom` on Linux, `CryptGenRandom` on Windows). Creating
a fresh instance per call is wasteful and measurably slows down startup when many components
initialize cryptographic material (e.g., `camel-pqc` had ~40 separate allocations).

gnodet and others added 4 commits July 4, 2026 13:38
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SecureRandom is thread-safe but heavyweight to instantiate (OS entropy
gathering). The camel-pqc module had ~40 separate new SecureRandom()
calls scattered across producers, data formats, lifecycle managers,
and test material classes, each paying the initialization cost.

Introduce PQCSecureRandom utility class with a single shared instance
and replace all per-call allocations across 25 files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move the shared SecureRandom from PQC-specific utility to a framework
utility in camel-util (SecureRandomHelper.getSecureRandom()). This makes
it available to all Camel modules without each component reinventing its
own holder.

Consumers updated:
- camel-pqc: all 25 files now use SecureRandomHelper (PQCSecureRandom deleted)
- camel-support: CipherPair
- camel-main: SelfSignedCertificateGenerator

Also document the pattern and rationale in design/security.adoc.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the private static field and parameter threading — just call
SecureRandomHelper.getSecureRandom() directly at each usage site.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@davsclaus davsclaus force-pushed the sonar/s2119-securerandom-reuse branch from a3f47e6 to 4f88e6b Compare July 4, 2026 11:38
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