You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by al...@apache.org on 2019/08/05 13:35:33 UTC
[camel] branch CAMEL-13342-JUNIT5-EXPLORATORY updated (73b2c96 ->
de6f06d)
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a change to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git.
discard 73b2c96 CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SprintBootTest with JUnit 5
discard c2da2eb CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SpringExtension with JUnit 5
discard 443c637 CAMEL-13342: Moved further the proof-of-concept for camel-test-spring/CamelSpringTestSupport
discard ef72ac9 CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers-spring with JUnit 5
discard 7c104ae CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers with JUnit 5
discard fdecc42 CAMEL-13342: Implemented a first version of a proof-of-concept for camel-cdi-test in junit 5
discard d118669 CAMEL-13342: Added a JUnit 5 version of JUnit 4 test patterns
discard cff1122 CAMEL-13342: Setup SimpleMockTest with junit extension and parameter resolver
discard 6103c93 CAMEL-13342: Created CamelTest annotation and move existing tests to **test/junit4**
add c8f06db Removed unused imports
add ba241ae Camel-Flink: Use BindToRegistry annotation where possible
add e67f6fa Removed unused imports
add 16ba7ff Fixed CS for Camel-Flink
add dafa550 Update ldif-component.adoc
add 7112893 Update ldif-component.adoc
add aba7b9f Restore imports
add 20a3683 Regen
add 936b772 CAMEL-13753: fix website build trigger
add 0d97463 Camel-FTP: Use BindToRegistry annotation where possible
add a8bbd2e Camel-FTP: Fixed CS
add 99036c0 Camel-google-bigquery: Use BindToRegistry annotation wherever possible
add 70b6fc8 Camel-google-bigquery: Removed unused imports
add 265bd0b Camel-Google-Drive: Use BindToRegistry annotation where possible
add 537cf3d Camel-google-drive: Fixed CS
add a63b9c7 Removed unused imports
add 5853fe4 Cleanup camel-mail documentation
add 3aa5eba Fix typo in FAQ
add 0e755de CAMEL-13770: Configuring Camel components with spring-boot should support Map/Set/List types as we did previously.
add f9aedb0 Upgrade Netty to version 4.1.38.Final
add 77bb1ea Fixed CS for camel-aws-s3
add fd04579 CAMEL-13244: Salesforce consumer should defer login to salesforce untill consumer starts as otherwise this happens when the consumer is created.
add 86f981c Camel-google-pubsub: Use BindToRegistry wherever possible
add d478193 Removed unused imports
add bdf0dcc Camel-google-bigquery - BindToRegistry method must be public
add c5ddaae Camel-Ftp: Removed unused imports
add 56e5c02 Camel-guava-eventbus: Use BindToRegistry annotation wherever possible
add 000e920 Camel-guava-eventbus - Fixed CS
add 9287381 Removed unused imports
add 3dac562 Camel-Hbase: Use BindToRegistry annotation where possible
add 24a655b Camel-Hipchat: Use BindToRegistry annotation wherever possible
add 133dc54 Removed unused imports
add 82b68d4 Camel-HL7: Use BindToRegistry annotation wherever possible
add d88eb0d Camel-Hl7: Fixed CS
add ec47f8d Removed unused imports
add 79c21df Camel-Hl7: Forgot one test for BindToRegistry
add 707d3db more fixes for anchor not found errors
add 415e720 more fixes for asciidoctor: WARNING: skipping reference to missing attribute: warnings
add 441fe00 Revert "more fixes for anchor not found errors"
add 54b0650 adding additional escaping logic to the Maven plugin that generates the Asciidoc files
add 993d459 Upgrade TestContainers to version 1.12.0
add 2be0210 Upgrade RabbitMq to version 5.7.3
add e2fb236 "CAMEL-13454:camel-testcontainers - Should build if no docker reverted back to mvn profile implementation"
add ce83cd9 Camel-Http4: Use BindToRegistry annotation where possible
add f3e11ab Camel-Http4: Fixed CS
add 4c1166a Removed unused imports
add 48f8323 CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add 4f2cebe CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add d552f04 CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add cdf57ec CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add 089ce0d CAMEL-13750: Omit JMSCorrelationID when sending with useMessageIDAsCorrelationID
add 3692137 CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add 0640821 CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add 63e18d7 CAMEL-13788: Deprecate OUT in favour of getMessage on Message API.
add 83fb6db Regen
add dccefd9 CAMEL-13739 - Camel-test createJndiContext warning
add 6cea448 CAMEL-13259 - Camel BOM - Add camel catalog and others
add b918578 CAMEL-13259 - Camel BOM - Add camel catalog and others, Regen
add c4674fc Camel-Infinispan: Use BindToRegistry annotation wherever possible
add a808205 Camel-Infinispan: Fixed CS
add dd9f3dd Removed unused imports
add 4c4ee5d Camel-Infinispan: Removed deprecated toBuilder reference in Continuos Query stuff
add 5a8b4da Camel-IRC: Use BindToRegistry annotation where possible
add 19e7d35 Removed unused imports
add e39563f CAMEL-13175: Consider removing useOriginalMessage functionality. Added unit test and polished the documentation.
add 1e9b9dc CAMEL-13175: Added useOriginalBody as alternative to useOriginalMessage and correct docs.
add 40aaf53 CAMEL-13175: Added useOriginalBody as alternative to useOriginalMessage and correct docs.
add a1b7422 CAMEL-13175: Add docs to user guide
add a4d2898 Camel-IronMQ: Use BindToRegistry annotation wherever possible
add 642af61 Camel-IronMQ: Fixed CS
add 5572d3a Removed unused imports
add 3aa7dad Camel-Jackson: Use BindToRegistry annotation wherever possible
add 8a23fd1 Camel-Jackson: Fixed CS
add 4a1c663 Removed unused imports
add 7ebc445 Camel-JacksonXML: Use BindToRegistry wherever possible
add 0017b6c Removed unused imports
add 1acaaca Camel-Jaxb: Use BindToRegistry annotation wherever possible
add 4b519ac CAMEL-13791: incoming message: Add QoS Information into a header
add 0cc831d CAMEL-13791, add docs
add d86845b Camel-Paho: A little fix to table indentation
add e7442ad CAMEL-13779 - Camel AWS | SNS message attributes should support String.Array
add f7c3f7d CAMEL-13742 - Extend сamel-cmis component with new operations
add cc48bdc Camel-Jcache: Fixed CS
add 5c6bd84 Removed unused imports
add 8799825 CAMEL-13793: Support for multiple camel contexts on various Camel annotations dropped as we only support 1 context per app/deployment.
add 59eed79 CAMEL-13175: Added useOriginalBody as alternative to useOriginalMessage and correct docs.
add 536ecdf Fixed CS
add 4b6715b CAMEL-13793: Support for multiple camel contexts on various Camel annotations dropped as we only support 1 context per app/deployment.
add 0fc150c CAMEL-13793: Regen
add c1b5363 Camel-AWS SQS: Use BindToRegistry annotation wherever possible
add 91f06f9 Camel-AWS SQS: Fixed CS
add 4141fd2 Removed unused imports
add 6d0790a Removed unused imports
add e816c45 Camel 13505 (#3065)
add 2931c66 Polished
add ba0d5f4 Camel-Jdbc - Use BindToRegistry annotation wherever possible
add 5cec263 Removed unused imports
add 78b38b9 Camel-Jsch - Use BindToRegistry annotation wherever possible
add 1bb9a14 Removed unused imports
add b1fdcdd Camel-JT400 - Use BindToRegistry annotation wherever possible
add d8d9e70 Camel-JT400 - Fixed CS
add cc3a0b7 Removed unused imports
add 4458fd7 Camel-Jetty: Use BindToRegistry wherever possible
add 8512761 Camel-Jetty: Fixed CS
add 9410fd1 Removed unused imports
add 1a4eab7 Camel-JMS: Use BindToRegistry annotation wherever possible
add aa147e0 Removed unused imports
add 254d0f6 Camel-Metrics: Use BindToRegistry annotation wherever possible
add f790e54 Camel-Metrics: Fixed CS
add 0060fdc Removed unused imports
add 8203719 Camel-Micrometer: Use BindToRegistry annotation wherever possible
add 00a4096 Camel-Micrometer: Fixed CS
add 252d27e Removed unused imports
add f4ed00c Camel-Base: Fixed CS
add 1e5a9eb Camel-API: Fixed CS
add 680d099 CAMEL-13588: restore example tags
add 7da81b7 Regen
add 8862694 Camel-Mail: Use BindToRegistry annotation wherever possible
add f927b17 Camel-Mail: Fixed CS
add e833f49 Removed unused imports
add c1ef314 Camel-mina2 - Use BindToRegistry annotation wherever possible
add a3a550c Camel-Mina2: Fixed CS
add dbba17c Removed unused imports
add 106c394 Camel-Mllp: Use BindToRegistry annotation wherever possible
add 91e68d4 Removed unused imports
add 33733a6 Camel-Opentracing: Use BindToRegistry annotation wherever possible
add 1d00569 Removed unused imports
add 48d8a52 CAMEL-13798: code changes to re-level headings
add f195e1d CAMEL-13798: re-level all .adoc files
add 324cf4c CAMEL-13589: CXF component documentation anchor fix
add 0224ebb Polished
add 4b86fcd camel3 - Remove sub unit of work as its no longer needed/in-use as the EIPs has been refactored to handle this better.
add f5f968c CAMEL-13797: Move @InvokeOnHeader/@InvokeOnHeaders to org.apache.camel.spi package
add dc2390f Camel-Crypto: Use BindToRegistry annotation wherever possible
add e2397c8 Removed unused imports
add 1e90dff Camel-Kafka: Use BindToRegistry annotation wherever possible
add 3016e91 Camel-Kafka: Fixed CS
add 55ec24c Removed unused imports
add cf9480a Camel-Kafka: Aligned docs
add 4fc8dfe Regen
add b94580b Camel-Kubernetes: Use BindToRegistry annotation wherever possible
add cda7648 Camel-Kubernetes: Fixed CS
add cba5b01 Removed unused imports
add 2a209d8 Fixed potential NPE
add 14b4700 Camel 13799 (#3072)
add d2d7133 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Netty4-http
add 4e14348 CAMEL-13801 - Fixed CS for camel-netty4-http
add b4b6055 Removed unused imports
add 8a370f9 Camel-Netty4-Http: Added camel-mock as testing depedency
add d66c569 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Netty4
add 303f557 Camel-13801 - Fixed CS for Camel-Netty4
add dbe2bbc Removed unused imports
add 5b7d6f9 Camel-Netty4: Aligned docs
add 8b2ad30 Regen
add 04053e7 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Atomix
add 04bd8fe Removed unused imports
add a49b3f1 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-CassandraQL
add 7e02699 Removed unused imports
add 554dd18 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Paho
add 8684317 CAMEL-13801 - Fixed CS for Camel-paho
add 645fc9e Removed unused imports
add 1c8e0ed CAMEL-7677: advice with - Allow to influence interceptor/onException/onCompletion
add 502f323 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-PGevent
add 4fa8db7 Removed unused imports
add f7dfae7 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Pubnub
add 3519a7e Removed unused imports
add 6ca0269 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Pulsar
add bf5ef47 Removed unused imports
add f2c3fe6 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Quartz2
add f56eead CAMEL-13801 - Fixed CS for Camel-Quartz2
add b85578e Removed unused imports
add 4b957ba CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-RabbitMQ
add f7027e4 Removed unused imports
add c2ddc14 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Reactive-Streams
add 58031a6 CAMEL-13801 - Fixed CS for Camel-reactive-streams
add a6d3d23 Removed unused imports
add 63b1b4c CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Reactor
add ad9f136 Removed unused imports
add 04880c0 Fix MongoDB docs typos and links
add 4313bca CAMEL-6901: Intercept send to endpoint now supports after url to send result to this url like an AOP before|after.
add bc7bb9c Regen
add f6a4dfd CAMEL-13799: camel-cdi - Remove support for multiple camel context (not fully implemented and not recommended - 1 context per app/deployment is only supported). Removed @ContentName
add 416e856 CAMEL-6901: Intercept send to endpoint now supports after url to send result to this url like an AOP before|after.
add f1742b6 Removed unusued code
add 3815096 Camel-Consul: Fixed CS
add 235d047 Camel-Netty4: Fixed CS
add ec38281 Camel-Support: Fixed CS
add b9b872d CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Restlet
add b02cd3c CAMEL-13801 - Fixed CS for Camel-Restlet
add 2951bff Removed unused imports
add 73d6f39 Camel-Restlet: Added camel-mock as test dependency
add f4ef99b Camel-Restlet: Added camel-file dependency
add e46b736 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-RXJava2
add d096931 CAMEL-13801 - Fixed CS for Camel-RXJava2
add 93d5f32 Removed unused imports
add 9e69254 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Salesforce
add 6e8c162 Removed unused imports
add e902288 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Saxon
add cb49bfd Removed unused imports
add 0306efb Camel-Servlet: Added camel-mock as dependency test
add eddbf1b CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Servlet
add c5ae24a CAMEL-13801 - Fixed CS for Camel-Servlet
add 6f45265 Removed unused imports
add f366423 Camel-Jetty: Added camel-mock as test dependency
add 41409b2 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Sjms
add f562853 Removed unused imports
add 444b78b CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Sjms2
add 55654e5 Removed unused imports
add 4d99e99 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Spark
add 40321ca Removed unused imports
add 86e670a CAMEL-8388: Polished
add 3d72d77 CAMEL-13806: Removed camel-ejb
add 765d798 CAMEL-13806 - Regen and removed ejb-component from index
add 0aa1323 Remove unused imports
add 8972b31 Fix typos in migration guide
add 7a682cc CAMEL-10126: Aggregate - Has name clash for some options
add 713f219 CAMEL-13795: Fixing the issue of already declared namespaces within the child (#3071)
add 4c5eeaf CAMEL-13806: Removed camel-ejb
add 87ba694 camel3 - Move OutputStreamBuilder to builder package
add 2896bcd CAMEL-13808: Deleted test
add 52b414b CAMEL-13795: Fixed test
add 3481c92 CAMEL-13795: Fixed test
add 2011d8f CAMEL-11176: Add comment on test that ignore on purpose
add e779fed CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http
add 316bf54 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - aligned the other components using camel-http4
add 6964817 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Aligned Karaf feature
add 37a7409 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Aligned Spring Boot tests
add c82228f CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Aligned Examples
add c7a5190 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Aligned Integration tests
add d1c7572 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Aligned docs and links
add 7743efb CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Regen
add 7d0d938 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Migration guide
add 3513b64 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Fix grammar in migration guide
add 8e12750 Update the Zipkin Server jar coordinates
add 454f5c6 Merge pull request #3074 from shakuzen/patch-1
add af2c19c CAMEL-12851: Fixed test
add 67f11f6 Regen
add 36e8556 Fixed CS
add 5d95ccb CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Spring-Batch
add ba6c526 Removed unused imports
add 7312e3c CAMEL-13036: Allow advice with to turn off logging routes before/after as XML
add cf93fec CAMEL-13810: Always log ERROR if failed to start CamelContext
add 58fb94f CAMEL-13094: Ensure service is stopped if it fails to start as it did in Camel 2.x. This can also lead to JMX MBeans not being unregistered from the JVM. Thanks to Thomas Diesler for the unit test.
add 96af619 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Spring-WS
add 7e86b1d7 Fixed CS for Camel-Spring-WS
add ce44147 CAMEL-12968: Fix FluentProducerTemplate to be thread-safe when you also set endpoints and other states.
add ef78178 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Spring-Redis
add 228f833 CAMEL-13801 - Fixed CS for Camel-Spring-Redis
add 5f76870 Removed unused imports
add ab33215 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - AWS-Xray reference to http4 removed
add 40d717f CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Http-common reference to http4 removed
add a79ea5b CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Camel-cloud reference to htt4 removed
add 661a012 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Rename Http4ServiceExpressionFactory @CloudServiceFactory
add 1b2a52c Camel-Http: Adding camel-mock as test dependency
add 6eb2559 Camel-Http: Added File component as dependency
add 76ff2d1 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Removed reference to http4 in camel-jetty
add 0bca779 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Removed reference to http4 in camel-opentracing and regen
add 8e4a7bd CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Removed reference to http4 in camel-rest-swagger
add 965cda7 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Removed reference to http4 in camel-servlet
add bc8bfa0 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Removed reference to http4 in camel-spring-boot
add 224be5b CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Regen Camel-atmosphere-websocket
add 4705e61 CAMEL-13792 - Rename components to default names, Camel-http4 to Camel-http - Fix link in http common docs
add 2d06614 Regen
add c75958f CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-SQL
add 6da583a Removed unused imports
add 4cc88b6 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Spring
add c30bfc1 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Spring
add 71b1f6c CAMEL-13801 - Fixed CS for Camel-Spring
add caef79b Removed unused imports
add 3d213d5 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Stax
add 1f466f2 CAMEL-13801 - Fixed CS for Camel-Stax
add 7a41589 Removed unused imports
add 370a30a Removed unused imports
add c409ab7 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Stomp
add c3a8ffa Removed unused imports
add 7305809 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Stream
add 0ad4af6 CAMEL-13801 - Fixed CS for Camel-Stream
add bc71994 Removed unused imports
add 64fd094 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Syslog
add afa4f1a CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Swagger-Java
add 67fe4c3 CAMEL-13801 - Fixed CS for Camel-Swagger-Java
add 2c254a4 Removed unused imports
add 954418f updating the infinispan documentation
add 43474e5 Merge pull request #3075 from MelissaFlinn/infinispan-doc-update
add 0b9ad3b CAMEL-13811: Remove camel-boon
add 2329e8b Expose WebSocketChannel and WebSocketHttpExchange to the Camel Exchange
add 3be3f6f Fix checkstyle
add 45f55dd CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Thrift
add 1d374ad Removed unused imports
add 9ac5a30 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Tika
add cef91ab Removed unused imports
add 624e73a Upgrade Tika to version 1.22
add 897614d CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Twitter
add f707a89 CAMEL-13801 - Fixed CS for Camel-Twitter
add acabd92 Removed unused imports
add b18db26 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Undertow
add 6dfd3cf CAMEL-13801 - Fixed CS for Camel-Undertow
add b6c4233 Removed unused imports
add 22fd657 Camel-Undertow: Added camel-mock as test dependency
add f4ea2b6 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Web3j
add bfbc97a Removed unused imports
add 2edbf90 Camel-Crypto: Fixed CS
add 76f8153 Camel-Management-impl: Fixed CS
add 198e5bb CAMEL-13792 - Rename components to default names, Camel-mongodb3 to camel-mongodb
add 8eb661a CAMEL-13792 - Rename components to default names, Camel-mongodb3 to camel-mongodb - Updated references
add 4d2f940 CAMEL-13792 - Rename components to default names, Camel-mongodb3 to camel-mongodb - Karaf integration test and feature updated
add 68736f7 CAMEL-13792 - Rename components to default names, Camel-mongodb3 to camel-mongodb - SB integration test updated
add ed41d44 CAMEL-13792 - Rename components to default names, Camel-mongodb3 to camel-mongodb - Docs and regen
add 469f388 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Websocket
add 5e50958 Removed unused imports
add c37c326 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-XMLSecurity
add 693a60d Removed unused imports
add 24adb1d CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-XMPP
add b7ff24f Removed unused imports
add acb4321 CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Zipkin
add 6d67081 Removed unused imports
add 266fb3f CAMEL-13801 - Fixed CS for Camel-zookeeper
add 9672694 Removed unused imports
add acc14c0 CAMEL-13563: Fix AHC tests after Jetty upgrade
add 6b55f81 Merge pull request #3079 from DenisIstomin/camel-13563-jetty-upgrade-fix
add 16d69fc CAMEL-13801 - camel3 - Use @BindToRegistry wherever possible, Camel-Itest
add a394c76 Removed unused imports
add d8627e2 CAMEL-12003: Add failFast option to mock endpoint
add 081e0f0 Regen
add b054f70 CAMEL-12003: Add failFast option to mock endpoint
add 61909c2 CAMEL-12003: Add failFast option to mock endpoint
add 9d2306b CAMEL-12003: Add failFast option to mock endpoint
add c38bd5a CAMEL-12003: Add failFast option to mock endpoint
add 71ba693 CAMEL-12003: camel-test getMockEndpoint should lookup mock endpoints and favour the mock queue name as matching.
add 521de3b Regen
add adc277d Camel-Salesforce: Fix integration test.
add 57a3925 Regen
add 71c0599 CAMEL-13811: MIGRATION.MD - Removed camel-boon
add 3312243 CAMEL-13822: Add Override annotations
add 672ccb8 CAMEL-12003: camel-test getMockEndpoint should lookup mock endpoints and favour the mock queue name as matching.
add 82581fb CAMEL-13783: Fix the camel-archetype-component to inherit from DefaultConsumer instead of ScheduledPollConsumer (#3059)
add a21fe32 CAMEL-13783: Polished
add b0e60be CAMEL-13774: Add Java8 Stream to Iterator as type converter.
add 5d8b414 Delete not used method
add 3675829 CAMEL-13774: Add Java8 Stream to Iterator as type converter.
add 096ec2a Polished
add 9d46108 Camel-Mock: Fixed CS
add eb59e5f Regen
add ec0a7ac Upgrade Pulsar and related bundles to version 2.4.0
add a0db603 Upgrade GRPC and related bundles to version 1.22.1
add 0f9d130 Upgrade Libphonenumber and related bundle to version 8.10.15
add eaa45f2 Upgrade Docker Java and related bundle to version 3.1.4
add 26f0e9f Upgrade AWS SDK Java and related bundle to version 1.11.595
add 29db582 CAMEL-12003: Fixed test
add d59b19d Upgrade Saxon and related bundle to version 9.9.1-4
add 467500f Upgrade Kafka and related bundle to version 2.3.0
add c0cb9e9 CAMEL-5832: camel-jms - JMS consumer should detect JMSReplyTo being sending to itself to avoid circular looping. Thanks to Devendra Khanolkar for the sample unit test.
add a25c0c8 CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs
add e0ac1da CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs - updated references
add 44ba6e3 CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs - Updated docs
add e8d59b8 CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs - Updated docs link and regen
add 2fb5590 CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs - Karaf integration test and feature updated
add b334321 CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs - SB integration test updated
add 81cfdb0 CAMEL-13792 - Rename components to default names, Camel-hdfs2 to camel-hdfs - Removed references in comments
add f4612d3 CAMEL-13824 - Camel-Mongodb: the documentation references a deleted component
add 681f5ad CAMEL-13824 - Regen
add bf2c783 CAMEL-13792 - Rename components to default names, Camel-rxjava2 to camel-rxjava
add c154369 CAMEL-13792 - Rename components to default names, Camel-rxjava2 to camel-rxjava - renamed service
add 03cb34f CAMEL-13792 - Rename components to default names, Camel-rxjava2 to camel-rxjava - updated references
add 80e77be CAMEL-13792 - Rename components to default names, Camel-rxjava2 to camel-rxjava - updated tests
add d8c1180 CAMEL-13792 - Rename components to default names, Camel-rxjava2 to camel-rxjava - Updated docs link and regen
add 55ca107 CAMEL-13792 - Rename components to default names, Camel-rxjava2 to camel-rxjava - Regen
add 05e545d Remove not used code
add ab8a08e CAMEL-6325: Add discardOnAggregationFailure option to aggregate EIP
add c87b86f CAMEL-6325: Add discardOnAggregationFailure option to aggregate EIP
add 4300ca9 CAMEL-6715: Add to blueprint testing docs that only 1 CamelContext is supported.
add 42b8149 CAMEL-7444: Fixed TODO for MDC test
new afced8d CAMEL-13342: Created CamelTest annotation and move existing tests to **test/junit4**
new 637c0d6 CAMEL-13342: Setup SimpleMockTest with junit extension and parameter resolver
new 4ca3f50 CAMEL-13342: Added a JUnit 5 version of JUnit 4 test patterns
new cdefa5c CAMEL-13342: Implemented a first version of a proof-of-concept for camel-cdi-test in junit 5
new e044da1 CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers with JUnit 5
new d995abb CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers-spring with JUnit 5
new 15933f8 CAMEL-13342: Moved further the proof-of-concept for camel-test-spring/CamelSpringTestSupport
new b306b34 CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SpringExtension with JUnit 5
new de6f06d CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SprintBootTest with JUnit 5
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (73b2c96)
\
N -- N -- N refs/heads/CAMEL-13342-JUNIT5-EXPLORATORY (de6f06d)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
Jenkinsfile | 2 +-
MIGRATION.md | 107 ++-
README.md | 2 +-
apache-camel/pom.xml | 35 +-
apache-camel/src/main/descriptors/common-bin.xml | 19 +-
apache-camel/src/main/release/README.txt | 1 -
.../META-INF/maven/archetype-metadata.xml | 4 +-
.../src/main/resources/archetype-resources/pom.xml | 7 +-
.../src/main/java/EventBusHelper.java | 59 ++
.../src/main/java/__name__Consumer.java | 46 +-
.../src/main/java/__name__Endpoint.java | 7 +
.../src/test/java/__name__ComponentTest.java | 28 +-
.../main/resources/archetype-resources/readme.adoc | 12 +-
bom/camel-bom/pom.xml | 69 +-
.../catalog/maven/MavenVersionManagerTest.java | 4 -
.../catalog/karaf/KarafRuntimeProviderTest.java | 2 -
.../springboot/SpringBootRuntimeProviderTest.java | 2 -
.../java/org/apache/camel/parser/ParserResult.java | 1 +
.../camel/parser/model/CamelNodeDetails.java | 1 +
.../parser/java/MyLocalAddRouteBuilderTest.java | 2 -
.../org/apache/camel/parser/java/MyNettyTest.java | 2 +-
.../camel/parser/java/MyRouteEmptyUriTest.java | 2 +-
.../src/main/docs/activemq-component.adoc | 14 +-
.../camel/component/activemq/CamelConnection.java | 2 +
.../component/activemq/CamelConnectionFactory.java | 3 +
.../camel/component/activemq/CamelDestination.java | 11 +
.../component/activemq/CamelMessageConsumer.java | 7 +
.../component/activemq/CamelMessageProducer.java | 4 +
.../camel/component/activemq/CamelQueue.java | 3 +
.../component/activemq/CamelQueueReceiver.java | 1 +
.../camel/component/activemq/CamelQueueSender.java | 3 +
.../camel/component/activemq/CamelTopic.java | 3 +
.../component/activemq/CamelTopicPublisher.java | 5 +
.../component/activemq/CamelTopicSubscriber.java | 2 +
.../activemq/ActiveMQJmsHeaderRouteForceTest.java | 1 +
.../activemq/ActiveMQJmsHeaderRouteTest.java | 2 +
.../activemq/ActiveMQOriginalDestinationTest.java | 1 +
.../ActiveMQReplyToHeaderUsingConverterTest.java | 2 +
.../component/activemq/ActiveMQRouteTest.java | 3 +
.../activemq/AdvisoryConsumerExample.java | 1 +
.../camel/component/activemq/CamelJmsTest.java | 1 +
...nvokeRequestReplyUsingJmsReplyToHeaderTest.java | 2 +
.../activemq/JmsSimpleRequestReplyTest.java | 2 +
.../component/activemq/SetGroupIdProcessor.java | 1 +
.../converter/InvokeJmsMessageListenerTest.java | 1 +
.../converter/InvokeMessageListenerTest.java | 6 +-
.../src/main/docs/ahc-ws-component.adoc | 18 +-
.../apache/camel/component/ahc/ws/WsEndpoint.java | 1 +
components/camel-ahc/pom.xml | 2 +-
.../camel-ahc/src/main/docs/ahc-component.adoc | 46 +-
.../apache/camel/component/ahc/AhcEndpoint.java | 2 +
.../camel/component/ahc/DefaultAhcBinding.java | 29 +-
...ponentClientConfigSslContextParametersTest.java | 3 +
...entConfigWithClientConfigUriParametersTest.java | 1 +
...entConfigWithClientConfigUriParametersTest.java | 1 +
.../ahc/AhcProduceSSLContextParametersGetTest.java | 2 +
.../component/ahc/AhcProducerSessionTest.java | 2 -
.../ahc/HttpHeaderFilterStrategyTest.java | 1 +
.../camel-amqp/src/main/docs/amqp-component.adoc | 20 +-
.../apache/camel/component/amqp/AMQPRouteTest.java | 2 +
.../component/amqp/AMQPRouteTraceFrameTest.java | 2 +
.../amqp/artemis/AMQPEmbeddedBrokerTest.java | 2 +
.../camel-apns/src/main/docs/apns-component.adoc | 30 +-
.../apache/camel/component/apns/ApnsComponent.java | 1 +
.../apache/camel/component/apns/ApnsConsumer.java | 1 +
.../apache/camel/component/apns/ApnsEndpoint.java | 2 +
.../apache/camel/component/apns/ApnsProducer.java | 1 +
.../component/apns/factory/ApnsServiceFactory.java | 2 +
.../camel/component/apns/ApnsConsumerTest.java | 2 +
.../camel/component/apns/ApnsProducerTest.java | 2 +
.../apns/ApnsProducerWithoutTokensHeaderTest.java | 2 +
.../component/as2/api/CanonicalOutputStream.java | 3 +
.../camel/component/as2/api/entity/MimeEntity.java | 1 +
.../src/main/docs/as2-component.adoc | 16 +-
.../apache/camel/component/as2/AS2Endpoint.java | 3 +
.../as2/AS2ClientManagerIntegrationTest.java | 1 +
.../camel-asn1/src/main/docs/asn1-dataformat.adoc | 10 +-
.../src/main/docs/asterisk-component.adoc | 14 +-
.../component/asterisk/AsteriskConsumerTest.java | 1 +
.../camel-atmos/src/main/docs/atmos-component.adoc | 18 +-
.../camel/component/atmos/AtmosComponent.java | 1 +
.../camel/component/atmos/AtmosEndpoint.java | 2 +
.../main/docs/atmosphere-websocket-component.adoc | 20 +-
.../websocket/WebsocketCamelRouterTestSupport.java | 2 +
...bsocketCamelRouterWithInitParamTestSupport.java | 2 +
.../atmosphere/websocket/WebsocketRouteTest.java | 1 +
.../websocket/WebsocketRouteWithInitParamTest.java | 1 +
.../camel-atom/src/main/docs/atom-component.adoc | 20 +-
.../apache/camel/component/atom/AtomProducer.java | 1 +
.../camel/component/atom/UpdatedDateFilter.java | 3 +-
.../apache/camel/component/feed/FeedComponent.java | 1 +
.../apache/camel/component/feed/FeedEndpoint.java | 3 +
.../component/feed/FeedEntryPollingConsumer.java | 1 +
.../camel/component/feed/FeedPollingConsumer.java | 1 +
.../camel/component/atom/AtomEndpointTest.java | 1 +
.../atom/AtomEntryPollingConsumerTest.java | 1 +
.../camel/component/atom/AtomEntrySortTest.java | 1 +
.../camel/component/atom/AtomHttpConsumerTest.java | 1 +
.../atom/AtomPollingConsumerIdleMessageTest.java | 1 +
.../component/atom/AtomPollingConsumerTest.java | 1 +
.../component/atom/AtomPollingLowDelayTest.java | 1 +
.../component/atom/AtomPollingUnthrottledTest.java | 1 +
.../src/main/docs/atomix-map-component.adoc | 18 +-
.../src/main/docs/atomix-messaging-component.adoc | 10 +-
.../src/main/docs/atomix-multimap-component.adoc | 10 +-
.../src/main/docs/atomix-queue-component.adoc | 10 +-
.../src/main/docs/atomix-set-component.adoc | 10 +-
.../src/main/docs/atomix-value-component.adoc | 10 +-
.../client/AbstractAtomixClientProducer.java | 2 +-
.../atomix/client/map/AtomixMapConfiguration.java | 1 +
.../atomix/client/map/AtomixMapProducer.java | 2 +-
.../messaging/AtomixMessagingConfiguration.java | 1 +
.../client/messaging/AtomixMessagingProducer.java | 2 +-
.../multimap/AtomixMultiMapConfiguration.java | 1 +
.../client/multimap/AtomixMultiMapProducer.java | 2 +-
.../client/queue/AtomixQueueConfiguration.java | 1 +
.../atomix/client/queue/AtomixQueueProducer.java | 2 +-
.../atomix/client/set/AtomixSetConfiguration.java | 1 +
.../atomix/client/set/AtomixSetProducer.java | 2 +-
.../client/value/AtomixValueConfiguration.java | 1 +
.../atomix/client/value/AtomixValueProducer.java | 2 +-
.../atomix/client/AtomixClientTestSupport.java | 7 +-
.../atomix/client/map/AtomixMapConsumerTest.java | 5 +-
.../apache/camel/attachment/DefaultAttachment.java | 2 +
.../attachment/BeanMethodWithExchangeTest.java | 1 +
.../camel-avro/src/main/docs/avro-component.adoc | 20 +-
.../camel-avro/src/main/docs/avro-dataformat.adoc | 10 +-
.../camel/dataformat/avro/AvroDataFormat.java | 4 +
.../camel/dataformat/avro/SpecificDataNoCache.java | 1 +
.../camel/component/avro/AvroHttpConsumerTest.java | 1 +
.../camel/component/avro/AvroHttpProducerTest.java | 1 +
.../component/avro/AvroNettyConsumerTest.java | 1 +
.../component/avro/AvroNettyProducerTest.java | 1 +
.../avro/AvroMarshalAndUnmarshalSpringTest.java | 2 +
.../src/main/docs/aws-cw-component.adoc | 24 +-
.../apache/camel/component/aws/cw/CwComponent.java | 1 +
.../apache/camel/component/aws/cw/CwEndpoint.java | 2 +
.../apache/camel/component/aws/cw/CwProducer.java | 1 +
.../cw/integration/CwComponentIntegrationTest.java | 1 +
.../src/main/docs/aws-ddb-component.adoc | 42 +-
.../src/main/docs/aws-ddbstream-component.adoc | 34 +-
.../camel/component/aws/ddb/DdbComponent.java | 1 +
.../camel/component/aws/ddb/DdbEndpoint.java | 2 +
.../camel/component/aws/ddb/DdbProducer.java | 1 +
.../integration/DdbComponentIntegrationTest.java | 1 +
.../src/main/docs/aws-ec2-component.adoc | 20 +-
.../camel/component/aws/ec2/EC2Endpoint.java | 2 +
.../camel/component/aws/ec2/EC2Producer.java | 1 +
.../src/main/docs/aws-ecs-component.adoc | 22 +-
.../camel/component/aws/ecs/ECSEndpoint.java | 2 +
.../camel/component/aws/ecs/ECSProducer.java | 1 +
.../src/main/docs/aws-eks-component.adoc | 22 +-
.../camel/component/aws/eks/EKSEndpoint.java | 2 +
.../camel/component/aws/eks/EKSProducer.java | 1 +
.../src/main/docs/aws-iam-component.adoc | 22 +-
.../camel/component/aws/iam/IAMEndpoint.java | 2 +
.../camel/component/aws/iam/IAMProducer.java | 1 +
.../src/main/docs/aws-kinesis-component.adoc | 32 +-
.../main/docs/aws-kinesis-firehose-component.adoc | 26 +-
.../KinesisFirehoseComponentIntegrationTest.java | 1 +
.../KinesisComponentIntegrationTest.java | 1 +
.../src/main/docs/aws-kms-component.adoc | 22 +-
.../camel/component/aws/kms/KMSEndpoint.java | 2 +
.../camel/component/aws/kms/KMSProducer.java | 1 +
.../src/main/docs/aws-lambda-component.adoc | 26 +-
.../camel/component/aws/lambda/LambdaEndpoint.java | 2 +
.../src/main/docs/aws-mq-component.adoc | 20 +-
.../apache/camel/component/aws/mq/MQEndpoint.java | 2 +
.../apache/camel/component/aws/mq/MQProducer.java | 1 +
.../src/main/docs/aws-msk-component.adoc | 22 +-
.../camel/component/aws/msk/MSKEndpoint.java | 2 +
.../camel/component/aws/msk/MSKProducer.java | 1 +
.../src/main/docs/aws-s3-component.adoc | 40 +-
.../apache/camel/component/aws/s3/S3Component.java | 2 +
.../apache/camel/component/aws/s3/S3Consumer.java | 1 +
.../apache/camel/component/aws/s3/S3Endpoint.java | 2 +
.../s3/client/impl/S3ClientIAMOptimizedImpl.java | 1 +
.../aws/s3/client/impl/S3ClientStandardImpl.java | 1 +
.../aws/s3/S3ComponentContentLengthFileTest.java | 1 +
.../component/aws/s3/S3ComponentFileTest.java | 1 +
.../aws/s3/S3ComponentKeyNameFileTest.java | 1 +
.../s3/integration/S3ComponentIntegrationTest.java | 1 +
.../src/main/docs/aws-sdb-component.adoc | 30 +-
.../aws/sdb/BatchDeleteAttributesCommand.java | 1 +
.../aws/sdb/BatchPutAttributesCommand.java | 1 +
.../component/aws/sdb/DeleteAttributesCommand.java | 1 +
.../component/aws/sdb/DeleteDomainCommand.java | 1 +
.../component/aws/sdb/DomainMetadataCommand.java | 1 +
.../component/aws/sdb/GetAttributesCommand.java | 1 +
.../component/aws/sdb/ListDomainsCommand.java | 1 +
.../component/aws/sdb/PutAttributesCommand.java | 1 +
.../camel/component/aws/sdb/SdbComponent.java | 1 +
.../camel/component/aws/sdb/SdbEndpoint.java | 2 +
.../camel/component/aws/sdb/SdbProducer.java | 1 +
.../camel/component/aws/sdb/SelectCommand.java | 1 +
.../src/main/docs/aws-ses-component.adoc | 26 +-
.../camel/component/aws/ses/SesComponent.java | 1 +
.../camel/component/aws/ses/SesEndpoint.java | 2 +
.../camel/component/aws/ses/SesProducer.java | 1 +
.../integration/SesComponentIntegrationTest.java | 1 +
.../src/main/docs/aws-sns-component.adoc | 30 +-
.../camel/component/aws/sns/SnsComponent.java | 1 +
.../camel/component/aws/sns/SnsEndpoint.java | 4 +
.../camel/component/aws/sns/SnsProducer.java | 12 +
.../camel/component/aws/sns/SnsProducerTest.java | 12 +-
.../integration/SnsComponentIntegrationTest.java | 1 +
.../SnsTopicWithKmsEncryptionIntegrationTest.java | 1 +
.../src/main/docs/aws-sqs-component.adoc | 48 +-
.../camel/component/aws/sqs/SqsConsumer.java | 1 +
.../camel/component/aws/sqs/SqsEndpoint.java | 4 +
.../camel/component/aws/sqs/SqsProducer.java | 1 +
.../component/aws/sqs/SqsBatchConsumerTest.java | 11 +-
.../camel/component/aws/sqs/SqsComponentTest.java | 13 +-
.../aws/sqs/SqsConcurrentConsumerTest.java | 11 +-
.../aws/sqs/SqsConsumerIdleMessageTest.java | 15 +-
.../sqs/SqsDoesNotExtendMessageVisibilityTest.java | 18 +-
.../aws/sqs/SqsEndpointUseExistingQueueTest.java | 15 +-
.../aws/sqs/SqsExtendMessageVisibilityTest.java | 20 +-
.../integration/SqsComponentIntegrationTest.java | 1 +
.../SqsConsumerMessageIntegrationTest.java | 1 +
.../SqsProducerBatchSendFifoIntegrationTest.java | 1 +
.../SqsProducerBatchSendIntegrationTest.java | 1 +
.../SqsProducerDeleteMessageIntegrationTest.java | 1 +
.../src/main/docs/aws-swf-component.adoc | 32 +-
.../component/aws/swf/SWFActivityProducer.java | 1 +
.../camel/component/aws/swf/SWFComponent.java | 1 +
.../camel/component/aws/swf/SWFEndpoint.java | 2 +
.../component/aws/swf/SWFWorkflowProducer.java | 1 +
.../camel-aws-xray/src/main/docs/aws-xray.adoc | 12 +-
.../decorators/http/Http4SegmentDecorator.java | 25 -
...pache.camel.component.aws.xray.SegmentDecorator | 1 -
.../src/main/docs/azure-blob-component.adoc | 26 +-
.../src/main/docs/azure-queue-component.adoc | 22 +-
components/camel-azure/src/main/docs/azure.adoc | 2 +-
.../component/azure/blob/BlobServiceComponent.java | 1 +
.../component/azure/blob/BlobServiceEndpoint.java | 2 +
.../azure/queue/QueueServiceComponent.java | 1 +
.../azure/queue/QueueServiceEndpoint.java | 2 +
.../src/main/docs/barcode-dataformat.adoc | 14 +-
.../barcode/BarcodeDataFormatSpringTest.java | 2 +
.../src/main/docs/base64-dataformat.adoc | 12 +-
.../src/main/docs/bean-validator-component.adoc | 18 +-
.../bean/validator/BeanValidatorProducer.java | 1 +
.../validator/BeanValidatorConfigurationTest.java | 5 +
.../BeanValidatorXMLConfigurationRouteTest.java | 1 +
.../bean/validator/CarWithAnnotations.java | 4 +
.../validator/CarWithRedefinedDefaultGroup.java | 4 +
.../bean/validator/CarWithoutAnnotations.java | 4 +
.../camel-bean/src/main/docs/bean-component.adoc | 18 +-
.../camel-bean/src/main/docs/bean-language.adoc | 33 +-
.../camel-bean/src/main/docs/class-component.adoc | 16 +-
.../component/bean/AbstractBeanProcessor.java | 3 +
.../bean/AbstractCamelInvocationHandler.java | 15 +-
.../apache/camel/component/bean/BeanComponent.java | 1 +
.../org/apache/camel/component/bean/BeanInfo.java | 3 -
.../apache/camel/component/bean/BeanProcessor.java | 1 +
.../camel/component/bean/ConstantBeanHolder.java | 5 +
.../component/bean/ConstantTypeBeanHolder.java | 6 +
.../bean/DefaultParameterMappingStrategy.java | 1 +
.../apache/camel/component/bean/MethodInfo.java | 22 +-
.../apache/camel/component/bean/RegistryBean.java | 5 +
.../camel/component/beanclass/ClassComponent.java | 1 +
.../apache/camel/language/bean/BeanExpression.java | 5 +-
.../apache/camel/language/bean/BeanLanguage.java | 3 +
.../src/main/docs/beanio-dataformat.adoc | 14 +-
.../camel/dataformat/beanio/BeanIODataFormat.java | 4 +
.../src/main/docs/beanstalk-component.adoc | 20 +-
.../src/main/docs/bindy-dataformat.adoc | 44 +-
.../dataformat/bindy/BindyAbstractFactory.java | 3 +
.../dataformat/bindy/csv/BindyCsvDataFormat.java | 2 +
.../bindy/fixed/BindyFixedLengthDataFormat.java | 2 +
.../bindy/format/NumberPatternFormat.java | 3 +
.../format/factories/BigDecimalFormatFactory.java | 2 +
.../format/factories/BigIntegerFormatFactory.java | 2 +
.../format/factories/BooleanFormatFactory.java | 2 +
.../bindy/format/factories/ByteFormatFactory.java | 2 +
.../format/factories/CharacterFormatFactory.java | 2 +
.../bindy/format/factories/DateFormatFactory.java | 3 +
.../format/factories/DoubleFormatFactory.java | 2 +
.../bindy/format/factories/EnumFormatFactory.java | 2 +
.../bindy/format/factories/FloatFormatFactory.java | 2 +
.../format/factories/IntegerFormatFactory.java | 2 +
.../format/factories/LocalDateFormatFactory.java | 3 +
.../factories/LocalDateTimeFormatFactory.java | 3 +
.../format/factories/LocalTimeFormatFactory.java | 3 +
.../bindy/format/factories/LongFormatFactory.java | 2 +
.../bindy/format/factories/ShortFormatFactory.java | 2 +
.../format/factories/StringFormatFactory.java | 2 +
.../bindy/kvp/BindyKeyValuePairDataFormat.java | 3 +
.../BindyComplexCsvGenerateHeaderMarshallTest.java | 1 +
.../bindy/csv/BindyComplexCsvUnmarshallTest.java | 1 +
...mplexCsvUnmarshallUnwrapSingleInstanceTest.java | 1 +
.../bindy/csv/BindyCsvBigFileUnmarshallTest.java | 1 +
.../bindy/csv/BindyCsvSkipFieldTest.java | 1 +
.../BindyDoNotRemoveQuotesCsvUnmarshallTest.java | 1 +
.../csv/BindyDoubleQuotesCsvUnmarshallTest.java | 1 +
.../BindyDoubleQuotesInFieldCsvUnmarshallTest.java | 1 +
.../csv/BindyInlinedQuotesCsvUnmarshallTest.java | 1 +
.../csv/BindyMarshalOneToManyWithHeadersTest.java | 1 +
.../bindy/csv/BindyPojoSimpleCsvMarshallTest.java | 1 +
.../BindySimpleCsvBooleanFalseMarshallTest.java | 1 +
.../csv/BindySimpleCsvBooleanTrueMarshallTest.java | 1 +
.../csv/BindySimpleCsvBooleanUnmarshallTest.java | 1 +
.../BindySimpleCsvGenerateHeaderMarshallTest.java | 1 +
.../csv/BindySimpleCsvIntegerMarshallTest.java | 1 +
...indySimpleCsvMandatoryFieldsUnmarshallTest.java | 1 +
.../bindy/csv/BindySimpleCsvMarshallDslTest.java | 1 +
...BindySimpleCsvMarshallPositionModifiedTest.java | 1 +
.../bindy/csv/BindySimpleCsvMarshallTest.java | 1 +
.../csv/BindySimpleCsvMarshallTrimClipTest.java | 1 +
.../bindy/csv/BindySimpleCsvNullMarshallTest.java | 1 +
.../csv/BindySimpleCsvOneToManyMarshallTest.java | 1 +
...ndySimpleCsvRemoveWhitespaceUnmarshallTest.java | 1 +
.../BindySimpleCsvSkipFirstLineUnmarshallTest.java | 1 +
.../BindySimpleCsvUnmarshallBadIntegerTest.java | 1 +
...ndySimpleCsvUnmarshallPositionModifiedTest.java | 1 +
.../bindy/csv/BindySimpleCsvUnmarshallTest.java | 1 +
...indySimpleCsvUnmarshallUnicodeNextLineTest.java | 1 +
...BindySingleQuoteStartWordCsvUnmarshallTest.java | 1 +
.../csv/BindySingleQuotesCsvUnmarshallTest.java | 1 +
...esWithDoubleQuotesInFieldCsvUnmarshallTest.java | 1 +
...ComplexOneToManyKeyValuePairUnMarshallTest.java | 1 +
.../BindySimpleKeyValuePairMarshallDslTest.java | 1 +
.../fix/BindySimpleKeyValuePairMarshallTest.java | 1 +
.../BindySimpleKeyValuePairNullMarshallTest.java | 1 +
.../BindySimpleKeyValuePairSortedMarshallTest.java | 1 +
...indySimpleKeyValuePairSortedUnmarshallTest.java | 1 +
.../BindySimpleKeyValuePairTabMarshallTest.java | 1 +
.../BindySimpleKeyValuePairTabUnmarshallTest.java | 1 +
...BindySimpleKeyValuePairUnicodeNextLineTest.java | 1 +
.../BindySimpleKeyValuePairUnmarshallDslTest.java | 1 +
.../fix/BindySimpleKeyValuePairUnmarshallTest.java | 1 +
...eKeyValuePairWithoutSectionMarshallDslTest.java | 1 +
.../bindy/fixed/implied/BindyImpliedTest.java | 1 +
.../simple/BindySimpleFixedLengthMarshallTest.java | 1 +
.../bindy/fixed/number/BindyNumberTest.java | 1 +
...SimpleFixedLengthUnmarshallClassMethodTest.java | 1 +
...pleFixedLengthUnmarshallExternalMethodTest.java | 1 +
.../trim/BindySimpleFixedLengthUnmarshallTest.java | 1 +
...FixedLengthUnmarshallTrimAlignedBFieldTest.java | 1 +
...dySimpleFixedLengthUnmarshallTrimFieldTest.java | 1 +
.../date/BindyDatePatternCsvUnmarshallTest.java | 1 +
.../camel-blueprint/src/main/docs/blueprint.adoc | 6 +-
.../camel/blueprint/BlueprintCamelContext.java | 1 +
.../BlueprintModelJAXBContextFactory.java | 1 +
.../camel/blueprint/CamelContextFactoryBean.java | 60 ++
.../blueprint/CamelErrorHandlerFactoryBean.java | 6 +
.../camel/blueprint/CamelProxyFactoryBean.java | 5 +
.../blueprint/handler/CamelNamespaceHandler.java | 66 +-
.../src/main/docs/bonita-component.adoc | 18 +-
.../camel/component/bonita/BonitaComponent.java | 1 +
.../camel/component/bonita/BonitaEndpoint.java | 2 +
.../bonita/producer/BonitaStartProducer.java | 1 +
components/camel-boon/pom.xml | 102 --
.../camel-boon/src/main/docs/boon-dataformat.adoc | 104 --
.../camel/component/boon/BoonDataFormat.java | 145 ---
.../camel/component/boon/BoonConcurrentTest.java | 75 --
.../camel/component/boon/BoonDataFormatTest.java | 141 ---
.../org/apache/camel/component/boon/TestPojo.java | 45 -
.../src/test/resources/log4j2.properties | 28 -
.../src/main/docs/box-component.adoc | 48 +-
.../apache/camel/component/box/BoxEndpoint.java | 3 +
.../src/main/docs/braintree-component.adoc | 60 +-
.../src/main/docs/browse-component.adoc | 16 +-
.../camel/component/browse/BrowseComponent.java | 1 +
.../camel/component/browse/BrowseEndpoint.java | 3 +
.../src/main/docs/caffeine-cache-component.adoc | 16 +-
.../main/docs/caffeine-loadcache-component.adoc | 12 +-
.../camel/component/caffeine/EvictionType.java | 1 +
.../caffeine/cache/CaffeineCacheProducer.java | 2 +-
.../caffeine/load/CaffeineLoadCacheProducer.java | 2 +-
.../CaffeineIdempotentRepositoryTest.java | 1 +
.../src/main/docs/cql-component.adoc | 26 +-
.../component/cassandra/CassandraEndpoint.java | 2 +
.../component/cassandra/CassandraProducer.java | 1 +
.../cassandra/CassandraComponentBeanRefTest.java | 7 +-
.../CassandraAggregationRepositoryTest.java | 2 +
.../NamedCassandraAggregationRepositoryTest.java | 2 +
.../CassandraIdempotentRepositoryTest.java | 2 +
.../NamedCassandraIdempotentRepositoryTest.java | 2 +
.../camel-cbor/src/main/docs/cbor-dataformat.adoc | 10 +-
components/camel-cdi/src/main/docs/cdi.adoc | 353 +------
.../org/apache/camel/cdi/AnnotatedDelegate.java | 9 +
.../org/apache/camel/cdi/CamelContextProducer.java | 4 +-
.../camel/cdi/CdiCamelBeanPostProcessor.java | 78 --
.../org/apache/camel/cdi/CdiCamelExtension.java | 28 +-
.../org/apache/camel/cdi/CdiEventEndpoint.java | 18 -
.../java/org/apache/camel/cdi/ContextName.java | 97 --
.../java/org/apache/camel/cdi/ContextNames.java | 28 -
.../org/apache/camel/cdi/SyntheticAnnotated.java | 6 +
.../org/apache/camel/cdi/XmlCdiBeanFactory.java | 9 +-
.../camel/cdi/XmlErrorHandlerFactoryBean.java | 3 +
.../transaction/JtaTransactionErrorHandler.java | 1 +
.../JtaTransactionErrorHandlerBuilder.java | 2 +
.../cdi/transaction/TransactionErrorHandler.java | 4 +
.../camel/cdi/xml/CamelContextFactoryBean.java | 60 ++
.../camel/cdi/xml/ErrorHandlerDefinition.java | 11 +
.../cdi/bean/EndpointInjectWrongContextRoute.java | 36 -
.../camel/cdi/bean/FirstCamelContextBean.java | 3 +-
.../cdi/bean/FirstCamelContextConvertingRoute.java | 5 +-
.../bean/FirstCamelContextEndpointInjectRoute.java | 5 +-
.../bean/FirstCamelContextEventConsumingRoute.java | 3 -
.../bean/FirstCamelContextEventProducingRoute.java | 3 -
.../bean/FirstCamelContextProduceTemplateBean.java | 30 -
.../bean/FirstCamelContextPropertyInjectBean.java | 38 -
.../camel/cdi/bean/FirstCamelContextRoute.java | 5 +-
.../camel/cdi/bean/FirstNamedCamelContextBean.java | 2 -
.../cdi/bean/FirstNamedCamelContextRoute.java | 5 +-
.../camel/cdi/bean/SecondCamelContextBean.java | 4 +-
.../bean/SecondCamelContextConvertingRoute.java | 7 +-
.../SecondCamelContextEndpointInjectRoute.java | 34 -
.../SecondCamelContextEventConsumingRoute.java | 6 +-
.../SecondCamelContextEventProducingRoute.java | 6 +-
.../SecondCamelContextProduceTemplateBean.java | 30 -
.../bean/SecondCamelContextPropertyInjectBean.java | 38 -
.../cdi/bean/SecondNamedCamelContextBean.java | 2 -
.../cdi/bean/SecondNamedCamelContextRoute.java | 7 +-
.../InjectedTypeConverterMultipleContextsTest.java | 120 ---
.../cdi/test/MultiCamelContextProducerTest.java | 168 ----
.../MultiCamelContextReusedRouteCdi20Test.java | 118 ---
.../camel/cdi/test/MultiCamelContextTest.java | 159 ---
.../cdi/test/MultiContextConsumerTemplateTest.java | 123 ---
.../cdi/test/MultiContextEndpointInjectTest.java | 137 ---
.../cdi/test/MultiContextEventEndpointTest.java | 190 ----
.../cdi/test/MultiContextEventNotifierTest.java | 300 ------
.../cdi/test/MultiContextProduceTemplateTest.java | 157 ---
.../cdi/test/MultiContextProducerTemplateTest.java | 137 ---
.../cdi/test/MultiContextPropertyInjectTest.java | 193 ----
.../cdi/test/QualifiedMultiCamelContextTest.java | 173 ----
.../cdi/test/RouteBuilderWithContextNameTest.java | 93 --
.../test/RouteBuildersWithContextNamesTest.java | 113 ---
.../test/RouteBuildersWithSameContextNameTest.java | 91 --
.../UnsatisfiedContextForEndpointInjectTest.java | 58 --
.../cdi/test/UriQualifierWithContextTest.java | 12 +-
.../camel/cdi/test/UriWithWrongContextTest.java | 6 +-
.../camel/cdi/test/XmlMultiContextsTest.java | 142 ---
.../src/main/docs/chatscript-component.adoc | 12 +-
.../component/chatscript/ChatScriptComponent.java | 1 +
.../component/chatscript/ChatScriptEndpoint.java | 2 +
.../component/chatscript/ChatScriptProducer.java | 1 +
.../camel-chunk/src/main/docs/chunk-component.adoc | 22 +-
.../camel/component/chunk/ChunkLetterTest.java | 1 +
.../src/main/docs/cm-sms-component.adoc | 12 +-
.../camel-cmis/src/main/docs/cmis-component.adoc | 22 +-
.../apache/camel/component/cmis/CMISComponent.java | 1 +
.../apache/camel/component/cmis/CMISProducer.java | 292 +++++-
.../camel/component/cmis/CMISQueryProducer.java | 1 +
.../camel/component/cmis/CMISSessionFacade.java | 4 +
.../camel/component/cmis/CamelCMISActions.java | 44 +
.../camel/component/cmis/CamelCMISConstants.java | 6 +
.../cmis/exception/CamelCmisException.java | 40 +
.../CamelCmisObjectNotFoundException.java | 39 +
.../exception/CamelCmisUnauthorizedException.java | 39 +
.../camel/component/cmis/CMISProducerTest.java | 269 ++++--
.../camel/component/cmis/CMISTestSupport.java | 10 +-
.../camel-coap/src/main/docs/coap-component.adoc | 14 +-
.../org/apache/camel/coap/CamelCoapResource.java | 2 +-
.../java/org/apache/camel/coap/CoAPComponent.java | 1 +
.../java/org/apache/camel/coap/CoAPProducer.java | 1 +
.../org/apache/camel/coap/CoAPTestSupport.java | 1 +
.../src/main/docs/cometd-component.adoc | 22 +-
.../camel/component/cometd/CometdConsumer.java | 2 +
.../camel/component/cometd/CometdEndpoint.java | 3 +
.../camel/component/cometd/CometdProducer.java | 3 +
...oducerConsumerInteractiveAuthenticatedMain.java | 5 +
...tdProducerConsumerInteractiveExtensionMain.java | 5 +
components/camel-consul/pom.xml | 2 +-
.../src/main/docs/consul-component.adoc | 14 +-
.../consul/endpoint/ConsulCatalogProducer.java | 2 +-
.../consul/endpoint/ConsulCoordinatesProducer.java | 2 +-
.../consul/endpoint/ConsulEventProducer.java | 2 +-
.../consul/endpoint/ConsulHealthProducer.java | 2 +-
.../consul/endpoint/ConsulKeyValueProducer.java | 2 +-
.../endpoint/ConsulPreparedQueryProducer.java | 2 +-
.../consul/endpoint/ConsulSessionProducer.java | 2 +-
...erviceRegistrationWithServiceComponentTest.java | 1 +
.../src/main/docs/controlbus-component.adoc | 18 +-
.../camel-corda/src/main/docs/corda-component.adoc | 16 +-
.../camel/component/corda/CordaComponent.java | 1 +
.../camel/component/corda/CordaProducer.java | 3 +-
.../src/main/docs/couchbase-component.adoc | 14 +-
.../component/couchbase/CouchbaseConsumer.java | 1 +
.../src/main/docs/couchdb-component.adoc | 18 +-
.../component/couchdb/CouchDbChangesetTracker.java | 1 +
.../src/main/docs/crypto-cms-component.adoc | 14 +-
.../cms/common/CryptoCmsMarshallerAbstract.java | 2 +-
...DefaultEnvelopedDataDecryptorConfiguration.java | 1 +
.../cms/crypt/DefaultKeyTransRecipientInfo.java | 1 +
.../crypto/cms/crypt/EnvelopedDataDecryptor.java | 2 +-
.../DefaultSignedDataVerifierConfiguration.java | 1 +
.../crypto/cms/sig/DefaultSignerInfo.java | 1 +
.../crypto/cms/sig/SignedDataVerifier.java | 2 +-
.../camel/component/crypto/cms/ComponentTest.java | 1 +
.../camel/component/crypto/cms/ProcessorsTest.java | 1 +
.../component/crypto/cms/SpringComponentTest.java | 3 +-
.../src/main/docs/crypto-component.adoc | 30 +-
.../src/main/docs/crypto-dataformat.adoc | 20 +-
.../camel-crypto/src/main/docs/pgp-dataformat.adoc | 26 +-
.../crypto/DigitalSignatureComponent.java | 1 +
.../crypto/DigitalSignatureConfiguration.java | 2 +
.../component/crypto/DigitalSignatureEndpoint.java | 2 +
.../component/crypto/DigitalSignatureProducer.java | 1 +
.../crypto/processor/SigningProcessor.java | 1 +
.../crypto/processor/VerifyingProcessor.java | 1 +
.../camel/converter/crypto/CryptoDataFormat.java | 5 +-
.../converter/crypto/PGPKeyAccessDataFormat.java | 4 +-
.../camel/component/crypto/ECDSASignatureTest.java | 1 +
.../camel/component/crypto/SignatureTest.java | 59 +-
.../component/crypto/SpringSignatureTest.java | 11 +-
.../converter/crypto/CryptoDataFormatTest.java | 1 +
.../converter/crypto/PGPDataFormatDynamicTest.java | 1 +
.../converter/crypto/PGPDataFormatElGamalTest.java | 2 +
.../camel/converter/crypto/PGPDataFormatTest.java | 1 +
.../crypto/PGPDataFormatWithProvider.java | 1 +
.../crypto/PGPKeyAccessDataFormatTest.java | 1 +
.../crypto/SpringCryptoDataFormatTest.java | 1 +
.../SpringPGPDataFormatNoPassPhraseTest.java | 1 +
.../converter/crypto/SpringPGPDataFormatTest.java | 1 +
.../camel-csv/src/main/docs/csv-dataformat.adoc | 24 +-
.../apache/camel/dataformat/csv/CsvDataFormat.java | 2 +
.../camel/dataformat/csv/CsvUnmarshaller.java | 1 +
.../dataformat/csv/CsvMarshalCharsetTest.java | 1 +
...MarshalHeaderWithCustomMarshallFactoryTest.java | 1 +
.../camel/dataformat/csv/CsvRouteCharsetTest.java | 1 +
.../apache/camel/dataformat/csv/CsvRouteTest.java | 1 +
.../dataformat/csv/CsvUnmarshalStreamTest.java | 1 +
.../src/main/docs/cxf-transport.adoc | 20 +-
.../cxf/common/header/SoapMessageHeaderFilter.java | 2 +
.../common/message/DefaultCxfMessageMapper.java | 6 +-
.../component/cxf/transport/CamelConduit.java | 4 +
.../component/cxf/transport/CamelDestination.java | 10 +
.../component/cxf/transport/CamelOutputStream.java | 3 +
.../cxf/transport/CamelTransportFactory.java | 6 +
.../blueprint/CamelTransportNameSpaceHandler.java | 3 +
.../AbstractCamelContextBeanDefinitionParser.java | 1 +
.../cxf/transport/spring/NamespaceHandler.java | 1 +
.../component/cxf/transport/CamelConduitTest.java | 2 +
.../cxf/transport/CamelDestinationTest.java | 2 +
.../cxf/transport/CamelTransportTestSupport.java | 2 +
.../cxf/transport/JaxWSCamelConduitTest.java | 1 +
.../cxf/transport/JaxWSCamelDestinationTest.java | 1 +
components/camel-cxf/pom.xml | 2 +-
.../camel-cxf/src/main/docs/cxf-component.adoc | 105 +-
.../camel-cxf/src/main/docs/cxfrs-component.adoc | 28 +-
.../camel/component/cxf/CxfBlueprintEndpoint.java | 2 +
.../camel/component/cxf/CxfClientCallback.java | 2 +
.../apache/camel/component/cxf/CxfConsumer.java | 1 +
.../apache/camel/component/cxf/CxfEndpoint.java | 5 +
.../org/apache/camel/component/cxf/CxfPayload.java | 1 +
.../apache/camel/component/cxf/CxfProducer.java | 2 +
.../camel/component/cxf/CxfSpringEndpoint.java | 5 +-
.../camel/component/cxf/DefaultCxfBinding.java | 18 +-
.../component/cxf/DefaultPayloadProviderSEI.java | 1 +
.../component/cxf/WSDLServiceFactoryBean.java | 3 +
.../cxf/blueprint/CxfNamespaceHandler.java | 4 +
.../cxf/blueprint/RsClientBlueprintBean.java | 4 +
.../cxf/blueprint/RsServerBlueprintBean.java | 4 +
.../cxf/converter/DelegatingXMLStreamReader.java | 34 +
.../component/cxf/converter/NodeListWrapper.java | 2 +
.../ConfigureDocLitWrapperInterceptor.java | 1 +
.../CxfMessageSoapHeaderOutInterceptor.java | 1 +
.../OneWayOutgoingChainInterceptor.java | 1 +
.../RawMessageContentRedirectInterceptor.java | 1 +
.../interceptors/RawMessageWSDLGetInterceptor.java | 1 +
.../RawMessageWSDLGetOutInterceptor.java | 1 +
.../interceptors/SetSoapVersionInterceptor.java | 1 +
.../camel/component/cxf/jaxrs/CxfRsEndpoint.java | 4 +
.../camel/component/cxf/jaxrs/CxfRsInvoker.java | 1 +
.../camel/component/cxf/jaxrs/CxfRsProducer.java | 4 +
.../component/cxf/jaxrs/CxfRsSpringEndpoint.java | 2 +
.../component/cxf/jaxrs/DefaultCxfRsBinding.java | 11 +-
.../component/cxf/jaxrs/SimpleCxfRsBinding.java | 2 +-
.../component/cxf/spring/NamespaceHandler.java | 1 +
.../component/cxf/spring/SpringBusFactoryBean.java | 5 +
.../cxf/spring/SpringJAXRSClientFactoryBean.java | 7 +-
.../cxf/spring/SpringJAXRSServerFactoryBean.java | 3 +
.../component/cxf/util/DataInInterceptor.java | 1 +
.../component/cxf/util/DataOutInterceptor.java | 1 +
.../cxf/AbstractCXFGreeterRouterTest.java | 2 +
.../camel/component/cxf/CXFGreeterEnrichTest.java | 1 +
.../camel/component/cxf/CXFGreeterRouterTest.java | 1 +
.../CXFWsdlOnlyPayloadModeNoSpringSoap12Test.java | 1 +
.../camel/component/cxf/CXFWsdlOnlyTest.java | 3 +
...fConsumerClientDisconnectedSynchronousTest.java | 1 +
.../cxf/CxfConsumerClientDisconnectedTest.java | 1 +
.../cxf/CxfConsumerContinuationTimeoutTest.java | 1 +
.../component/cxf/CxfConsumerMessageTest.java | 1 +
.../cxf/CxfConsumerPayLoadConvertorTest.java | 1 +
.../CxfConsumerPayloadFaultCauseEnabledTest.java | 1 +
.../component/cxf/CxfConsumerPayloadTest.java | 1 +
.../component/cxf/CxfConsumerProviderTest.java | 1 +
.../component/cxf/CxfConsumerResponseTest.java | 1 +
.../component/cxf/CxfConsumerStreamCacheTest.java | 1 +
.../camel/component/cxf/CxfConsumerTest.java | 1 +
.../component/cxf/CxfConsumerWithTryCatchTest.java | 2 +
.../cxf/CxfConusmerNamespacePayLoadTest.java | 2 +
.../component/cxf/CxfCustomizedExceptionTest.java | 2 +
.../cxf/CxfGreeterConverterRouterTest.java | 1 +
.../cxf/CxfMessageStreamExceptionTest.java | 1 +
.../component/cxf/CxfMixedModeRouterTest.java | 1 +
.../camel/component/cxf/CxfNonWrapperTest.java | 2 +
.../camel/component/cxf/CxfOneWayRouteTest.java | 1 +
.../component/cxf/CxfPayLoadBareSoapTest.java | 1 +
.../component/cxf/CxfPayLoadMessageRouterTest.java | 1 +
.../cxf/CxfPayLoadMessageXmlBindingRouterTest.java | 3 +
.../cxf/CxfPayLoadSoapHeaderSpringTest.java | 4 +
.../CxfPayLoadSoapHeaderViaCamelHeaderTest.java | 1 +
...dConsumerDuplicateNamespaceStreamCacheTest.java | 1 +
.../CxfPayloadConsumerNamespaceOnEnvelopeTest.java | 2 +
.../CxfPayloadProducerNamespaceOnEnvelopeTest.java | 2 +
.../cxf/CxfPayloadProviderRouterTest.java | 1 +
.../cxf/CxfPayloadRouterContentLengthTest.java | 2 +
.../component/cxf/CxfProducerOperationTest.java | 4 +
.../cxf/CxfProducerProtocalHeaderTest.java | 1 +
.../camel/component/cxf/CxfProducerRouterTest.java | 1 +
.../component/cxf/CxfProducerSessionTest.java | 1 +
.../component/cxf/CxfProducerSoapActionTest.java | 1 +
.../cxf/CxfProducerSynchronousFalseTest.java | 1 +
.../component/cxf/CxfProducerSynchronousTest.java | 1 +
.../component/cxf/CxfRawMessageRouterTest.java | 1 +
.../camel/component/cxf/CxfSimpleRouterTest.java | 2 +
.../cxf/CxfSimpleRouterWithUnwrappedStyleTest.java | 5 +
.../cxf/CxfSpringCustomizedExceptionTest.java | 2 +
.../camel/component/cxf/CxfSpringRouterTest.java | 2 +
.../component/cxf/CxfWsdlFirstPayloadModeTest.java | 2 +
.../component/cxf/CxfWsdlFirstProcessorTest.java | 1 +
.../camel/component/cxf/CxfWsdlFirstTest.java | 1 +
.../component/cxf/EchoServiceSessionImpl.java | 1 +
.../camel/component/cxf/HelloServiceImpl.java | 6 +
.../cxf/JaxWsWebFaultAnnotationToFaultTest.java | 1 +
.../camel/component/cxf/ParameterProcessor.java | 1 +
.../camel/component/cxf/RouteBuilderCxfTracer.java | 4 +
.../camel/component/cxf/ServiceProvider.java | 1 +
.../camel/component/cxf/SoapMessageProvider.java | 1 +
.../apache/camel/component/cxf/TestCxfFeature.java | 1 +
.../cxf/WriteXmlDeclarationInterceptor.java | 1 +
.../converter/CxfPayLoadStreamCacheRouterTest.java | 1 +
.../cxf/converter/PayLoadConvertToPOJOTest.java | 2 +
.../component/cxf/holder/CXFHolderRouteTest.java | 1 +
.../cxf/holder/CxfHolderConsumerTest.java | 1 +
.../camel/component/cxf/holder/MyProcessor.java | 1 +
.../cxf/jaxrs/CxfRsAsyncProducerTest.java | 1 +
.../CxfRsBindingConfigurationSelectionTest.java | 1 +
...sConsumerClientDisconnectedSynchronousTest.java | 1 +
.../jaxrs/CxfRsConsumerClientDisconnectedTest.java | 1 +
.../component/cxf/jaxrs/CxfRsConsumerTest.java | 4 +
.../cxf/jaxrs/CxfRsConsumerWithBeanTest.java | 1 +
.../cxf/jaxrs/CxfRsConvertBodyToTest.java | 1 +
.../jaxrs/CxfRsProducerAddressOverrideTest.java | 1 +
.../jaxrs/CxfRsProducerEndpointConfigurerTest.java | 1 +
.../cxf/jaxrs/CxfRsProducerHeaderTest.java | 1 +
.../component/cxf/jaxrs/CxfRsProducerTest.java | 1 +
.../cxf/jaxrs/CxfRsSpringConsumerTest.java | 1 +
.../component/cxf/jaxrs/CxfRsStreamCacheTest.java | 1 +
.../component/cxf/jaxrs/JettyCxfRsRouterTest.java | 3 +-
.../CxfRsConsumerSimpleBindingTest.java | 3 +
.../cxf/jms/CxfEndpointJMSConsumerTest.java | 3 +
.../cxf/mtom/CxfJavaMtomProducerPayloadTest.java | 1 +
.../cxf/mtom/CxfMtomConsumerPayloadModeTest.java | 1 +
.../component/cxf/mtom/CxfMtomConsumerTest.java | 3 +-
.../CxfMtomDisabledConsumerPayloadModeTest.java | 1 +
.../component/cxf/multipart/CXFMultiPartTest.java | 3 +
.../cxf/soap/headers/CustomHeaderFilter.java | 4 +-
.../soap/headers/CxfMessageHeadersRelayTest.java | 2 +
.../component/cxf/spring/CxfEndpointBeanTest.java | 1 +
.../cxf/spring/CxfEndpointBeanWithBusTest.java | 1 +
.../cxf/spring/CxfEndpointBeansRouterTest.java | 1 +
.../camel/component/cxf/spring/MyProcessor.java | 1 +
.../cxf/transport/CxfRsCamelTransportTest.java | 1 +
.../cxf/util/CxfEndpointUtilsWithSpringTest.java | 4 +
.../component/cxf/util/SplitterWithXqureyTest.java | 1 +
.../camel/component/cxf/wsa/WSAddressingTest.java | 1 +
.../camel/component/cxf/wsrm/HelloWorldImpl.java | 1 +
.../component/cxf/wsrm/MessageLossSimulator.java | 1 +
.../camel/component/cxf/wsrm/MyProcessor.java | 1 +
.../cxf/wssecurity/client/UTPasswordCallback.java | 1 +
.../cxf/wssecurity/server/UTPasswordCallback.java | 1 +
.../apache/camel/non_wrapper/PersonProcessor.java | 1 +
.../apache/camel/wsdl_first/JaxwsTestHandler.java | 7 +-
.../apache/camel/wsdl_first/PersonProcessor.java | 1 +
.../src/main/docs/dataformat-component.adoc | 14 +-
.../src/main/docs/dataset-component.adoc | 33 +-
.../src/main/docs/dataset-test-component.adoc | 17 +-
.../camel/component/dataset/DataSetSupport.java | 4 +
.../camel/component/dataset/ListDataSet.java | 1 +
.../camel/component/dataset/SimpleDataSet.java | 1 +
.../src/main/docs/digitalocean-component.adoc | 40 +-
.../digitalocean/DigitalOceanComponent.java | 1 +
.../digitalocean/DigitalOceanEndpoint.java | 2 +
.../producer/DigitalOceanAccountProducer.java | 1 +
.../producer/DigitalOceanActionsProducer.java | 1 +
.../DigitalOceanBlockStoragesProducer.java | 1 +
.../producer/DigitalOceanDropletsProducer.java | 1 +
.../producer/DigitalOceanFloatingIPsProducer.java | 1 +
.../producer/DigitalOceanImagesProducer.java | 1 +
.../producer/DigitalOceanKeysProducer.java | 1 +
.../producer/DigitalOceanRegionsProducer.java | 1 +
.../producer/DigitalOceanSizesProducer.java | 1 +
.../producer/DigitalOceanSnapshotsProducer.java | 1 +
.../producer/DigitalOceanTagsProducer.java | 1 +
.../src/main/docs/direct-component.adoc | 16 +-
.../camel/component/direct/DirectComponent.java | 1 +
.../camel/component/direct/DirectConsumer.java | 3 +
.../camel/component/direct/DirectEndpoint.java | 2 +
.../camel/component/direct/DirectProducer.java | 2 +
.../src/main/docs/direct-vm-component.adoc | 14 +-
.../directvm/DirectVmBlockingProducer.java | 2 +
.../camel/component/directvm/DirectVmProducer.java | 2 +-
.../src/main/docs/disruptor-component.adoc | 26 +-
.../component/disruptor/DisruptorProducer.java | 4 +-
.../MultipleConsumerSynchronizedExchange.java | 1 +
.../disruptor/SedaDisruptorCompareTest.java | 1 +
.../vm/DisruptorVmShouldNotUseSameThreadTest.java | 1 +
.../camel-dns/src/main/docs/dns-component.adoc | 24 +-
.../apache/camel/component/dns/DnsComponent.java | 1 +
.../component/dns/policy/DnsActivationPolicy.java | 7 +
.../camel/component/dns/DnsDigEndpointTest.java | 1 +
.../camel/component/dns/DnsIpEndpointTest.java | 1 +
.../component/dns/DnsIpHeaderTransferTest.java | 1 +
.../camel/component/dns/DnsLookupEndpointTest.java | 1 +
.../camel/component/dns/WikipediaEndpointTest.java | 1 +
.../src/main/docs/docker-component.adoc | 18 +-
.../docker/consumer/DockerEventsConsumer.java | 1 +
.../docker/consumer/DockerStatsConsumer.java | 1 +
.../component/docker/producer/DockerProducer.java | 1 +
.../camel-dozer/src/main/docs/dozer-component.adoc | 24 +-
.../camel/component/dozer/DozerComponent.java | 1 +
.../camel/component/dozer/DozerProducer.java | 2 +-
.../converter/dozer/DozerTypeConverterLoader.java | 2 +
.../camel-drill/src/main/docs/drill-component.adoc | 16 +-
.../camel/component/drill/DrillEndpoint.java | 2 +
.../src/main/docs/dropbox-component.adoc | 54 +-
.../camel/component/dropbox/DropboxComponent.java | 1 +
.../camel/component/dropbox/DropboxEndpoint.java | 2 +
.../component/dropbox/core/DropboxAPIFacade.java | 2 +-
.../src/main/docs/ehcache-component.adoc | 22 +-
.../camel/component/ehcache/EhcacheComponent.java | 10 +-
.../component/ehcache/EhcacheConfiguration.java | 10 +-
.../camel/component/ehcache/EhcacheProducer.java | 2 +-
.../EhcacheIdempotentRepositoryTest.java | 1 +
components/camel-ejb/pom.xml | 117 ---
.../camel-ejb/src/main/docs/ejb-component.adoc | 225 -----
.../apache/camel/component/ejb/EjbComponent.java | 88 --
.../apache/camel/component/ejb/EjbEndpoint.java | 32 -
.../camel/component/ejb/EjbRegistryBean.java | 45 -
.../camel/component/ejb/GreaterCamelBeanTest.java | 60 --
.../ejb/GreaterCamelEjbPropertiesTest.java | 68 --
.../camel/component/ejb/GreaterCamelEjbTest.java | 78 --
.../apache/camel/component/ejb/GreaterImpl.java | 34 -
.../apache/camel/component/ejb/GreaterLocal.java | 27 -
.../apache/camel/component/ejb/GreaterTest.java | 50 -
.../component/ejb/SpringGreaterCamelEjbTest.java | 46 -
.../src/test/resources/META-INF/ejb-jar.xml | 20 -
.../camel-ejb/src/test/resources/log4j2.properties | 32 -
.../component/ejb/SpringGreaterCamelEjbTest.xml | 52 -
.../main/docs/elasticsearch-rest-component.adoc | 22 +-
.../elasticsearch/ElasticsearchComponent.java | 1 +
.../elasticsearch/ElasticsearchEndpoint.java | 2 +
.../elasticsearch/ElasticsearchProducer.java | 1 +
.../ElasticsearchScrollRequestIterator.java | 1 +
.../camel-elsql/src/main/docs/elsql-component.adoc | 20 +-
.../camel/component/elsql/ElsqlEndpoint.java | 2 +
.../elsql/ElsqlSqlPrepareStatementStrategy.java | 3 +
.../camel/component/elsql/ElSqlComponentTest.java | 1 +
.../component/elsql/ElSqlConsumerDeleteTest.java | 2 +
.../elsql/ElSqlConsumerDynamicParameterTest.java | 1 +
.../camel/component/elsql/ElSqlConsumerTest.java | 1 +
.../camel/component/elsql/ElSqlDataSourceTest.java | 1 +
.../component/elsql/ElSqlProducerBatchTest.java | 1 +
.../elsql/ElSqlProducerBodySimpleTest.java | 1 +
.../elsql/ElSqlProducerStreamListTest.java | 1 +
components/camel-etcd/pom.xml | 2 +-
.../camel-etcd/src/main/docs/etcd-component.adoc | 12 +-
.../camel/component/etcd/EtcdTestSupport.java | 1 +
.../src/main/docs/eventadmin-component.adoc | 18 +-
.../component/eventadmin/EventAdminConsumer.java | 1 +
.../component/eventadmin/EventAdminEndpoint.java | 3 +
.../component/eventadmin/EventAdminProducer.java | 1 +
.../camel-exec/src/main/docs/exec-component.adoc | 30 +-
.../apache/camel/component/exec/ExecEndpoint.java | 2 +
.../apache/camel/component/exec/ExecProducer.java | 1 +
.../component/exec/impl/DefaultExecBinding.java | 2 +
.../component/exec/ExecutableJavaProgram.java | 2 +
.../exec/impl/ExecCommandExecutorMock.java | 1 +
.../src/main/docs/facebook-component.adoc | 24 +-
.../component/facebook/FacebookComponent.java | 1 +
.../camel/component/facebook/FacebookEndpoint.java | 2 +
.../src/main/docs/json-fastjson-dataformat.adoc | 8 +-
.../component/fastjson/FastjsonDataFormat.java | 2 +-
.../src/main/docs/fhir-component.adoc | 10 +-
.../src/main/docs/fhirJson-dataformat.adoc | 10 +-
.../src/main/docs/fhirXml-dataformat.adoc | 10 +-
.../apache/camel/component/fhir/FhirEndpoint.java | 3 +
.../fhir/FhirCustomClientConfigurationIT.java | 1 -
.../Hl7v2PatientToFhirPatientIntegrationTest.java | 1 +
.../fhir/dataformat/FhirJsonDataFormatTest.java | 1 +
.../FhirJsonDataformatErrorHandlerTest.java | 1 +
.../fhir/dataformat/FhirXmlDataFormatTest.java | 1 +
.../FhirXmlDataformatErrorHandlerTest.java | 1 +
.../src/main/docs/file-watch-component.adoc | 22 +-
.../component/file/watch/FileWatchComponent.java | 1 +
.../component/file/watch/FileWatchEndpoint.java | 1 +
.../camel-file/src/main/docs/file-component.adoc | 84 +-
.../component/file/AntPathMatcherFileFilter.java | 1 +
.../file/AntPathMatcherGenericFileFilter.java | 1 +
.../apache/camel/component/file/FileBinding.java | 3 +
.../apache/camel/component/file/FileComponent.java | 2 +
.../apache/camel/component/file/FileEndpoint.java | 3 +
.../camel/component/file/FileOperations.java | 12 +
.../apache/camel/component/file/GenericFile.java | 1 +
.../camel/component/file/GenericFileComponent.java | 1 +
.../component/file/GenericFileConfiguration.java | 1 +
.../camel/component/file/GenericFileConsumer.java | 2 +
.../component/file/GenericFileDefaultBinding.java | 3 +
.../camel/component/file/GenericFileEndpoint.java | 2 +
.../component/file/GenericFileOnCompletion.java | 2 +
.../camel/component/file/GenericFileProducer.java | 1 +
...dempotentChangedRepositoryReadLockStrategy.java | 7 +
...IdempotentRenameRepositoryReadLockStrategy.java | 7 +
.../FileIdempotentRepositoryReadLockStrategy.java | 7 +
.../strategy/GenericFileExpressionRenamer.java | 1 +
.../GenericFileProcessStrategySupport.java | 5 +
.../src/main/docs/flatpack-component.adoc | 32 +-
.../src/main/docs/flatpack-dataformat.adoc | 10 +-
.../camel/component/flatpack/DataSetList.java | 2 +
.../component/flatpack/FlatpackComponent.java | 1 +
.../camel/component/flatpack/FlatpackEndpoint.java | 2 +
.../camel/component/flatpack/FlatpackProducer.java | 1 +
.../dataformat/flatpack/FlatpackDataFormat.java | 2 +
.../camel-flink/src/main/docs/flink-component.adoc | 20 +-
.../camel/component/flink/FlinkProducerTest.java | 34 +-
.../camel-fop/src/main/docs/fop-component.adoc | 20 +-
.../apache/camel/component/fop/FopComponent.java | 1 +
.../apache/camel/component/fop/FopEndpoint.java | 2 +
.../apache/camel/component/fop/FopProducer.java | 1 +
.../src/main/docs/freemarker-component.adoc | 26 +-
.../component/freemarker/FreemarkerComponent.java | 1 +
.../FreemarkerBodyAsDomainObjectTest.java | 2 +
.../freemarker/FreemarkerConcurrentTest.java | 1 +
.../freemarker/FreemarkerContentCacheTest.java | 2 +
.../freemarker/FreemarkerEncodingTest.java | 1 +
.../freemarker/FreemarkerEndpointTest.java | 1 +
.../freemarker/FreemarkerFileLetterTest.java | 1 +
.../component/freemarker/FreemarkerLetterTest.java | 1 +
.../FreemarkerLetterWithoutHeaderTest.java | 1 +
.../freemarker/FreemarkerTemplateInHeaderTest.java | 1 +
.../camel/component/freemarker/FreemarkerTest.java | 1 +
.../FreemarkerValuesInPropertiesTest.java | 1 +
.../camel-ftp/src/main/docs/ftp-component.adoc | 60 +-
.../camel-ftp/src/main/docs/ftps-component.adoc | 10 +-
.../camel-ftp/src/main/docs/sftp-component.adoc | 8 +-
.../camel/component/file/remote/FtpComponent.java | 1 +
.../camel/component/file/remote/FtpConsumer.java | 1 +
.../camel/component/file/remote/FtpEndpoint.java | 2 +
.../camel/component/file/remote/FtpOperations.java | 17 +
.../camel/component/file/remote/FtpsEndpoint.java | 1 +
.../component/file/remote/RemoteFileConsumer.java | 1 +
.../component/file/remote/RemoteFileProducer.java | 2 +
.../camel/component/file/remote/SftpComponent.java | 1 +
.../camel/component/file/remote/SftpConsumer.java | 1 +
.../camel/component/file/remote/SftpEndpoint.java | 2 +
.../component/file/remote/SftpOperations.java | 21 +
.../FtpChangedExclusiveReadLockStrategy.java | 1 +
.../SftpChangedExclusiveReadLockStrategy.java | 1 +
...LWithClientAuthAndSSLContextParametersTest.java | 11 +-
.../FileToFtpsExplicitSSLWithClientAuthTest.java | 1 +
...lientAuthAndGlobalSSLContextParametersTest.java | 1 +
...thoutClientAuthAndSSLContextParametersTest.java | 11 +-
...FileToFtpsExplicitSSLWithoutClientAuthTest.java | 1 +
...SWithClientAuthAndSSLContextParametersTest.java | 24 +-
.../FileToFtpsExplicitTLSWithClientAuthTest.java | 1 +
...thoutClientAuthAndSSLContextParametersTest.java | 11 +-
...FileToFtpsExplicitTLSWithoutClientAuthTest.java | 1 +
...LWithClientAuthAndSSLContextParametersTest.java | 11 +-
.../FileToFtpsImplicitSSLWithClientAuthTest.java | 1 +
...thoutClientAuthAndSSLContextParametersTest.java | 11 +-
...FileToFtpsImplicitSSLWithoutClientAuthTest.java | 1 +
...SWithClientAuthAndSSLContextParametersTest.java | 11 +-
.../FileToFtpsImplicitTLSWithClientAuthTest.java | 1 +
...thoutClientAuthAndSSLContextParametersTest.java | 11 +-
...FileToFtpsImplicitTLSWithoutClientAuthTest.java | 1 +
...psWithCustomKeyAndTrustStorePropertiesTest.java | 1 +
...leToFtpsWithCustomTrustStorePropertiesTest.java | 1 +
.../FileToFtpsWithDefaultSettingsIPV6Test.java | 1 +
.../remote/FileToFtpsWithDefaultSettingsTest.java | 1 +
.../FileToFtpsWithFtpClientConfigRefTest.java | 27 +-
.../remote/FromFilePercentSignInPasswordTest.java | 1 +
...lePercentSignInPasswordUserInfoEncodedTest.java | 1 +
.../FromFilePercentSignInPasswordUserInfoTest.java | 1 +
...FromFileToFtpDefaultRootRenameStrategyTest.java | 2 +
.../file/remote/FromFileToFtpDeleteTest.java | 1 +
.../file/remote/FromFileToFtpNotStepwiseTest.java | 1 +
.../component/file/remote/FromFileToFtpTest.java | 1 +
.../file/remote/FromFileToFtpWithChmodTest.java | 1 +
.../remote/FromFileTransferLoggingLevelTest.java | 1 +
.../FromFileTransferLoggingLevelVerboseTest.java | 1 +
.../file/remote/FromFtpActivePortRangeTest.java | 1 +
.../file/remote/FromFtpAsyncProcessTest.java | 1 +
.../file/remote/FromFtpClientConfigRefTest.java | 11 +-
.../file/remote/FromFtpClientDataTimeoutTest.java | 1 +
.../file/remote/FromFtpClientSoTimeout2Test.java | 1 +
.../file/remote/FromFtpClientSoTimeoutTest.java | 1 +
.../remote/FromFtpDeleteFileNotStepwiseTest.java | 1 +
.../file/remote/FromFtpDeleteFileTest.java | 1 +
.../remote/FromFtpDirectoryToBinaryFilesTest.java | 1 +
.../FromFtpDoNotDeleteFileIfProcessFailsTest.java | 1 +
.../FromFtpExclusiveReadNoneStrategyTest.java | 1 +
.../file/remote/FromFtpFilterNotStepwiseTest.java | 1 +
.../component/file/remote/FromFtpFilterTest.java | 18 +-
.../FromFtpKeepLastModifiedNotStepwiseTest.java | 1 +
...FileAbsoluteFolderRecursiveNotStepwiseTest.java | 1 +
...FromFtpMoveFileAbsoluteFolderRecursiveTest.java | 1 +
.../remote/FromFtpMoveFileNotStepwiseTest.java | 1 +
.../FromFtpMoveFilePostfixNotStepwiseTest.java | 1 +
.../file/remote/FromFtpMoveFilePostfixTest.java | 1 +
.../FromFtpMoveFilePrefixNotStepwiseTest.java | 1 +
.../file/remote/FromFtpMoveFilePrefixTest.java | 1 +
.../FromFtpMoveFileRecursiveNotStepwiseTest.java | 1 +
.../file/remote/FromFtpMoveFileRecursiveTest.java | 1 +
.../component/file/remote/FromFtpMoveFileTest.java | 1 +
...FileToHiddenFolderRecursiveNotStepwiseTest.java | 1 +
...FromFtpMoveFileToHiddenFolderRecursiveTest.java | 1 +
...tPathRelativeMoveToAbsoluteNotStepwiseTest.java | 1 +
...tpNoEndpointPathRelativeMoveToAbsoluteTest.java | 1 +
.../component/file/remote/FromFtpNoFilesTest.java | 1 +
.../remote/FromFtpNoopIdempotentFalseTest.java | 1 +
.../component/file/remote/FromFtpNoopTest.java | 1 +
.../file/remote/FromFtpNotDownloadTest.java | 1 +
.../file/remote/FromFtpPassiveModeTest.java | 1 +
.../file/remote/FromFtpPollFileOnlyTest.java | 1 +
.../FromFtpPreMoveDeleteNotStepwiseTest.java | 1 +
.../file/remote/FromFtpPreMoveDeleteTest.java | 1 +
.../remote/FromFtpPreMoveFileExpressionTest.java | 1 +
.../FromFtpPreMoveFilePostfixNotStepwiseTest.java | 1 +
.../file/remote/FromFtpPreMoveFilePostfixTest.java | 1 +
.../FromFtpPreMoveFilePrefixNotStepwiseTest.java | 1 +
.../file/remote/FromFtpPreMoveFilePrefixTest.java | 1 +
.../remote/FromFtpPreMoveNoopNotStepwiseTest.java | 1 +
.../file/remote/FromFtpPreMoveNoopTest.java | 1 +
.../FromFtpRecursiveNoopNotStepwiseTest.java | 1 +
.../file/remote/FromFtpRegexPatternTest.java | 1 +
.../FromFtpRemoteFileFilterDirectoryTest.java | 31 +-
.../file/remote/FromFtpRemoteFileFilterTest.java | 30 +-
.../file/remote/FromFtpRemoteFileSorterTest.java | 23 +-
.../file/remote/FromFtpSedaDeleteFileTest.java | 1 +
.../FromFtpServerLanguageCodeAndTimeoutTest.java | 1 +
.../file/remote/FromFtpServerLanguageCodeTest.java | 1 +
.../FromFtpSetNamesWithMultiDirectoriesTest.java | 1 +
...tPathRelativeMoveToAbsoluteNotStepwiseTest.java | 1 +
...leNoEndpointPathRelativeMoveToAbsoluteTest.java | 1 +
...tPathRelativeMoveToRelativeNotStepwiseTest.java | 1 +
...leNoEndpointPathRelativeMoveToRelativeTest.java | 1 +
...impleRelativeMoveToAbsoluteNotStepwiseTest.java | 1 +
.../FromFtpSimpleRelativeMoveToAbsoluteTest.java | 1 +
...impleRelativeMoveToRelativeNotStepwiseTest.java | 1 +
.../FromFtpSimpleRelativeMoveToRelativeTest.java | 1 +
.../FromFtpSimulateNetworkIssueRecoverTest.java | 17 +-
.../FromFtpStartingDirAndFileNameClashTest.java | 1 +
.../file/remote/FromFtpThirdPoolOkTest.java | 1 +
.../FromFtpToAsciiFileNoBodyConversionTest.java | 1 +
.../file/remote/FromFtpToAsciiFileTest.java | 1 +
.../file/remote/FromFtpToBinaryFileTest.java | 1 +
.../file/remote/FromFtpToBinaryFilesTest.java | 1 +
.../file/remote/FromFtpToBinarySampleTest.java | 1 +
.../remote/FromFtpToFileNoFileNameHeaderTest.java | 1 +
.../component/file/remote/FromFtpToMockTest.java | 1 +
.../file/remote/FromFtpTwoSlashesIssueTest.java | 1 +
.../file/remote/FromFtpUseListFalseTest.java | 1 +
.../remote/FromQueueThenConsumeFtpToMockTest.java | 1 +
.../component/file/remote/FtpAnonymousTest.java | 1 +
.../file/remote/FtpBadLoginConnectionLeakTest.java | 14 +-
.../FtpBadLoginInProducerConnectionLeakTest.java | 14 +-
.../FtpBadLoginMockNoopConnectionLeakTest.java | 14 +-
.../FtpChangedReadLockFastExistCheckTest.java | 1 +
.../remote/FtpChangedReadLockLoggingLevelTest.java | 1 +
.../file/remote/FtpChangedReadLockTimeoutTest.java | 1 +
...tpChangedRootDirReadLockFastExistCheckTest.java | 1 +
.../file/remote/FtpConnectTimeoutTest.java | 1 +
.../file/remote/FtpConsumerAbsolutePathTest.java | 1 +
.../file/remote/FtpConsumerBodyAsStringTest.java | 1 +
.../FtpConsumerDirectoriesNotMatchedTest.java | 1 +
.../FtpConsumerDoneFileNameFixedStepwiseTest.java | 1 +
.../FtpConsumerDoneFileNameStepwiseTest.java | 1 +
.../file/remote/FtpConsumerExcludeNameTest.java | 1 +
.../file/remote/FtpConsumerFileSplitTest.java | 1 +
.../remote/FtpConsumerIPV6BodyAsStringTest.java | 1 +
.../remote/FtpConsumerIdempotentMemoryRefTest.java | 10 +-
.../file/remote/FtpConsumerIdempotentRefTest.java | 19 +-
.../file/remote/FtpConsumerIncludeNameTest.java | 1 +
...nsumerLocalWorkDirectoryAsAbsolutePathTest.java | 1 +
.../FtpConsumerLocalWorkDirectoryDirectTest.java | 1 +
.../remote/FtpConsumerLocalWorkDirectoryTest.java | 1 +
...onsumerLocalWorkDirectoryWorkOnPayloadTest.java | 1 +
.../remote/FtpConsumerMaxMessagesPerPollTest.java | 1 +
.../file/remote/FtpConsumerMoveExpressionTest.java | 17 +-
.../remote/FtpConsumerMultipleDirectoriesTest.java | 1 +
.../FtpConsumerNotEagerMaxMessagesPerPollTest.java | 1 +
.../remote/FtpConsumerProcessStrategyTest.java | 21 +-
.../file/remote/FtpConsumerResumeDownloadTest.java | 1 +
.../file/remote/FtpConsumerSkipDotFilesTest.java | 1 +
...FtpConsumerThrowExceptionOnLoginFailedTest.java | 15 +-
.../FtpConsumerUsingFTPClientConfigTest.java | 13 +-
.../file/remote/FtpConsumerWithCharsetTest.java | 1 +
.../remote/FtpConsumerWithNoFileOptionTest.java | 1 +
.../FtpNoReconnectAttemptUnknownHostTest.java | 1 +
.../remote/FtpProducerConnectErrorsHeaderTest.java | 1 +
.../file/remote/FtpProducerExpressionTest.java | 25 +-
...rrideNotEagerDeleteTargetFileTwoUploadTest.java | 1 +
.../remote/FtpProducerFileFastExistFailTest.java | 1 +
.../remote/FtpProducerMultipleSiteCommandTest.java | 12 +-
.../FtpReconnectAttemptServerStoppedTest.java | 1 +
.../remote/FtpReconnectAttemptUnknownHostTest.java | 1 +
.../component/file/remote/FtpSoTimeoutTest.java | 10 +-
...ServerExplicitSSLWithClientAuthTestSupport.java | 3 +
...verExplicitSSLWithoutClientAuthTestSupport.java | 3 +
...ServerExplicitTLSWithClientAuthTestSupport.java | 3 +
...verExplicitTLSWithoutClientAuthTestSupport.java | 3 +
...ServerImplicitSSLWithClientAuthTestSupport.java | 3 +
...verImplicitSSLWithoutClientAuthTestSupport.java | 3 +
...ServerImplicitTLSWithClientAuthTestSupport.java | 3 +
...verImplicitTLSWithoutClientAuthTestSupport.java | 3 +
.../remote/ToFtpTempFileTargetFileExistTest.java | 1 +
.../sftp/SftpConsumerProcessStrategyTest.java | 19 +-
.../remote/sftp/SftpFromSedaDeleteFileTest.java | 1 +
.../file/remote/sftp/SftpKeyConsumeTest.java | 16 +-
.../sftp/SftpSimpleConsumeThroughProxyTest.java | 11 +-
.../sftp/SftpSimpleProduceThroughProxyTest.java | 11 +-
.../src/main/docs/ganglia-component.adoc | 22 +-
.../camel/component/ganglia/GangliaEndpoint.java | 2 +
.../camel/component/ganglia/GangliaProducer.java | 1 +
.../src/main/docs/geocoder-component.adoc | 18 +-
.../component/geocoder/GeoCoderComponent.java | 1 +
.../camel/component/geocoder/GeoCoderEndpoint.java | 2 +
.../camel/component/geocoder/GeoCoderProducer.java | 1 +
.../camel-git/src/main/docs/git-component.adoc | 16 +-
.../apache/camel/component/git/GitComponent.java | 1 +
.../git/consumer/AbstractGitConsumer.java | 1 +
.../src/main/docs/github-component.adoc | 16 +-
.../camel/component/github/GitHubComponent.java | 1 +
.../camel/component/github/GitHubEndpoint.java | 2 +
.../github/consumer/AbstractGitHubConsumer.java | 1 +
.../github/producer/AbstractGitHubProducer.java | 1 +
.../github/producer/ClosePullRequestProducer.java | 1 +
.../github/producer/CreateIssueProducer.java | 1 +
.../github/producer/GetCommitFileProducer.java | 1 +
.../producer/PullRequestCommentProducer.java | 1 +
.../github/producer/PullRequestFilesProducer.java | 1 +
.../github/producer/PullRequestStateProducer.java | 1 +
.../github/services/MockPullRequestService.java | 1 +
.../src/main/docs/google-bigquery-component.adoc | 24 +-
.../main/docs/google-bigquery-sql-component.adoc | 18 +-
.../google/bigquery/GoogleBigQueryEndpoint.java | 1 +
.../bigquery/sql/GoogleBigQuerySQLEndpoint.java | 1 +
.../bigquery/integration/BigQueryTestSupport.java | 11 +-
.../src/main/docs/google-calendar-component.adoc | 20 +-
.../docs/google-calendar-stream-component.adoc | 14 +-
.../src/main/docs/google-drive-component.adoc | 20 +-
.../google/drive/GoogleDriveEndpoint.java | 3 +
.../google/drive/CustomClientFactoryTest.java | 12 +-
.../drive/GoogleDriveFilesConverterTest.java | 1 +
.../src/main/docs/google-mail-component.adoc | 20 +-
.../main/docs/google-mail-stream-component.adoc | 14 +-
.../src/main/docs/google-pubsub-component.adoc | 24 +-
.../google/pubsub/GooglePubsubEndpoint.java | 3 +
.../component/google/pubsub/PubsubTestSupport.java | 11 +-
.../src/main/docs/google-sheets-component.adoc | 20 +-
.../main/docs/google-sheets-stream-component.adoc | 14 +-
.../camel-gora/src/main/docs/gora-component.adoc | 24 +-
.../apache/camel/component/gora/GoraEndpoint.java | 1 +
.../camel/component/gora/GoraProducerTest.java | 1 +
.../camel-grape/src/main/docs/grape-component.adoc | 28 +-
.../camel-grok/src/main/docs/grok-dataformat.adoc | 16 +-
.../src/main/docs/groovy-language.adoc | 22 +-
.../camel/language/groovy/GroovyExpression.java | 2 +
.../camel/language/groovy/GroovyLanguage.java | 2 +
.../camel/language/groovy/GroovyLanguageTest.java | 1 +
.../camel/language/groovy/GroovyListMapTest.java | 1 +
.../camel-grpc/src/main/docs/grpc-component.adoc | 26 +-
.../apache/camel/component/grpc/GrpcComponent.java | 1 +
.../apache/camel/component/grpc/GrpcEndpoint.java | 2 +
.../component/grpc/GrpcConsumerConcurrentTest.java | 1 +
.../src/main/docs/json-gson-dataformat.adoc | 8 +-
.../camel/component/gson/GsonConcurrentTest.java | 1 +
.../src/main/docs/guava-eventbus-component.adoc | 18 +-
.../guava/eventbus/GuavaEventBusComponentTest.java | 11 +-
.../guava/eventbus/GuavaEventBusConsumerTest.java | 20 +-
.../GuavaEventBusConsumingDeadEventsTest.java | 17 +-
.../guava/eventbus/GuavaEventBusProducerTest.java | 11 +-
.../main/docs/hazelcast-atomicvalue-component.adoc | 22 +-
.../main/docs/hazelcast-instance-component.adoc | 12 +-
.../src/main/docs/hazelcast-list-component.adoc | 22 +-
.../src/main/docs/hazelcast-map-component.adoc | 24 +-
.../main/docs/hazelcast-multimap-component.adoc | 22 +-
.../src/main/docs/hazelcast-queue-component.adoc | 38 +-
.../docs/hazelcast-replicatedmap-component.adoc | 20 +-
.../main/docs/hazelcast-ringbuffer-component.adoc | 16 +-
.../src/main/docs/hazelcast-seda-component.adoc | 14 +-
.../src/main/docs/hazelcast-set-component.adoc | 10 +-
.../src/main/docs/hazelcast-topic-component.adoc | 16 +-
.../camel-hazelcast/src/main/docs/hazelcast.adoc | 16 +-
.../hazelcast/HazelcastDefaultEndpoint.java | 2 +
.../component/hazelcast/HazelcastOperation.java | 1 +
.../HazelcastAtomicnumberEndpoint.java | 2 +
.../HazelcastAtomicnumberProducer.java | 1 +
.../instance/HazelcastInstanceConsumer.java | 3 +
.../instance/HazelcastInstanceEndpoint.java | 2 +
.../hazelcast/list/HazelcastListProducer.java | 1 +
.../hazelcast/listener/CamelEntryListener.java | 6 +
.../hazelcast/listener/CamelItemListener.java | 2 +
.../hazelcast/listener/CamelMessageListener.java | 1 +
.../hazelcast/map/HazelcastMapEndpoint.java | 2 +
.../hazelcast/map/HazelcastMapProducer.java | 1 +
.../multimap/HazelcastMultimapEndpoint.java | 2 +
.../multimap/HazelcastMultimapProducer.java | 1 +
.../queue/HazelcastQueueConsumerMode.java | 1 +
.../hazelcast/queue/HazelcastQueueProducer.java | 1 +
.../HazelcastReplicatedmapEndpoint.java | 2 +
.../HazelcastReplicatedmapProducer.java | 1 +
.../ringbuffer/HazelcastRingbufferEndpoint.java | 2 +
.../ringbuffer/HazelcastRingbufferProducer.java | 1 +
.../hazelcast/seda/HazelcastSedaConsumer.java | 1 +
.../hazelcast/seda/HazelcastSedaEndpoint.java | 2 +
.../hazelcast/seda/HazelcastSedaProducer.java | 1 +
.../hazelcast/set/HazelcastSetProducer.java | 1 +
.../hazelcast/topic/HazelcastTopicProducer.java | 1 +
.../HazelcastSedaConcurrentConsumersTest.java | 1 -
...tSedaRecoverableConsumerNewTransactionTest.java | 2 +
...zelcastSedaRecoverableConsumerRollbackTest.java | 2 +
.../HazelcastIdempotentRepositoryTest.java | 3 +
.../camel-hbase/src/main/docs/hbase-component.adoc | 38 +-
.../camel/component/hbase/HBaseComponent.java | 1 +
.../camel/component/hbase/HBaseEndpoint.java | 2 +
.../camel/component/hbase/HBaseProducer.java | 1 +
.../filters/ModelAwareColumnMatchingFilter.java | 1 +
.../hbase/mapping/BodyMappingStrategy.java | 2 +
.../hbase/mapping/HeaderMappingStrategy.java | 2 +
.../camel/component/hbase/model/HBaseCell.java | 1 +
.../component/hbase/CamelHBaseFilterTest.java | 13 +-
.../component/hbase/CamelHBaseTestSupport.java | 2 +
.../idempotent/HBaseIdempotentRepositoryTest.java | 2 +
components/camel-hdfs/pom.xml | 186 ++++
.../camel-hdfs/src/main/docs/hdfs-component.adoc | 323 +++++++
.../camel/component/hdfs2/HdfsComponent.java | 83 ++
.../component/hdfs2/HdfsCompressionCodec.java | 0
.../camel/component/hdfs2/HdfsConfiguration.java | 514 ++++++++++
.../camel/component/hdfs2/HdfsConstants.java | 0
.../apache/camel/component/hdfs2/HdfsConsumer.java | 197 ++++
.../apache/camel/component/hdfs2/HdfsEndpoint.java | 62 ++
.../camel/component/hdfs2/HdfsFileSystemType.java | 0
.../apache/camel/component/hdfs2/HdfsFileType.java | 0
.../apache/camel/component/hdfs2/HdfsHeader.java | 0
.../org/apache/camel/component/hdfs2/HdfsInfo.java | 0
.../camel/component/hdfs2/HdfsInfoFactory.java | 0
.../camel/component/hdfs2/HdfsInputStream.java | 0
.../camel/component/hdfs2/HdfsOsgiHelper.java | 58 ++
.../camel/component/hdfs2/HdfsOutputStream.java | 0
.../apache/camel/component/hdfs2/HdfsProducer.java | 0
.../component/hdfs2/HdfsWritableFactories.java | 0
.../org/apache/camel/component/hdfs2/Holder.java | 0
.../apache/camel/component/hdfs2/WritableType.java | 0
.../camel/component/hdfs2/osgi/HdfsActivator.java | 0
.../camel/component/hdfs2/FromFileToHdfsTest.java | 113 +++
.../camel/component/hdfs2/HdfsConsumerTest.java | 581 +++++++++++
.../component/hdfs2/HdfsProducerConsumerTest.java | 95 ++
.../component/hdfs2/HdfsProducerSplitTest.java | 136 +++
.../camel/component/hdfs2/HdfsProducerTest.java | 425 ++++++++
.../camel/component/hdfs2/HdfsTestSupport.java | 0
.../hdfs2/integration/HdfsAppendTest.java | 130 +++
.../HdfsProducerConsumerIntegrationTest.java | 139 +++
.../src/test/resources/hdfs-default.xml | 0
.../src/test/resources/hdfs-test.xml | 0
.../src/test/resources/log4j2.properties | 28 +
components/camel-hdfs2/pom.xml | 186 ----
.../camel-hdfs2/src/main/docs/hdfs2-component.adoc | 323 -------
.../camel/component/hdfs2/HdfsComponent.java | 82 --
.../camel/component/hdfs2/HdfsConfiguration.java | 514 ----------
.../apache/camel/component/hdfs2/HdfsConsumer.java | 196 ----
.../apache/camel/component/hdfs2/HdfsEndpoint.java | 62 --
.../camel/component/hdfs2/HdfsOsgiHelper.java | 58 --
.../camel/component/hdfs2/FromFileToHdfsTest.java | 112 ---
.../camel/component/hdfs2/HdfsConsumerTest.java | 580 -----------
.../component/hdfs2/HdfsProducerConsumerTest.java | 94 --
.../component/hdfs2/HdfsProducerSplitTest.java | 135 ---
.../camel/component/hdfs2/HdfsProducerTest.java | 424 --------
.../hdfs2/integration/HdfsAppendTest.java | 130 ---
.../HdfsProducerConsumerIntegrationTest.java | 139 ---
.../src/test/resources/log4j2.properties | 28 -
.../src/main/docs/hipchat-component.adoc | 26 +-
.../camel/component/hipchat/HipchatComponent.java | 1 +
.../camel/component/hipchat/HipchatEndpoint.java | 2 +
.../camel/component/hipchat/HipchatProducer.java | 1 +
.../HipchatComponentCustomHttpClientTest.java | 12 +-
.../hipchat/HipchatEPSuccessTestSupport.java | 1 +
.../HipchatConsumerIntegrationTest.java | 1 +
.../HipchatProducerIntegrationTest.java | 1 +
.../camel-hl7/src/main/docs/hl7-dataformat.adoc | 26 +-
.../src/main/docs/hl7terser-language.adoc | 10 +-
.../apache/camel/component/hl7/HL7DataFormat.java | 2 +
.../apache/camel/component/hl7/HL7MLLPCodec.java | 2 +
.../apache/camel/component/hl7/HL7MLLPEncoder.java | 1 +
.../camel/component/hl7/HL7ByteArrayRouteTest.java | 53 +-
.../camel/component/hl7/HL7DataFormatTest.java | 1 +
.../component/hl7/HL7MLLPCodecBoundaryTest.java | 14 +-
.../camel/component/hl7/HL7MLLPCodecLongTest.java | 17 +-
.../hl7/HL7MLLPCodecMessageFloodingTest.java | 39 +-
.../component/hl7/HL7MLLPCodecPlainStringTest.java | 35 +-
.../hl7/HL7MLLPCodecStandAndEndBytesTest.java | 41 +-
.../camel/component/hl7/HL7MLLPCodecTest.java | 42 +-
.../hl7/HL7MLLPNettyCodecBoundaryTest.java | 25 +-
.../hl7/HL7MLLPNettyCodecByteArrayRouteTest.java | 58 +-
.../component/hl7/HL7MLLPNettyCodecLongTest.java | 22 +-
.../hl7/HL7MLLPNettyCodecStandAndEndBytesTest.java | 44 +-
.../camel/component/hl7/HL7MLLPNettyCodecTest.java | 50 +-
.../hl7/HL7MLLPNettyDecoderResourceLeakTest.java | 38 +-
.../component/hl7/HL7MLLPNettyRouteToTest.java | 60 +-
.../camel/component/hl7/HL7NettyRouteTest.java | 56 +-
.../apache/camel/component/hl7/HL7RouteTest.java | 47 +-
.../camel/component/hl7/HL7ValidateTest.java | 1 +
.../camel/component/hl7/HL7XmlDataFormatTest.java | 1 +
.../camel/http/common/CamelFileDataSource.java | 3 +
.../org/apache/camel/http/common/CamelServlet.java | 1 +
.../camel/http/common/DefaultHttpBinding.java | 26 +-
.../camel/http/common/HttpCommonEndpoint.java | 7 +-
.../org/apache/camel/http/common/HttpConsumer.java | 1 +
.../camel/http/common/HttpSendDynamicAware.java | 2 +-
.../UrlRewriteHttpServletRequestAdapter.java | 1 +
.../http/common/HttpHeaderFilterStrategyTest.java | 1 +
.../http/common/HttpSendDynamicAwareTest.java | 16 -
.../http/common/cookie/CookieHandlerTest.java | 1 +
components/camel-http/pom.xml | 123 +++
.../camel-http/src/main/docs/http-component.adoc | 725 ++++++++++++++
.../BasicAuthenticationHttpClientConfigurer.java | 52 +
.../component/http4/CompositeHttpConfigurer.java | 57 ++
.../component/http4/HttpClientConfigurer.java | 0
.../camel/component/http4/HttpComponent.java | 668 +++++++++++++
.../http4/HttpComponentVerifierExtension.java | 248 +++++
.../camel/component/http4/HttpConstants.java | 0
.../component/http4/HttpDeleteWithBodyMethod.java | 37 +
.../apache/camel/component/http4/HttpEndpoint.java | 542 +++++++++++
.../camel/component/http4/HttpEntityConverter.java | 0
.../apache/camel/component/http4/HttpMethods.java | 69 ++
.../component/http4/HttpMethodsConverter.java | 40 +
.../camel/component/http4/HttpPollingConsumer.java | 177 ++++
.../apache/camel/component/http4/HttpProducer.java | 582 +++++++++++
.../component/http4/HttpSendDynamicAware.java | 24 +
.../org/apache/camel/component/http4/HttpUtil.java | 0
.../camel/component/http4/NoopCookieStore.java | 0
.../component/http4/PreemptiveAuthInterceptor.java | 51 +
.../component/http4/ProxyHttpClientConfigurer.java | 72 ++
.../http4/cloud/Http4ServiceExpression.java | 32 +
.../http4/cloud/Http4ServiceExpressionFactory.java | 30 +
.../component/http4/helper/HttpMethodHelper.java | 0
.../org/apache/camel/component/http4/package.html | 0
.../src/test/data/logo.jpeg | Bin
.../http4/AdviceAndInterceptHttp4IssueTest.java | 95 ++
.../apache/camel/component/http4/BaseHttpTest.java | 0
.../camel/component/http4/BaseHttpsTest.java | 0
.../http4/CamelComponentVerifierExtensionTest.java | 262 +++++
.../http4/CamelComponentVerifierTest.java | 261 +++++
.../camel/component/http4/GoogleUrlRewrite.java | 0
.../camel/component/http4/HeaderFilteringTest.java | 0
.../component/http4/HttpAuthenticationTest.java | 140 +++
.../apache/camel/component/http4/HttpBodyTest.java | 131 +++
.../http4/HttpBodyWithOtherProtocalNameTest.java | 39 +
.../component/http4/HttpBridgeEndpointTest.java | 119 +++
.../http4/HttpCamelHeadersNotCopiedTest.java | 0
.../component/http4/HttpCamelHeadersTest.java | 125 +++
.../camel/component/http4/HttpCharsetTest.java | 110 +++
.../component/http4/HttpClientConfigurerTest.java | 45 +
.../camel/component/http4/HttpCompressionTest.java | 202 ++++
.../camel/component/http4/HttpConcurrentTest.java | 123 +++
.../http4/HttpCustomComponentNameTest.java | 0
.../component/http4/HttpDefaultPortNumberTest.java | 152 +++
.../http4/HttpDisableStreamCacheTest.java | 84 ++
.../HttpEndpointOptionsNotChangeComponentTest.java | 82 ++
.../camel/component/http4/HttpEndpointURLTest.java | 71 ++
.../http4/HttpInvalidConfigurationTest.java | 59 ++
.../HttpInvalidHttpClientConfigurationTest.java | 59 ++
.../camel/component/http4/HttpMethodsTest.java | 238 +++++
.../component/http4/HttpNoCamelHeaderTest.java | 100 ++
.../http4/HttpNoConnectionRedeliveryTest.java | 101 ++
.../component/http4/HttpNoConnectionTest.java | 84 ++
.../apache/camel/component/http4/HttpPathTest.java | 113 +++
.../component/http4/HttpPollingConsumerTest.java | 97 ++
.../http4/HttpProducerConnectionCloseTest.java | 99 ++
.../http4/HttpProducerContentLengthTest.java | 135 +++
.../http4/HttpProducerContentTypeTest.java | 112 +++
.../HttpProducerContentTypeWithSemiColomnTest.java | 112 +++
.../HttpProducerExplicitConnectionCloseTest.java | 82 ++
.../http4/HttpProducerSelectMethodTest.java | 199 ++++
.../component/http4/HttpProducerSessionTest.java | 117 +++
.../HttpProducerTwoHeadersWithSameKeyTest.java | 125 +++
.../HttpProducerTwoParametersWithSameKeyTest.java | 96 ++
.../HttpProducerWithSystemPropertiesTest.java | 92 ++
.../camel/component/http4/HttpProxyServerTest.java | 172 ++++
.../camel/component/http4/HttpQueryTest.java | 100 ++
.../camel/component/http4/HttpRedirectTest.java | 123 +++
.../http4/HttpReferenceParameterTest.java | 97 ++
.../camel/component/http4/HttpSNIHostNameTest.java | 0
.../camel/component/http4/HttpSOTimeoutTest.java | 97 ++
.../component/http4/HttpSendDynamicAwareTest.java | 89 ++
.../component/http4/HttpServerTestSupport.java | 0
.../http4/HttpThrowExceptionOnFailureTest.java | 125 +++
.../component/http4/HttpWithHttpUriHeaderTest.java | 67 ++
.../component/http4/HttpsAuthenticationTest.java | 101 ++
.../apache/camel/component/http4/HttpsGetTest.java | 78 ++
.../component/http4/HttpsServerTestSupport.java | 0
.../http4/HttpsSslContextParametersGetTest.java | 70 ++
...psTwoComponentsSslContextParametersGetTest.java | 103 ++
...tpsTwoDifferentSslContextParametersGetTest.java | 96 ++
.../http4/ManagedHttpProducerPoolStatsTest.java | 130 +++
.../camel/component/http4/UrlRewriteTest.java | 58 ++
.../handler/AuthenticationValidationHandler.java | 55 ++
.../handler/BasicRawQueryValidationHandler.java | 46 +
.../http4/handler/BasicValidationHandler.java | 96 ++
.../http4/handler/DelayValidationHandler.java | 47 +
.../http4/handler/DrinkValidationHandler.java | 0
.../http4/handler/HeaderValidationHandler.java | 67 ++
.../ProxyAuthenticationValidationHandler.java | 56 ++
.../http4/handler/SessionReflectionHandler.java | 0
.../component/http4/helper/HttpHelperTest.java | 0
.../http4/rest/RestCamelComponentVerifierTest.java | 178 ++++
.../src/test/resources/localhost.ks | Bin
.../src/test/resources/log4j2.properties | 0
.../camel/component/http4/CamelHttp4Context.xml | 0
components/camel-http4/pom.xml | 114 ---
.../camel-http4/src/main/docs/http4-component.adoc | 732 --------------
.../BasicAuthenticationHttpClientConfigurer.java | 51 -
.../component/http4/CompositeHttpConfigurer.java | 56 --
.../camel/component/http4/HttpComponent.java | 678 -------------
.../http4/HttpComponentVerifierExtension.java | 248 -----
.../component/http4/HttpDeleteWithBodyMethod.java | 36 -
.../apache/camel/component/http4/HttpEndpoint.java | 539 -----------
.../apache/camel/component/http4/HttpMethods.java | 68 --
.../component/http4/HttpMethodsConverter.java | 40 -
.../camel/component/http4/HttpPollingConsumer.java | 172 ----
.../apache/camel/component/http4/HttpProducer.java | 581 -----------
.../component/http4/HttpSendDynamicAware.java | 24 -
.../component/http4/PreemptiveAuthInterceptor.java | 50 -
.../component/http4/ProxyHttpClientConfigurer.java | 71 --
.../http4/cloud/Http4ServiceExpression.java | 32 -
.../http4/cloud/Http4ServiceExpressionFactory.java | 30 -
.../http4/AdviceAndInterceptHttp4IssueTest.java | 95 --
.../http4/CamelComponentVerifierExtensionTest.java | 262 -----
.../http4/CamelComponentVerifierTest.java | 261 -----
.../component/http4/HttpAuthenticationTest.java | 140 ---
.../apache/camel/component/http4/HttpBodyTest.java | 131 ---
.../http4/HttpBodyWithOtherProtocalNameTest.java | 38 -
.../component/http4/HttpBridgeEndpointTest.java | 119 ---
.../component/http4/HttpCamelHeadersTest.java | 124 ---
.../camel/component/http4/HttpCharsetTest.java | 110 ---
.../component/http4/HttpClientConfigurerTest.java | 45 -
.../camel/component/http4/HttpCompressionTest.java | 200 ----
.../camel/component/http4/HttpConcurrentTest.java | 123 ---
.../component/http4/HttpDefaultPortNumberTest.java | 152 ---
.../http4/HttpDisableStreamCacheTest.java | 84 --
.../HttpEndpointOptionsNotChangeComponentTest.java | 84 --
.../camel/component/http4/HttpEndpointURLTest.java | 71 --
.../http4/HttpInvalidConfigurationTest.java | 59 --
.../HttpInvalidHttpClientConfigurationTest.java | 59 --
.../camel/component/http4/HttpMethodsTest.java | 238 -----
.../component/http4/HttpNoCamelHeaderTest.java | 100 --
.../http4/HttpNoConnectionRedeliveryTest.java | 101 --
.../component/http4/HttpNoConnectionTest.java | 84 --
.../apache/camel/component/http4/HttpPathTest.java | 113 ---
.../component/http4/HttpPollingConsumerTest.java | 97 --
.../http4/HttpProducerConnectionCloseTest.java | 99 --
.../http4/HttpProducerContentLengthTest.java | 135 ---
.../http4/HttpProducerContentTypeTest.java | 112 ---
.../HttpProducerContentTypeWithSemiColomnTest.java | 112 ---
.../HttpProducerExplicitConnectionCloseTest.java | 82 --
.../http4/HttpProducerSelectMethodTest.java | 199 ----
.../component/http4/HttpProducerSessionTest.java | 117 ---
.../HttpProducerTwoHeadersWithSameKeyTest.java | 125 ---
.../HttpProducerTwoParametersWithSameKeyTest.java | 96 --
.../HttpProducerWithSystemPropertiesTest.java | 92 --
.../camel/component/http4/HttpProxyServerTest.java | 170 ----
.../camel/component/http4/HttpQueryTest.java | 100 --
.../camel/component/http4/HttpRedirectTest.java | 122 ---
.../http4/HttpReferenceParameterTest.java | 100 --
.../camel/component/http4/HttpSOTimeoutTest.java | 97 --
.../component/http4/HttpSendDynamicAwareTest.java | 89 --
.../http4/HttpThrowExceptionOnFailureTest.java | 125 ---
.../component/http4/HttpWithHttpUriHeaderTest.java | 67 --
.../component/http4/HttpsAuthenticationTest.java | 104 --
.../apache/camel/component/http4/HttpsGetTest.java | 81 --
.../http4/HttpsSslContextParametersGetTest.java | 69 --
...psTwoComponentsSslContextParametersGetTest.java | 101 --
...tpsTwoDifferentSslContextParametersGetTest.java | 97 --
.../http4/ManagedHttpProducerPoolStatsTest.java | 130 ---
.../camel/component/http4/UrlRewriteTest.java | 62 --
.../handler/AuthenticationValidationHandler.java | 54 --
.../handler/BasicRawQueryValidationHandler.java | 45 -
.../http4/handler/BasicValidationHandler.java | 95 --
.../http4/handler/DelayValidationHandler.java | 46 -
.../http4/handler/HeaderValidationHandler.java | 66 --
.../ProxyAuthenticationValidationHandler.java | 55 --
.../http4/rest/RestCamelComponentVerifierTest.java | 178 ----
.../camel-hystrix/src/main/docs/hystrix.adoc | 4 +-
.../hystrix/processor/HystrixProcessorCommand.java | 6 +-
.../HystrixProcessorCommandFallbackViaNetwork.java | 2 +-
.../camel-ical/src/main/docs/ical-dataformat.adoc | 10 +-
.../src/main/docs/iec60870-client-component.adoc | 12 +-
.../src/main/docs/iec60870-server-component.adoc | 12 +-
.../src/main/docs/ignite-cache-component.adoc | 12 +-
.../src/main/docs/ignite-compute-component.adoc | 14 +-
.../src/main/docs/ignite-events-component.adoc | 10 +-
.../src/main/docs/ignite-idgen-component.adoc | 10 +-
.../src/main/docs/ignite-messaging-component.adoc | 12 +-
.../src/main/docs/ignite-queue-component.adoc | 12 +-
.../src/main/docs/ignite-set-component.adoc | 12 +-
components/camel-ignite/src/main/docs/ignite.adoc | 14 +-
.../src/main/docs/infinispan-component.adoc | 595 +++++++++++-
.../component/infinispan/InfinispanConsumer.java | 10 +-
.../infinispan/InfinispanCustomListener.java | 1 +
.../component/infinispan/InfinispanProducer.java | 2 +-
.../infinispan/InfinispanClusterTestSupport.java | 14 +-
.../InfinispanClusteredConsumerTest.java | 24 +-
.../InfinispanConsumerEntryCreatedTest.java | 18 +-
.../InfinispanConsumerEntryRemovedTest.java | 18 +-
.../InfinispanConsumerEntryUpdatedTest.java | 18 +-
.../InfinispanConsumerEntryVisitedTest.java | 18 +-
.../infinispan/InfinispanContinuousQueryIT.java | 33 +-
.../InfinispanLocalConsumerCustomListenerIT.java | 18 +-
.../infinispan/InfinispanLocalConsumerTest.java | 24 +-
.../InfinispanRemoteQueryProducerIT.java | 21 +-
.../infinispan/InfinispanTestSupport.java | 10 +-
.../infinispan/MyEmbeddedCustomListener.java | 1 +
.../src/main/docs/influxdb-component.adoc | 16 +-
.../camel-iota/src/main/docs/iota-component.adoc | 16 +-
.../apache/camel/component/iota/IOTAComponent.java | 1 +
.../apache/camel/component/iota/IOTAEndpoint.java | 2 +
.../apache/camel/component/iota/IOTAProducer.java | 1 +
.../camel-ipfs/src/main/docs/ipfs-component.adoc | 18 +-
.../camel-irc/src/main/docs/irc-component.adoc | 24 +-
.../apache/camel/component/irc/IrcComponent.java | 2 +
.../camel/component/irc/IrcConfiguration.java | 1 +
.../apache/camel/component/irc/IrcEndpoint.java | 4 +
.../apache/camel/component/irc/IrcProducer.java | 1 +
.../component/irc/it/IrcMultiChannelRouteTest.java | 1 +
.../camel/component/irc/it/IrcOnReplyTest.java | 2 +
.../camel/component/irc/it/IrcPrivmsgTest.java | 1 +
.../camel/component/irc/it/IrcRouteTest.java | 3 +
.../irc/it/IrcsWithSslContextParamsRouteTest.java | 12 +-
.../src/main/docs/ironmq-component.adoc | 24 +-
.../camel/component/ironmq/IronMQEndpoint.java | 2 +
.../camel/component/ironmq/IronMQProducer.java | 1 +
.../component/ironmq/FromQueueToQueueTest.java | 14 +-
.../src/main/docs/json-jackson-dataformat.adoc | 10 +-
.../camel/component/jackson/JacksonDataFormat.java | 4 +
.../component/jackson/JacksonConcurrentTest.java | 1 +
.../component/jackson/JacksonModuleRefTest.java | 10 +-
.../JacksonNotUseDefaultObjectMapperTest.java | 12 +-
.../jackson/JacksonObjectMapperRegistryTest.java | 12 +-
.../src/main/docs/jacksonxml-dataformat.adoc | 28 +-
.../component/jacksonxml/JacksonXMLDataFormat.java | 4 +
.../jacksonxml/JacksonConcurrentTest.java | 1 +
.../component/jacksonxml/JacksonModuleRefTest.java | 10 +-
components/camel-jasypt/src/main/docs/jasypt.adoc | 16 +-
.../org/apache/camel/component/jasypt/Main.java | 2 +
.../camel-jaxb/src/main/docs/jaxb-dataformat.adoc | 30 +-
.../converter/jaxb/FilteringXmlStreamWriter.java | 32 +
.../camel/converter/jaxb/JaxbDataFormat.java | 4 +
.../camel/converter/jaxb/NonXmlFilterReader.java | 1 +
.../camel/example/DataFormatComponentTest.java | 1 +
.../camel/example/DataFormatDataSetTest.java | 1 +
.../org/apache/camel/example/DataFormatTest.java | 1 +
.../example/JaxbConcurrentDataFormatTest.java | 1 +
.../camel/example/SpringDataFormatPartialTest.java | 1 +
.../apache/camel/example/SpringDataFormatTest.java | 1 +
.../example/SpringDataFormatWithEncodingTest.java | 1 +
...aFormatWithMarshalAndUnmarshalUsingRefTest.java | 1 +
...WithMarshalAndUnmarshalUsingSpringBeanTest.java | 1 +
.../org/apache/camel/example/UnmarshalTest.java | 1 +
...melJaxbNoNamespaceSchemaLocationSpringTest.java | 1 +
.../org/apache/camel/jaxb/CamelJaxbSpringTest.java | 1 +
.../jaxb/JaxbMarshalNamespacePrefixMapperTest.java | 12 +-
.../camel-jbpm/src/main/docs/jbpm-component.adoc | 32 +-
.../src/main/docs/jcache-component.adoc | 36 +-
.../component/jcache/JCacheConfigurationTest.java | 28 +-
.../camel/component/jcache/JCacheConsumerTest.java | 27 +-
.../policy/CacheManagerFromRegistryTest.java | 31 +-
.../idempotent/JCacheIdempotentRepositoryTest.java | 2 +
.../src/main/docs/jclouds-component.adoc | 34 +-
.../jclouds/JcloudsBlobStoreConsumer.java | 1 +
.../camel/component/jclouds/JcloudsComponent.java | 1 +
.../component/jclouds/JcloudsComputeEndpoint.java | 16 +
.../jclouds/JcloudsSpringComputeTest.java | 1 +
.../camel-jcr/src/main/docs/jcr-component.adoc | 18 +-
.../camel/component/jcr/EndpointEventListener.java | 1 +
.../apache/camel/component/jcr/JcrConsumer.java | 1 +
.../apache/camel/component/jcr/JcrEndpoint.java | 2 +
.../apache/camel/component/jcr/JcrProducer.java | 1 +
.../camel-jdbc/src/main/docs/jdbc-component.adoc | 26 +-
.../apache/camel/component/jdbc/JdbcEndpoint.java | 2 +
.../apache/camel/component/jdbc/JdbcProducer.java | 1 +
.../component/jdbc/AbstractJdbcTestSupport.java | 12 +-
.../jdbc/JdbcRouteUsingSqlSelectAliasTest.java | 1 +
.../camel/component/jetty/CamelFilterWrapper.java | 3 +
components/camel-jetty/pom.xml | 7 +-
.../camel-jetty/src/main/docs/jetty-component.adoc | 54 +-
.../component/jetty9/AttachmentHttpBinding.java | 1 +
.../camel/component/jetty9/CamelHttpClient9.java | 3 +
.../component/jetty9/JettyContentExchange9.java | 19 +-
.../component/jetty9/JettyHttpComponent9.java | 7 +-
.../camel/component/jetty/BaseJettyTest.java | 15 +-
.../camel/component/jetty/CustomFiltersTest.java | 31 +-
.../camel/component/jetty/EnableCORSTest.java | 1 +
.../jetty/ExplicitJettyAsyncRouteTest.java | 1 +
.../component/jetty/ExplicitJettyRouteTest.java | 1 +
.../apache/camel/component/jetty/HandlerTest.java | 71 +-
.../component/jetty/Http4DeleteWithBodyTest.java | 4 +-
.../jetty/HttpAuthMethodPriorityTest.java | 46 +-
.../HttpBasicAuthComponentConfiguredTest.java | 43 +-
.../camel/component/jetty/HttpBasicAuthTest.java | 34 +-
.../camel/component/jetty/HttpBindingRefTest.java | 22 +-
.../component/jetty/HttpBridgeAsyncRouteTest.java | 1 +
.../component/jetty/HttpBridgeEncodedPathTest.java | 1 +
.../jetty/HttpBridgeMultipartRouteTest.java | 1 +
.../camel/component/jetty/HttpBridgeRouteTest.java | 1 +
.../component/jetty/HttpCharacterEncodingTest.java | 1 +
.../jetty/HttpClientRouteEnableChunkedTest.java | 1 +
.../camel/component/jetty/HttpClientRouteTest.java | 1 +
.../jetty/HttpFilterCamelHeadersTest.java | 12 +-
.../component/jetty/HttpGZipEncodingTest.java | 52 +-
.../component/jetty/HttpMethodRestrictTest.java | 1 +
.../jetty/HttpProducerConcurrentTest.java | 1 +
.../jetty/HttpProxyRouteContentTypeTest.java | 1 +
.../camel/component/jetty/HttpProxyRouteTest.java | 1 +
.../component/jetty/HttpRequestResponseTest.java | 1 +
.../camel/component/jetty/HttpToFileTest.java | 1 +
.../camel/component/jetty/HttpUrlRewriteTest.java | 17 +-
.../camel/component/jetty/HttpsAsyncRouteTest.java | 7 +
.../HttpsRouteSslContextParametersInUriTest.java | 13 +-
.../jetty/JettyContentBasedRouteTest.java | 1 +
.../component/jetty/JettyContentTypeTest.java | 1 +
.../jetty/JettyHttpBridgeEncodedPathTest.java | 1 +
.../jetty/JettyHttpEndpointDisconnectTest.java | 1 +
.../JettyHttpGetWithParamAsExchangeHeaderTest.java | 1 +
.../component/jetty/JettyHttpGetWithParamTest.java | 2 +
.../jetty/JettyHttpMapHttpMessageHeadersTest.java | 1 +
.../camel/component/jetty/JettyImageFileTest.java | 3 +-
.../jetty/JettyResponseBodyWhenErrorTest.java | 1 +
.../camel/component/jetty/JettyRouteTest.java | 1 +
.../jetty/JettyRouteWithSocketPropertiesTest.java | 1 +
.../camel/component/jetty/JettySteveIssueTest.java | 1 +
.../component/jetty/JettyWithXPathChoiceTest.java | 1 +
.../component/jetty/MultiPartFormOkHttpTest.java | 1 +
.../camel/component/jetty/MultiPartFormTest.java | 1 +
.../jetty/MultiPartFormWithCustomFilterTest.java | 61 +-
.../camel/component/jetty/MyErrorHandler.java | 1 +
.../component/jetty/async/MyAsyncEndpoint.java | 3 +
.../component/jetty/async/MyAsyncProducer.java | 2 +
.../component/jetty/proxy/MyCoolServiceBean.java | 1 +
.../component/jetty/rest/RestApiJettyYamlTest.java | 1 +
.../jetty/rest/RestHttpsClientAuthRouteTest.java | 2 +-
.../jetty/rest/RestJettyDefaultValueTest.java | 41 +-
.../rest/RestJettyGetCustomHttpBindingTest.java | 27 +-
.../component/jetty/rest/RestJettyGetToDTest.java | 30 +-
.../jetty/rest/RestJettyGetWildcardsTest.java | 40 +-
.../rest/producer/Http4RestProducerGetTest.java | 4 +-
.../rest/producer/Http4RestProducerPutTest.java | 2 +-
.../src/main/docs/jgroups-raft-component.adoc | 22 +-
.../src/main/docs/jgroups-component.adoc | 28 +-
.../camel-jing/src/main/docs/jing-component.adoc | 16 +-
.../component/validator/jing/JingComponent.java | 1 +
.../component/validator/jing/JingValidator.java | 1 +
.../component/validator/jing/RNCRouteTest.java | 1 +
.../component/validator/jing/RNGRouteTest.java | 1 +
.../camel-jira/src/main/docs/jira-component.adoc | 38 +-
.../apache/camel/component/jira/JiraComponent.java | 1 +
.../apache/camel/component/jira/JiraEndpoint.java | 2 +
.../jira/consumer/AbstractJiraConsumer.java | 1 +
.../jira/oauth/OAuthHttpClientDecorator.java | 6 +
.../camel-jms/src/main/docs/jms-component.adoc | 94 +-
.../component/jms/DefaultJmsKeyFormatStrategy.java | 2 +
.../component/jms/DefaultQueueBrowseStrategy.java | 1 +
.../org/apache/camel/component/jms/JmsBinding.java | 4 +-
.../apache/camel/component/jms/JmsComponent.java | 1 +
.../camel/component/jms/JmsConfiguration.java | 2 +
.../apache/camel/component/jms/JmsConsumer.java | 1 +
.../apache/camel/component/jms/JmsEndpoint.java | 13 +
.../org/apache/camel/component/jms/JmsMessage.java | 1 +
.../camel/component/jms/JmsPollingConsumer.java | 5 +
.../apache/camel/component/jms/JmsProducer.java | 3 +
.../camel/component/jms/JmsQueueEndpoint.java | 1 +
.../component/jms/JmsTemporaryQueueEndpoint.java | 2 +
.../component/jms/JmsTemporaryTopicEndpoint.java | 2 +
.../jms/PassThroughJmsKeyFormatStrategy.java | 2 +
.../component/jms/reply/QueueReplyManager.java | 6 +
.../component/jms/reply/ReplyManagerSupport.java | 8 +
.../jms/reply/TemporaryQueueReplyHandler.java | 2 +
.../jms/reply/TemporaryQueueReplyManager.java | 4 +
...essageIdAsCorrelationIdMessageSentCallback.java | 1 +
.../jms/ActiveMQOriginalDestinationTest.java | 1 +
.../component/jms/AggregratedJmsRouteTest.java | 3 +
.../camel/component/jms/BrowsableQueueTest.java | 2 +
.../component/jms/ConsumeJmsBytesMessageTest.java | 2 +
.../component/jms/ConsumeJmsMapMessageTest.java | 2 +
.../component/jms/ConsumeJmsObjectMessageTest.java | 2 +
.../component/jms/ConsumeMessageConverterTest.java | 17 +-
.../jms/ConsumerTemplateJmsSelectorTest.java | 1 +
.../jms/FileRouteJmsKeepLastModifiedTest.java | 2 +
.../component/jms/FileRouteJmsPreMoveTest.java | 2 +
.../camel/component/jms/FileRouteToJmsTest.java | 2 +
.../component/jms/FileRouteToJmsToFileTest.java | 2 +
.../component/jms/FromTextToBytesMessageTest.java | 1 +
.../jms/JmsAddAndRemoveRouteManagementTest.java | 1 +
.../jms/JmsAllowAdditionalHeadersTest.java | 1 +
.../camel/component/jms/JmsAllowNullBodyTest.java | 1 +
.../component/jms/JmsAsyncStartListenerTest.java | 2 +
.../jms/JmsAsyncStartStopListenerTest.java | 2 +
.../component/jms/JmsAsyncStopListenerTest.java | 2 +
.../camel/component/jms/JmsAutoStartupTest.java | 1 +
.../jms/JmsBatchResequencerJMSPriorityTest.java | 1 +
.../camel/component/jms/JmsClientAckTest.java | 1 +
.../camel/component/jms/JmsComponentTest.java | 2 +
.../component/jms/JmsConsumeTemplateTest.java | 1 +
...sumerRestartPickupConfigurationChangesTest.java | 1 +
.../jms/JmsCustomHeaderFilterStrategyTest.java | 3 +
.../jms/JmsDeadLetterChannelInOutTest.java | 1 +
.../component/jms/JmsDeadLetterQueueTest.java | 1 +
...msDeadLetterQueueUsingTransferExchangeTest.java | 1 +
.../jms/JmsDefaultTaskExecutorTypeTest.java | 1 +
.../component/jms/JmsDestinationResolverTest.java | 2 +
.../camel/component/jms/JmsDurableTopicTest.java | 1 +
.../jms/JmsEagerLoadingPropertiesTest.java | 1 +
.../jms/JmsEndpointConfigurationTest.java | 16 +-
.../jms/JmsErrorHandlerLogStackTraceTest.java | 1 +
.../apache/camel/component/jms/JmsFilterTest.java | 1 +
.../component/jms/JmsHeaderFilteringTest.java | 2 +
.../jms/JmsInOnlyDisableTimeToLiveTest.java | 2 +
.../jms/JmsInOnlyIncludeSentJMSMessageIDTest.java | 1 +
.../jms/JmsInOnlyInvalidDestinationTest.java | 14 +-
.../jms/JmsInOnlyWithReplyToAsHeaderTest.java | 1 +
...ToDisabledButJMSReplyToHeaderPreservedTest.java | 1 +
.../jms/JmsInOnlyWithReplyToDisabledTest.java | 1 +
.../jms/JmsInOnlyWithReplyToHeaderTest.java | 1 +
.../jms/JmsInOnlyWithReplyToHeaderTopicTest.java | 1 +
.../jms/JmsInOnlyWithReplyToNotPreservedTest.java | 1 +
.../component/jms/JmsInOnlyWithReplyToTest.java | 1 +
.../component/jms/JmsInOutBeanReturnNullTest.java | 1 +
.../jms/JmsInOutDisableTimeToLiveTest.java | 2 +
.../jms/JmsInOutFixedReplyQueueTimeoutTest.java | 2 +
...ueueTimeoutUseMessageIDAsCorrelationIDTest.java | 1 +
.../jms/JmsInOutIndividualRequestTimeoutTest.java | 2 +
.../component/jms/JmsInOutNonPersistentTest.java | 1 +
.../jms/JmsInOutSynchronousFalseTest.java | 2 +
.../component/jms/JmsInOutSynchronousTest.java | 2 +
.../component/jms/JmsInOutWithNoOutBodyTest.java | 2 +
.../jms/JmsIncludeAllJMSXPropertiesTest.java | 2 +
.../component/jms/JmsLoadBalanceFailoverTest.java | 1 +
...ailoverWithForceSendOriginalJmsMessageTest.java | 1 +
...geAsOriginalMessageInDefaultUnitOfWorkTest.java | 1 +
.../component/jms/JmsMessageBodySetNullTest.java | 1 +
.../JmsMessageCreatedStrategyComponentTest.java | 1 +
.../jms/JmsMessageCreatedStrategyEndpointTest.java | 17 +-
.../jms/JmsMessageIDNotOverridenAMQTest.java | 1 +
.../camel/component/jms/JmsMessageTypeTest.java | 1 +
.../component/jms/JmsMultipleConsumersTest.java | 1 +
.../component/jms/JmsNoRequestTimeoutTest.java | 2 +
.../JmsNotInOnlyIncludeSentJMSMessageIDTest.java | 1 +
.../jms/JmsNotIncludeAllJMSXPropertiesTest.java | 2 +
...OnCompletionAndInterceptAndOnExceptionTest.java | 2 +
.../camel/component/jms/JmsOnCompletionTest.java | 2 +
.../component/jms/JmsPollingConsumerTest.java | 1 +
.../jms/JmsProducerDisableReplyToTest.java | 1 +
.../jms/JmsProducerWithJMSHeaderTest.java | 1 +
.../component/jms/JmsProduerConcurrentTest.java | 1 +
.../jms/JmsProduerConcurrentWithReplyTest.java | 1 +
.../camel/component/jms/JmsQosRouteTest.java | 2 +
.../camel/component/jms/JmsRemoveHeaderTest.java | 1 +
...sRequestReplyExclusiveReplyToComponentTest.java | 1 +
...RequestReplyExclusiveReplyToConcurrentTest.java | 1 +
...estReplyExclusiveReplyToRemoveAddRouteTest.java | 1 +
.../jms/JmsRequestReplyExclusiveReplyToTest.java | 1 +
.../JmsRequestReplyFixedReplyToInEndpointTest.java | 1 +
.../jms/JmsRequestReplyManualReplyTest.java | 1 +
.../JmsRequestReplyManualWithJMSReplyToTest.java | 1 +
...lyProcessRepliesConcurrentUsingThreadsTest.java | 1 +
.../jms/JmsRequestReplyReplyToOverrideTest.java | 1 +
.../jms/JmsRequestReplySharedReplyToTest.java | 1 +
...RequestReplyTempQueueMultipleConsumersTest.java | 1 +
.../jms/JmsRequestReplyTemporaryCacheNoneTest.java | 1 +
.../jms/JmsRouteDeliveryModePreserveQoSTest.java | 1 +
.../component/jms/JmsRouteRequestReplyTest.java | 10 +
.../apache/camel/component/jms/JmsRouteTest.java | 2 +
.../jms/JmsRouteTimeoutCheckerIntervalTest.java | 2 +
.../camel/component/jms/JmsRouteTimeoutTest.java | 2 +
.../camel/component/jms/JmsRouteToFileTest.java | 2 +
.../jms/JmsRouteUsingDifferentHeadersTest.java | 1 +
.../component/jms/JmsRouteUsingJMSXGroupTest.java | 1 +
.../jms/JmsRouteUsingSpringAndJmsNameTest.java | 1 +
.../jms/JmsRouteUsingSpringJMSTemplateTest.java | 1 +
.../jms/JmsRouteUsingSpringWithAutoWireTest.java | 1 +
.../JmsRouteWithCustomKeyFormatStrategyTest.java | 17 +-
.../JmsRouteWithCustomListenerContainerTest.java | 42 +-
.../JmsRouteWithDefaultKeyFormatStrategyTest.java | 1 +
.../jms/JmsRouteWithInOnlyAndMultipleAcksTest.java | 42 +-
.../component/jms/JmsRouteWithInOnlyTest.java | 19 +-
.../component/jms/JmsRoutingSlipInOutTest.java | 31 +-
.../camel/component/jms/JmsRoutingSlipTest.java | 2 +
.../camel/component/jms/JmsSelectorInTest.java | 2 +
.../camel/component/jms/JmsSelectorOptionTest.java | 2 +
.../camel/component/jms/JmsSelectorTest.java | 2 +
.../apache/camel/component/jms/JmsSessionTest.java | 1 +
...BodyNullErrorHandlerUseOriginalMessageTest.java | 1 +
.../camel/component/jms/JmsSimpleHeaderTest.java | 1 +
.../component/jms/JmsSimpleInOnlyNoMutateTest.java | 2 +
.../jms/JmsSimpleRequestCustomReplyToTest.java | 3 +
.../jms/JmsSimpleRequestLateReplyTest.java | 3 +
.../component/jms/JmsSimpleRequestReply2Test.java | 2 +
.../JmsSimpleRequestReplyFixedReplyQueueTest.java | 2 +
.../component/jms/JmsSimpleRequestReplyTest.java | 2 +
.../jms/JmsSplitterParallelChainedTest.java | 1 +
.../component/jms/JmsSplitterParallelTest.java | 1 +
.../jms/JmsSpringLoadBalanceFailoverTest.java | 1 +
.../camel/component/jms/JmsSuspendResumeTest.java | 2 +
.../jms/JmsTestConnectionOnStartupTest.java | 1 +
.../jms/JmsThrottlingInflightRoutePolicyTest.java | 1 +
.../org/apache/camel/component/jms/JmsToDTest.java | 1 +
.../org/apache/camel/component/jms/JmsToTest.java | 1 +
.../component/jms/JmsTransactedRouteTest.java | 2 +
.../component/jms/JmsTransferExceptionTest.java | 1 +
.../jms/JmsTransferExchangeFromSplitterTest.java | 1 +
.../component/jms/JmsTransferExchangeTest.java | 1 +
.../component/jms/JmsUseOriginalBodyTest.java | 2 +
.../camel/component/jms/JmsXMLRouteTest.java | 1 +
.../camel/component/jms/JmsXPathHeaderTest.java | 1 +
.../component/jms/ManagedJmsEndpointTest.java | 1 +
.../component/jms/ManagedJmsEndpointTopicTest.java | 1 +
.../component/jms/ManagedJmsSelectorTest.java | 1 +
.../camel/component/jms/MapJmsMessageTest.java | 2 +
.../camel/component/jms/MyDestinationResolver.java | 1 +
.../component/jms/PayloadByteArrayJmsTest.java | 2 +
.../component/jms/ProduceMessageConverterTest.java | 18 +-
.../jms/ReplyToDestinationSelectorNameTest.java | 1 +
.../component/jms/TwoConsumerOnSameQueueTest.java | 1 +
.../component/jms/TwoConsumerOnSameTopicTest.java | 1 +
.../ActiveMQConsumeWildcardQueuesTest.java | 2 +
.../activemq/TwoEmbeddedActiveMQBrokersTest.java | 1 +
.../jms/async/AsyncConsumerFalseTest.java | 1 +
.../jms/async/AsyncConsumerInOutTest.java | 1 +
.../jms/async/AsyncConsumerInOutTwoTest.java | 1 +
.../component/jms/async/AsyncConsumerTest.java | 1 +
.../component/jms/async/AsyncJmsInOutTest.java | 1 +
.../component/jms/async/AsyncJmsProducerTest.java | 1 +
.../camel/component/jms/async/MyAsyncEndpoint.java | 3 +
.../camel/component/jms/async/MyAsyncProducer.java | 2 +
.../component/jms/bind/JmsMessageBindTest.java | 1 +
.../component/jms/discovery/JmsDiscoveryTest.java | 2 +
.../jms/issues/ActiveMQPropagateHeadersTest.java | 2 +
.../component/jms/issues/AdviceWithIssueTest.java | 1 +
.../jms/issues/BruceHandlingBeanExceptionTest.java | 1 +
.../camel/component/jms/issues/DummyOrder.java | 3 +
.../jms/issues/JmsAnotherCustomJMSReplyToTest.java | 2 +
.../jms/issues/JmsBeanMethodHeaderTest.java | 28 +-
.../issues/JmsBlockedAsyncRoutingEngineTest.java | 2 +
.../issues/JmsChainedEndpointDelayTimeoutTest.java | 1 +
.../issues/JmsConcurrentConsumerInOnlyTest.java | 2 +
.../jms/issues/JmsConcurrentConsumersTest.java | 2 +
.../jms/issues/JmsCustomJMSReplyToIssueTest.java | 2 +
.../jms/issues/JmsDirectStartupOrderIssueTest.java | 2 +
.../jms/issues/JmsFilenameHeaderTest.java | 2 +
.../jms/issues/JmsGetHeaderKeyFormatIssueTest.java | 1 +
...derKeyFormatIssueWithContentTypeHeaderTest.java | 1 +
.../jms/issues/JmsHeaderAsObjectTest.java | 2 +
.../component/jms/issues/JmsInOnlyIssueTest.java | 2 +
.../jms/issues/JmsInOnlyParameterTest.java | 2 +
.../JmsInOutExclusiveTopicRecipientListTest.java | 2 +
.../jms/issues/JmsInOutExclusiveTopicTest.java | 2 +
.../component/jms/issues/JmsInOutIssueTest.java | 2 +
.../component/jms/issues/JmsInOutParallelTest.java | 2 +
.../issues/JmsInOutPersistentReplyQueueTest.java | 2 +
.../jms/issues/JmsInOutPipelineWithBeanTest.java | 12 +-
.../issues/JmsInOutRepeatedInvocationsTest.java | 2 +
.../jms/issues/JmsInOutRoutingSlipTest.java | 1 +
.../JmsInOutUseMessageIDasCorrelationIDTest.java | 2 +
...msJMSReplyToConsumerEndpointUsingInOutTest.java | 2 +
.../JmsJMSReplyToEndpointUsingInOutTest.java | 2 +
.../jms/issues/JmsLifecycleIssueTest.java | 1 +
.../jms/issues/JmsMQSpecialHeaderTest.java | 1 +
.../JmsMessageHeaderContentBasedRouterTest.java | 1 +
.../component/jms/issues/JmsMutateMessageTest.java | 1 +
.../issues/JmsMutateRemoveHeaderMessageTest.java | 1 +
...roughtJmsKeyFormatStrategyEndUserIssueTest.java | 1 +
...ssThroughtJmsKeyFormatStrategyEndpointTest.java | 1 +
.../JmsPassThroughtJmsKeyFormatStrategyTest.java | 1 +
...KeyFormatStrategyUsingJmsConfigurationTest.java | 1 +
.../issues/JmsReplyToComponentEndlessLoopTest.java | 61 ++
.../jms/issues/JmsReplyToLoopIssueTest.java | 1 +
.../jms/issues/JmsRoutingSlipIssueTest.java | 1 +
...endToAlotOfDestinationWithSameEndpointTest.java | 1 +
...etterChannelHandlerRollbackOnExceptionTest.java | 1 +
...erChannelNotHandlerRollbackOnExceptionTest.java | 1 +
...ansactedOnExceptionRollbackOnExceptionTest.java | 1 +
.../jms/issues/JmsTypeConverterIssueTest.java | 4 +
.../camel/component/jms/issues/LarsIssueTest.java | 2 +
.../component/jms/issues/MQSeriesHeaderTest.java | 2 +
.../component/jms/issues/MyFailureProcessor.java | 1 +
.../NoClassDefFoundErrorWrapExceptionTest.java | 1 +
.../issues/RequestReplyWithProducerIssueTest.java | 1 +
.../component/jms/issues/TempReplyToIssueTest.java | 1 +
...TransactionErrorHandlerRedeliveryDelayTest.java | 1 +
.../component/jms/remoting/JmsRemotingTest.java | 1 +
.../camel/component/jms/remoting/SayService.java | 1 +
.../camel/component/jms/temp/JmsReconnectTest.java | 1 +
.../jms/temp/TemporaryQueueRouteTest.java | 2 +
.../jms/tuning/PerformanceRoutePojoTest.java | 1 +
.../component/jms/tuning/PerformanceRouteTest.java | 1 +
.../component/jms/tx/AbstractTransactionTest.java | 2 +
.../jms/tx/ConditionalExceptionProcessor.java | 1 +
.../jms/tx/JMSTransactionErrorHandlerTest.java | 2 +
.../JMSTransactionIsTransactedRedeliveredTest.java | 2 +
.../jms/tx/JMSTransactionRollbackTest.java | 2 +
.../JMSTransactionThrottlingRoutePolicyTest.java | 1 +
.../jms/tx/JMSTransactionalClientTest.java | 2 +
.../tx/JMSTransactionalClientWithRollbackTest.java | 2 +
...MXTXUseOriginalBodyWithDLCErrorHandlerTest.java | 2 +
...JMXTXUseOriginalBodyWithTXErrorHandlerTest.java | 2 +
.../jms/tx/JmsToJmsTransactedSecurityTest.java | 1 +
.../component/jms/tx/JmsToJmsTransactedTest.java | 1 +
...sactionWithoutDefineTransactionManagerTest.java | 1 +
.../component/jms/tx/RouteIdTransactedTest.java | 1 +
.../jms/tx/TransactedAsyncUsingThreadsTest.java | 1 +
...sactionErrorHandlerBuilderAsSpringBeanTest.java | 2 +
...actionErrorHandlerCustomerSpringParserTest.java | 2 +
.../tx/TransactionInterceptSendToEndpointTest.java | 1 +
.../tx/TransactionMinimalConfigurationTest.java | 2 +
.../jms/tx/XMLQueueToProcessorTransactionTest.java | 1 +
.../jms/tx/XMLQueueToQueueTransactionTest.java | 1 +
.../camel-jmx/src/main/docs/jmx-component.adoc | 12 +-
.../apache/camel/component/jmx/JMXConsumer.java | 1 +
.../apache/camel/component/jmx/JMXEndpoint.java | 3 +
.../apache/camel/component/jmx/JMXUriBuilder.java | 1 +
.../camel/component/jmx/JMXConsumerTest.java | 1 +
.../camel/component/jmx/JMXHandbackTest.java | 1 +
.../apache/camel/component/jmx/JMXRemoteTest.java | 1 +
.../jmx/JMXRobustRemoteConnectionTest.java | 1 +
.../camel/component/jmx/beans/SimpleBean.java | 12 +
.../src/main/docs/json-johnzon-dataformat.adoc | 8 +-
.../camel-jolt/src/main/docs/jolt-component.adoc | 16 +-
.../apache/camel/component/jolt/JoltComponent.java | 1 +
.../camel-jooq/src/main/docs/jooq-component.adoc | 18 +-
.../camel-jpa/src/main/docs/jpa-component.adoc | 46 +-
.../apache/camel/component/jpa/JpaConsumer.java | 1 +
.../apache/camel/component/jpa/JpaEndpoint.java | 9 +-
.../apache/camel/component/jpa/JpaProducer.java | 1 +
.../apache/camel/component/jpa/QueryBuilder.java | 1 +
.../idempotent/jpa/JpaMessageIdRepository.java | 4 +
.../camel/component/jpa/AbstractJpaMethodTest.java | 1 +
.../camel/component/jpa/JpaUseMergeTest.java | 1 +
.../camel/component/jpa/JpaUsePersistTest.java | 1 +
.../jpa/JpaUsingCustomPersistenceUnitTest.java | 1 +
.../camel/processor/jpa/AbstractJpaTest.java | 2 +
.../jpa/FileConsumerJpaIdempotentTest.java | 1 +
.../camel-jsch/src/main/docs/scp-component.adoc | 16 +-
.../apache/camel/component/scp/ScpComponent.java | 1 +
.../camel/component/scp/ScpSimpleProduceTest.java | 10 +-
.../src/main/docs/json-validator-component.adoc | 14 +-
.../jsonvalidator/JsonValidatorComponent.java | 1 +
.../jsonvalidator/FileValidatorRouteTest.java | 1 +
.../src/main/docs/jsonApi-dataformat.adoc | 6 +-
.../src/main/docs/jsonpath-language.adoc | 28 +-
.../camel-jt400/src/main/docs/jt400-component.adoc | 28 +-
.../component/jt400/Jt400DataQueueProducer.java | 1 +
.../camel/component/jt400/Jt400Endpoint.java | 1 +
.../camel/component/jt400/Jt400PgmProducer.java | 1 +
.../Jt400ComponentDefaultConnectionPoolTest.java | 2 +
...00ComponentDefaultSecureConnectionPoolTest.java | 2 +
.../jt400/Jt400ConfigurationConnectionTest.java | 2 +
.../Jt400ConfigurationSecureConnectionTest.java | 2 +
.../component/jt400/Jt400ConfigurationTest.java | 1 +
.../component/jt400/Jt400SecureTestSupport.java | 19 +-
.../camel/component/jt400/Jt400TestSupport.java | 15 +-
.../camel-kafka/src/main/docs/kafka-component.adoc | 40 +-
.../camel/component/kafka/KafkaConfiguration.java | 2 +
.../component/kafka/BaseEmbeddedKafkaTest.java | 11 +-
.../component/kafka/KafkaConsumerFullTest.java | 13 +-
.../KafkaConsumerOffsetRepositoryEmptyTest.java | 10 +-
.../KafkaConsumerOffsetRepositoryResumeTest.java | 10 +-
.../KafkaConsumerRebalancePartitionRevokeTest.java | 10 +-
.../kafka/KafkaConsumerRebalanceTest.java | 10 +-
.../component/kafka/KafkaProducerFullTest.java | 16 +-
.../kafka/embedded/EmbeddedKafkaBroker.java | 2 +
.../camel/component/kafka/embedded/SystemTime.java | 10 +
.../kafka/KafkaIdempotentRepositoryEagerTest.java | 15 +-
.../KafkaIdempotentRepositoryNonEagerTest.java | 17 +-
components/camel-kubernetes/pom.xml | 2 +-
.../docs/kubernetes-config-maps-component.adoc | 12 +-
.../docs/kubernetes-deployments-component.adoc | 12 +-
.../src/main/docs/kubernetes-hpa-component.adoc | 12 +-
.../src/main/docs/kubernetes-job-component.adoc | 12 +-
.../main/docs/kubernetes-namespaces-component.adoc | 12 +-
.../src/main/docs/kubernetes-nodes-component.adoc | 12 +-
...rnetes-persistent-volumes-claims-component.adoc | 12 +-
.../kubernetes-persistent-volumes-component.adoc | 12 +-
.../src/main/docs/kubernetes-pods-component.adoc | 12 +-
...bernetes-replication-controllers-component.adoc | 12 +-
.../docs/kubernetes-resources-quota-component.adoc | 12 +-
.../main/docs/kubernetes-secrets-component.adoc | 12 +-
.../kubernetes-service-accounts-component.adoc | 12 +-
.../main/docs/kubernetes-services-component.adoc | 12 +-
.../camel-kubernetes/src/main/docs/kubernetes.adoc | 12 +-
.../docs/openshift-build-configs-component.adoc | 10 +-
.../src/main/docs/openshift-builds-component.adoc | 10 +-
.../kubernetes/AbstractKubernetesComponent.java | 3 +-
.../config_maps/KubernetesConfigMapsComponent.java | 1 +
.../KubernetesDeploymentsComponent.java | 1 +
.../kubernetes/hpa/KubernetesHPAComponent.java | 1 +
.../kubernetes/job/KubernetesJobComponent.java | 1 +
.../namespaces/KubernetesNamespacesComponent.java | 1 +
.../kubernetes/nodes/KubernetesNodesComponent.java | 1 +
.../KubernetesPersistentVolumesComponent.java | 1 +
...KubernetesPersistentVolumesClaimsComponent.java | 1 +
.../kubernetes/pods/KubernetesPodsComponent.java | 1 +
.../KubernetesReplicationControllersComponent.java | 1 +
.../KubernetesResourcesQuotaComponent.java | 1 +
.../secrets/KubernetesSecretsComponent.java | 1 +
.../KubernetesServiceAccountsComponent.java | 1 +
.../services/KubernetesServicesComponent.java | 1 +
.../OpenshiftBuildConfigsComponent.java | 1 +
.../openshift/builds/OpenshiftBuildsComponent.java | 1 +
.../producer/KubernetesConfigMapsProducerTest.java | 13 +-
.../KubernetesDeploymentsProducerTest.java | 70 +-
.../producer/KubernetesHPAProducerTest.java | 11 +-
.../producer/KubernetesJobProducerTest.java | 14 +-
.../producer/KubernetesNamespacesProducerTest.java | 11 +-
.../producer/KubernetesNodesProducerTest.java | 31 +-
...ernetesPersistentVolumesClaimsProducerTest.java | 11 +-
.../KubernetesPersistentVolumesProducerTest.java | 11 +-
.../producer/KubernetesPodsProducerTest.java | 11 +-
...bernetesReplicationControllersProducerTest.java | 11 +-
.../KubernetesResourcesQuotaProducerTest.java | 30 +-
.../producer/KubernetesSecretsProducerTest.java | 11 +-
.../KubernetesServiceAccountsProducerTest.java | 11 +-
.../producer/KubernetesServicesProducerTest.java | 11 +-
.../OpenshiftBuildConfigsProducerTest.java | 10 +-
.../producer/OpenshiftBuildsProducerTest.java | 10 +-
components/camel-kura/src/main/docs/kura.adoc | 28 +-
.../src/main/docs/language-component.adoc | 18 +-
.../component/language/LanguageComponent.java | 1 +
.../camel/component/language/LanguageEndpoint.java | 3 +
.../camel/component/language/LanguageProducer.java | 1 +
.../camel-ldap/src/main/docs/ldap-component.adoc | 24 +-
.../apache/camel/component/ldap/LdapComponent.java | 1 +
.../apache/camel/component/ldap/LdapEndpoint.java | 2 +
.../apache/camel/component/ldap/LdapProducer.java | 1 +
.../camel-ldif/src/main/docs/ldif-component.adoc | 25 +-
.../apache/camel/component/ldif/LdifProducer.java | 1 +
.../camel-leveldb/src/main/docs/leveldb.adoc | 16 +-
.../leveldb/LevelDBAggregationRepository.java | 16 +
.../camel/component/leveldb/LevelDBFile.java | 2 +
...elDBAggregateConcurrentDifferentGroupsTest.java | 1 +
.../LevelDBAggregateConcurrentSameGroupTest.java | 1 +
.../LevelDBAggregateDiscardOnTimeoutTest.java | 1 +
.../LevelDBAggregateForceCompletionHeaderTest.java | 1 +
.../LevelDBAggregateLoadAndRecoverTest.java | 1 +
.../LevelDBAggregateLoadConcurrentTest.java | 1 +
.../leveldb/LevelDBAggregateLoadTest.java | 1 +
...DBAggregateNotLostRemovedWhenConfirmedTest.java | 1 +
.../leveldb/LevelDBAggregateNotLostTest.java | 1 +
...ggregateRecoverDeadLetterChannelFailedTest.java | 1 +
...velDBAggregateRecoverDeadLetterChannelTest.java | 1 +
.../leveldb/LevelDBAggregateRecoverTest.java | 1 +
...DBAggregateRecoverWithRedeliveryPolicyTest.java | 1 +
.../LevelDBAggregateRecoverWithSedaTest.java | 1 +
.../LevelDBAggregateSerializedHeadersTest.java | 1 +
.../component/leveldb/LevelDBAggregateTest.java | 1 +
...velDBAggregateTimeoutCompletionRestartTest.java | 1 +
...ngAggregateRecoverWithRedeliveryPolicyTest.java | 2 +
.../leveldb/LevelDBSpringAggregateTest.java | 1 +
.../component/linkedin/api/DoubleAdapter.java | 2 +
.../component/linkedin/api/LinkedInException.java | 1 +
.../camel/component/linkedin/api/LongAdapter.java | 2 +
.../src/main/docs/linkedin-component.adoc | 36 +-
.../camel/component/linkedin/LinkedInEndpoint.java | 3 +
.../camel-log/src/main/docs/log-component.adoc | 31 +-
.../apache/camel/component/log/LogComponent.java | 1 +
.../apache/camel/component/log/LogProducer.java | 1 +
components/camel-lra/src/main/docs/lra.adoc | 4 +-
.../src/main/docs/lucene-component.adoc | 30 +-
.../camel/component/lucene/LuceneEndpoint.java | 2 +
.../component/lucene/LuceneIndexProducer.java | 1 +
.../component/lucene/LuceneQueryProducer.java | 1 +
.../processor/lucene/LuceneQueryProcessor.java | 1 +
.../src/main/docs/lumberjack-component.adoc | 18 +-
.../camel-lzf/src/main/docs/lzf-dataformat.adoc | 12 +-
.../apache/camel/dataformat/lzf/LZFDataFormat.java | 3 +-
.../camel/dataformat/lzf/LZFDataFormatTest.java | 1 +
.../camel-mail/src/main/docs/mail-component.adoc | 50 +-
.../src/main/docs/mime-multipart-dataformat.adoc | 12 +-
.../camel/component/mail/DefaultAuthenticator.java | 1 +
.../component/mail/DefaultJavaMailSender.java | 14 +
.../apache/camel/component/mail/MailConsumer.java | 2 +
.../apache/camel/component/mail/MailEndpoint.java | 5 +
.../apache/camel/component/mail/MailMessage.java | 2 +
.../apache/camel/component/mail/MailProducer.java | 1 +
.../apache/camel/component/mail/NowSearchTerm.java | 1 +
.../mail/MailAttachmentDuplicateNamesTest.java | 1 +
.../mail/MailAttachmentRedeliveryTest.java | 1 +
.../camel/component/mail/MailAttachmentTest.java | 1 +
.../mail/MailAttachmentsUmlautIssueTest.java | 1 +
.../component/mail/MailBatchConsumerTest.java | 1 +
.../component/mail/MailCollectionHeaderTest.java | 1 +
.../component/mail/MailCommitOnCompletionTest.java | 1 +
.../mail/MailConsumerUnsupportedCharsetTest.java | 1 +
.../mail/MailContentTypeResolverTest.java | 1 +
.../camel/component/mail/MailContentTypeTest.java | 1 +
.../camel/component/mail/MailCopyToTest.java | 1 +
.../component/mail/MailCustomContentTypeTest.java | 1 +
.../component/mail/MailCustomMailSenderTest.java | 10 +-
.../mail/MailDefaultDelayForMailConsumeTest.java | 1 +
.../camel/component/mail/MailDisconnectTest.java | 1 +
.../mail/MailDoNotDeleteIfProcessFailsTest.java | 1 +
.../camel/component/mail/MailFetchSizeTest.java | 1 +
.../component/mail/MailFetchSizeZeroTest.java | 1 +
...aderOverrulePreConfigurationRecipientsTest.java | 1 +
.../component/mail/MailHtmlAttachmentTest.java | 1 +
...IdempotentRepositoryDuplicateNotRemoveTest.java | 2 +
.../MailIdempotentRepositoryDuplicateTest.java | 14 +-
.../mail/MailIdempotentRepositoryTest.java | 17 +-
.../component/mail/MailMaxMessagesPerPollTest.java | 1 +
.../component/mail/MailMimeDecodeHeadersTest.java | 1 +
.../component/mail/MailMultipleRecipientsTest.java | 1 +
.../MailMultipleRecipientsUsingHeadersTest.java | 1 +
.../mail/MailNameAndEmailInRecipientTest.java | 1 +
.../camel/component/mail/MailNoRecipientsTest.java | 1 +
.../component/mail/MailPollEnrichNoMailTest.java | 1 +
.../camel/component/mail/MailPollEnrichTest.java | 1 +
.../component/mail/MailPostProcessActionTest.java | 15 +-
.../mail/MailProcessOnlyUnseenMessagesTest.java | 1 +
.../mail/MailRecipientsPipeIssueTest.java | 1 +
.../camel/component/mail/MailRecipientsTest.java | 1 +
.../camel/component/mail/MailReplyToTest.java | 1 +
.../component/mail/MailSearchTermNotSpamTest.java | 1 +
.../camel/component/mail/MailSearchTermTest.java | 14 +-
.../mail/MailSearchTermUriConfigBeanTest.java | 11 +-
.../MailSearchTermUriConfigLast24HoursTest.java | 1 +
.../mail/MailSearchTermUriConfigTest.java | 1 +
.../MailShutdownCompleteCurrentTaskOnlyTest.java | 1 +
.../camel/component/mail/MailSortTermTest.java | 34 +-
.../component/mail/MailSortTermThreeTest.java | 31 +-
.../camel/component/mail/MailSortTermTwoTest.java | 31 +-
.../camel/component/mail/MailSubjectTest.java | 1 +
.../component/mail/MailUsernameWithAtSignTest.java | 1 +
.../component/mail/MailUsingCustomSessionTest.java | 17 +-
.../camel/component/mail/MailUsingHeadersTest.java | 1 +
.../component/mail/MapMailMessagesBugRoute.java | 1 +
.../mail/MimeMultipartAlternativeTest.java | 1 +
...imeMultipartAlternativeWithContentTypeTest.java | 1 +
...MultipartAlternativeWithLongerFilenameTest.java | 1 +
.../camel/component/mail/mock/MyMockFolder.java | 2 +
.../SslContextParametersMailRouteTest.java | 62 +-
.../multipart/MimeMultipartDataFormatTest.java | 1 +
.../src/main/docs/master-component.adoc | 20 +-
.../src/main/docs/metrics-component.adoc | 58 +-
.../messagehistory/MetricsMessageHistory.java | 1 +
.../MetricsMessageHistoryService.java | 4 +
.../routepolicy/MetricsRegistryService.java | 3 +
.../messagehistory/ManagedMessageHistoryTest.java | 25 +-
.../routepolicy/ManagedMetricsRoutePolicyTest.java | 22 +-
.../src/main/docs/micrometer-component.adoc | 50 +-
.../messagehistory/MicrometerMessageHistory.java | 1 +
.../AbstractMicrometerEventNotifierTest.java | 12 +-
.../messagehistory/ManagedMessageHistoryTest.java | 31 +-
.../AbstractMicrometerRoutePolicyTest.java | 11 +-
.../src/main/docs/microprofile-config.adoc | 4 +-
.../src/main/docs/milo-client-component.adoc | 24 +-
.../src/main/docs/milo-server-component.adoc | 16 +-
.../camel-mina2/src/main/docs/mina2-component.adoc | 28 +-
.../component/mina2/Mina2TextLineCodecFactory.java | 2 +
.../mina2/Mina2UdpProtocolCodecFactory.java | 2 +
.../camel/component/mina2/BaseMina2Test.java | 30 +-
.../Mina2ClientModeTcpTextlineDelimiterTest.java | 2 +
.../component/mina2/Mina2ClientServerTest.java | 1 +
.../camel/component/mina2/Mina2ConsumerTest.java | 1 +
.../component/mina2/Mina2CustomCodecTest.java | 21 +-
.../mina2/Mina2ExchangeDefaultTimeOutTest.java | 1 +
.../component/mina2/Mina2ExchangeTimeOutTest.java | 1 +
.../camel/component/mina2/Mina2FileTcpTest.java | 1 +
.../camel/component/mina2/Mina2FileUdpTest.java | 1 +
.../component/mina2/Mina2MaxLineLengthTest.java | 1 +
.../mina2/Mina2NoResponseFromServerTest.java | 26 +-
.../mina2/Mina2ProducerShutdownMockTest.java | 1 +
.../component/mina2/Mina2ProducerShutdownTest.java | 1 +
.../mina2/Mina2ReverseProtocolHandler.java | 2 +
.../mina2/Mina2SslContextParametersTcpTest.java | 1 +
.../mina2/Mina2SslContextParametersUdpTest.java | 1 +
.../mina2/Mina2SslContextParametersVmTest.java | 1 +
.../Mina2SslGlobalContextParametersTcpTest.java | 1 +
.../Mina2TcpLineDelimiterUsingPlainSocketTest.java | 1 +
.../apache/camel/component/mina2/Mina2TcpTest.java | 1 +
.../mina2/Mina2TcpTextlineDelimiterTest.java | 1 +
.../mina2/Mina2TcpTextlineProtocolTest.java | 1 +
.../Mina2TcpWithInOutUsingPlainSocketTest.java | 1 +
.../Mina2TcpWithIoOutProcessorExceptionTest.java | 1 +
.../mina2/Mina2TransferExchangeOptionTest.java | 1 +
.../component/mina2/Mina2UdpConcurrentTest.java | 1 +
.../apache/camel/component/mina2/Mina2UdpTest.java | 1 +
.../component/mina2/Mina2UdpUsingTemplateTest.java | 1 +
.../Mina2UdpWithInOutUsingPlainSocketTest.java | 1 +
.../component/mina2/Mina2VMCustomCodecTest.java | 19 +-
.../camel/component/mina2/Mina2VMFileTcpTest.java | 1 +
.../mina2/Mina2VMTextlineProtocolTest.java | 1 +
.../mina2/Mina2VMTransferExchangeOptionTest.java | 1 +
.../apache/camel/component/mina2/Mina2VmTest.java | 1 +
.../camel-mllp/src/main/docs/mllp-component.adoc | 22 +-
.../apache/camel/component/mllp/MllpEndpoint.java | 2 +
.../component/mllp/MllpTcpClientProducer.java | 3 +-
.../component/mllp/MllpTcpServerConsumer.java | 2 +-
.../mllp/internal/TcpServerAcceptThread.java | 1 +
...umerOptionalEndOfDataWithoutValidationTest.java | 2 +
.../mllp/MllpTcpServerConsumerTransactionTest.java | 10 +-
.../internal/MllpSocketBufferReadFromTest.java | 1 +
.../test/junit/rule/mllp/MllpServerResource.java | 2 +
.../camel-mock/src/main/docs/mock-component.adoc | 42 +-
.../camel/component/mock/AssertionClause.java | 16 +-
.../camel/component/mock/AssertionClauseTask.java | 27 +
.../apache/camel/component/mock/AssertionTask.java | 31 +
.../apache/camel/component/mock/MockEndpoint.java | 359 +++++--
.../camel/component/mock/MockExpressionClause.java | 35 -
.../mock/MockExpressionClauseSupport.java | 35 -
.../src/main/docs/mongodb-gridfs-component.adoc | 30 +-
.../component/mongodb/gridfs/GridFsComponent.java | 1 +
.../component/mongodb/gridfs/GridFsProducer.java | 1 +
components/camel-mongodb/pom.xml | 117 +++
.../src/main/docs/mongodb-component.adoc | 1016 ++++++++++++++++++++
.../component/mongodb3/CamelMongoDbException.java | 0
.../mongodb3/MongoAbstractConsumerThread.java | 0
.../mongodb3/MongoDbChangeStreamsConsumer.java | 0
.../mongodb3/MongoDbChangeStreamsThread.java | 0
.../camel/component/mongodb3/MongoDbComponent.java | 96 ++
.../camel/component/mongodb3/MongoDbConstants.java | 0
.../component/mongodb3/MongoDbConsumerType.java | 0
.../camel/component/mongodb3/MongoDbEndpoint.java | 662 +++++++++++++
.../camel/component/mongodb3/MongoDbOperation.java | 0
.../component/mongodb3/MongoDbOutputType.java | 0
.../camel/component/mongodb3/MongoDbProducer.java | 635 ++++++++++++
.../mongodb3/MongoDbTailTrackingConfig.java | 0
.../mongodb3/MongoDbTailTrackingManager.java | 0
.../mongodb3/MongoDbTailableCursorConsumer.java | 0
.../component/mongodb3/MongoDbTailingThread.java | 0
.../converters/MongoDbBasicConverters.java | 0
.../converters/MongoDbFallbackConverter.java | 0
.../idempotent/MongoDbIdempotentRepository.java | 0
.../component/mongodb3/AbstractMongoDbTest.java | 0
.../mongodb3/EmbedMongoConfiguration.java | 0
.../MongoBasicOperationsConfiguration.java | 0
.../mongodb3/MongoDbAggregateOperationTest.java | 121 +++
.../mongodb3/MongoDbBigDecimalConverterTest.java | 61 ++
.../mongodb3/MongoDbBulkWriteOperationTest.java | 121 +++
.../mongodb3/MongoDbChangeStreamsConsumerTest.java | 113 +++
.../mongodb3/MongoDbConnectionBeansTest.java | 79 ++
.../component/mongodb3/MongoDbConversionsTest.java | 128 +++
.../component/mongodb3/MongoDbDynamicityTest.java | 147 +++
.../mongodb3/MongoDbExceptionHandlingTest.java | 93 ++
.../mongodb3/MongoDbFindOperationTest.java | 296 ++++++
.../mongodb3/MongoDbHeaderHandlingTest.java | 127 +++
.../camel/component/mongodb3/MongoDbIndexTest.java | 202 ++++
.../component/mongodb3/MongoDbOperationsTest.java | 397 ++++++++
.../component/mongodb3/MongoDbOutputTypeTest.java | 134 +++
.../mongodb3/MongoDbReadPreferenceOptionTest.java | 88 ++
.../mongodb3/MongoDbSpringDslOperationsTest.java | 0
.../mongodb3/MongoDbStopEndpointTest.java | 56 ++
.../MongoDbTailableCursorConsumerTest.java | 434 +++++++++
.../MongoDbIdempotentRepositoryTest.java | 0
.../src/test/resources/log4j2.properties | 0
.../src/test/resources/mongodb.test.properties | 0
.../mongodb3/mongoBasicOperationsTest.xml | 92 ++
components/camel-mongodb3/pom.xml | 117 ---
.../src/main/docs/mongodb3-component.adoc | 1015 -------------------
.../camel/component/mongodb3/MongoDbComponent.java | 95 --
.../camel/component/mongodb3/MongoDbEndpoint.java | 660 -------------
.../camel/component/mongodb3/MongoDbProducer.java | 634 ------------
.../mongodb3/MongoDbAggregateOperationTest.java | 121 ---
.../mongodb3/MongoDbBigDecimalConverterTest.java | 61 --
.../mongodb3/MongoDbBulkWriteOperationTest.java | 121 ---
.../mongodb3/MongoDbChangeStreamsConsumerTest.java | 113 ---
.../mongodb3/MongoDbConnectionBeansTest.java | 79 --
.../component/mongodb3/MongoDbConversionsTest.java | 128 ---
.../component/mongodb3/MongoDbDynamicityTest.java | 147 ---
.../mongodb3/MongoDbExceptionHandlingTest.java | 93 --
.../mongodb3/MongoDbFindOperationTest.java | 296 ------
.../mongodb3/MongoDbHeaderHandlingTest.java | 127 ---
.../camel/component/mongodb3/MongoDbIndexTest.java | 202 ----
.../component/mongodb3/MongoDbOperationsTest.java | 397 --------
.../component/mongodb3/MongoDbOutputTypeTest.java | 134 ---
.../mongodb3/MongoDbReadPreferenceOptionTest.java | 88 --
.../mongodb3/MongoDbStopEndpointTest.java | 56 --
.../MongoDbTailableCursorConsumerTest.java | 434 ---------
.../src/test/resources/mongodb.test.properties | 21 -
.../mongodb3/mongoBasicOperationsTest.xml | 92 --
.../camel-mqtt/src/main/docs/mqtt-component.adoc | 18 +-
.../apache/camel/component/mqtt/MQTTComponent.java | 1 +
.../apache/camel/component/mqtt/MQTTConsumer.java | 2 +
.../apache/camel/component/mqtt/MQTTProducer.java | 1 +
.../apache/camel/component/mqtt/MQTTBaseTest.java | 2 +
.../mqtt/MQTTConsumerMultipleTopicsTest.java | 1 +
.../camel/component/mqtt/MQTTConsumerTest.java | 1 +
.../mqtt/MQTTConsumerWildcardTopicsTest.java | 1 +
.../camel/component/mqtt/MQTTLoopProducerTest.java | 1 +
.../component/mqtt/MQTTProducerReconnectTest.java | 1 +
.../camel/component/mqtt/MQTTProducerTest.java | 1 +
.../camel-msv/src/main/docs/msv-component.adoc | 16 +-
.../component/validator/msv/RelaxNGRouteTest.java | 1 +
.../src/main/docs/mustache-component.adoc | 22 +-
.../component/mustache/MustacheLetterTest.java | 1 +
.../camel-mvel/src/main/docs/mvel-component.adoc | 24 +-
.../camel-mvel/src/main/docs/mvel-language.adoc | 14 +-
.../apache/camel/component/mvel/MvelComponent.java | 1 +
.../apache/camel/language/mvel/MvelExpression.java | 3 +
.../apache/camel/language/mvel/MvelLanguage.java | 2 +
.../camel/language/mvel/MvelComponentTest.java | 1 +
.../org/apache/camel/language/mvel/MvelTest.java | 1 +
.../src/main/docs/mybatis-bean-component.adoc | 16 +-
.../src/main/docs/mybatis-component.adoc | 34 +-
.../mybatis/DefaultMyBatisProcessingStrategy.java | 2 +
.../component/mybatis/MyBatisBeanEndpoint.java | 1 +
.../component/mybatis/MyBatisBeanProducer.java | 1 +
.../camel/component/mybatis/MyBatisConsumer.java | 2 +
.../camel/component/mybatis/MyBatisEndpoint.java | 2 +
.../camel/component/mybatis/MyBatisProducer.java | 1 +
.../camel/component/mybatis/MyBatisQueueTest.java | 2 +
.../src/main/docs/nagios-component.adoc | 18 +-
.../camel/component/nagios/NagiosEndpoint.java | 2 +
.../component/nagios/NagiosEventNotifier.java | 2 +
.../camel/component/nagios/NagiosProducer.java | 1 +
.../camel-nats/src/main/docs/nats-component.adoc | 14 +-
components/camel-netty4-http/pom.xml | 7 +-
.../src/main/docs/netty4-http-component.adoc | 34 +-
.../netty4/http/DefaultNettySharedHttpServer.java | 9 +
.../netty4/http/HttpServerBootstrapFactory.java | 1 +
.../component/netty4/http/NettyHttpComponent.java | 2 +
.../netty4/http/NettyHttpConfiguration.java | 2 +
.../component/netty4/http/NettyHttpEndpoint.java | 2 +
.../component/netty4/http/NettyHttpProducer.java | 2 +-
.../netty4/http/RestNettyHttpBinding.java | 1 +
.../netty4/http/SecurityAuthenticatorSupport.java | 3 +
.../HttpServerMultiplexChannelHandler.java | 6 +
.../camel/component/netty4/http/BaseNettyTest.java | 11 +-
.../netty4/http/ManagedNettyEndpointTest.java | 1 +
.../NettyHttpBasicAuthConstraintMapperTest.java | 11 +-
...tpBasicAuthCustomSecurityAuthenticatorTest.java | 18 +-
.../netty4/http/NettyHttpBasicAuthTest.java | 11 +-
.../http/NettyHttpBridgeEncodedPathTest.java | 1 +
.../NettyHttpBridgeRouteUsingHttpClientTest.java | 1 +
.../http/NettyHttpCharacterEncodingTest.java | 1 +
.../netty4/http/NettyHttpCompressTest.java | 11 +-
...pEndpointUriCustomHeaderFilterStrategyTest.java | 23 +-
.../http/NettyHttpFilterCamelHeadersTest.java | 12 +-
.../http/NettyHttpGetWithInvalidMessageTest.java | 37 +-
.../NettyHttpGetWithParamAsExchangeHeaderTest.java | 1 +
.../netty4/http/NettyHttpGetWithParamTest.java | 2 +
.../NettyHttpHeaderFilterStrategyRemovalTest.java | 13 +-
.../netty4/http/NettyHttpMethodRestrictTest.java | 1 +
.../http/NettyHttpProducerConcurrentTest.java | 1 +
.../netty4/http/NettyHttpProducerSessionTest.java | 60 +-
...ttyHttpSimpleBasicAuthConstraintMapperTest.java | 11 +-
...ttyHttpTwoRoutesBootstrapConfigurationTest.java | 11 +-
.../netty4/http/NettySharedHttpServerTest.java | 10 +-
.../netty4/http/rest/RestNettyHttpGetTest.java | 11 +-
.../http/rest/RestNettyHttpGetWildcardsTest.java | 10 +-
.../src/main/docs/netty4-component.adoc | 46 +-
.../ClientModeTCPNettyServerBootstrapFactory.java | 6 +
.../netty4/DefaultClientInitializerFactory.java | 1 +
.../camel/component/netty4/NettyEndpoint.java | 2 +
.../camel/component/netty4/NettyProducer.java | 1 +
.../netty4/ShareableChannelHandlerFactory.java | 1 +
.../SingleTCPNettyServerBootstrapFactory.java | 6 +
.../SingleUDPNettyServerBootstrapFactory.java | 6 +
.../component/netty4/codec/ObjectDecoder.java | 1 +
.../camel/component/netty4/BaseNettyTest.java | 22 +-
.../camel/component/netty4/MultipleCodecsTest.java | 46 +-
.../NettyConsumerClientModeReconnectTest.java | 2 +
.../NettyConsumerClientModeReuseChannelTest.java | 2 +
.../netty4/NettyConsumerClientModeTest.java | 2 +
.../camel/component/netty4/NettyConverterTest.java | 1 +
.../component/netty4/NettyCustomCodecTest.java | 30 +-
.../netty4/NettyCustomCorrelationManagerTest.java | 23 +-
.../NettyCustomPipelineFactoryAsynchTest.java | 33 +-
.../NettyCustomPipelineFactorySynchTest.java | 42 +-
.../camel/component/netty4/NettyFileTcpTest.java | 1 +
.../netty4/NettySSLClientCertHeadersTest.java | 34 +-
.../netty4/NettySSLConsumerClientModeTest.java | 77 +-
.../netty4/NettySSLContextParametersTest.java | 41 +-
.../netty4/NettySSLPassphaseBeanTest.java | 18 +-
.../camel/component/netty4/NettySSLTest.java | 27 +-
.../component/netty4/NettySingleCodecTest.java | 20 +-
.../NettyTcpWithInOutUsingPlainSocketTest.java | 1 +
.../netty4/NettyTransferExchangeOptionTest.java | 1 +
...yUDPMessageLargerThanDefaultBufferSizeTest.java | 16 +-
.../NettyUdpWithInOutUsingPlainSocketTest.java | 1 +
...ttyUseSharedWorkerThreadPoolManyRoutesTest.java | 29 +-
.../netty4/NettyUseSharedWorkerThreadPoolTest.java | 38 +-
.../netty4/UnsharableCodecsConflicts2Test.java | 23 +-
.../netty4/UnsharableCodecsConflictsTest.java | 29 +-
.../camel-nsq/src/main/docs/nsq-component.adoc | 12 +-
.../apache/camel/component/nsq/NsqComponent.java | 1 +
.../apache/camel/component/nsq/NsqEndpoint.java | 2 +
.../camel-ognl/src/main/docs/ognl-language.adoc | 14 +-
.../apache/camel/language/ognl/OgnlExpression.java | 2 +
.../apache/camel/language/ognl/OgnlLanguage.java | 2 +
.../camel/language/ognl/MyClassResolver.java | 1 +
.../org/apache/camel/language/ognl/OgnlTest.java | 1 +
.../camel/language/ognl/patterns/FilterTest.java | 1 +
.../olingo2/api/batch/Olingo2BatchRequest.java | 1 +
.../src/main/docs/olingo2-component.adoc | 28 +-
.../camel/component/olingo2/Olingo2Endpoint.java | 3 +
.../olingo4/api/batch/Olingo4BatchRequest.java | 1 +
.../src/main/docs/olingo4-component.adoc | 26 +-
.../camel/component/olingo4/Olingo4Endpoint.java | 3 +
.../src/main/docs/openstack-cinder-component.adoc | 30 +-
.../src/main/docs/openstack-glance-component.adoc | 20 +-
.../main/docs/openstack-keystone-component.adoc | 48 +-
.../src/main/docs/openstack-neutron-component.adoc | 42 +-
.../src/main/docs/openstack-nova-component.adoc | 36 +-
.../src/main/docs/openstack-swift-component.adoc | 30 +-
.../camel-openstack/src/main/docs/openstack.adoc | 2 +-
.../component/openstack/cinder/CinderEndpoint.java | 2 +
.../component/openstack/glance/GlanceEndpoint.java | 2 +
.../openstack/keystone/KeystoneEndpoint.java | 2 +
.../openstack/neutron/NeutronEndpoint.java | 2 +
.../component/openstack/nova/NovaEndpoint.java | 2 +
.../component/openstack/swift/SwiftEndpoint.java | 2 +
.../src/main/docs/opentracing.adoc | 14 +-
.../opentracing/decorators/Http4SpanDecorator.java | 26 -
.../org.apache.camel.opentracing.SpanDecorator | 1 -
.../OpentracingSpanCollectorInRegistryTest.java | 11 +-
.../agent/InstallOpenTracingTracerRuleTest.java | 15 +-
.../src/main/docs/optaplanner-component.adoc | 22 +-
.../optaplanner/OptaPlannerComponent.java | 1 +
.../optaplanner/OptaPlannerAsyncSolverTest.java | 1 +
.../optaplanner/OptaPlannerConsumerTest.java | 1 +
.../optaplanner/OptaPlannerDaemonSolverTest.java | 1 +
.../optaplanner/OptaPlannerSyncSolverTest.java | 1 +
.../camel-paho/src/main/docs/paho-component.adoc | 19 +-
.../apache/camel/component/paho/PahoConstants.java | 5 +
.../apache/camel/component/paho/PahoEndpoint.java | 21 +-
.../camel/component/paho/PahoComponentTest.java | 29 +-
.../component/paho/PahoOverrideTopicTest.java | 10 +-
.../src/main/docs/paxlogging-component.adoc | 16 +-
.../component/paxlogging/PaxLoggingConsumer.java | 1 +
.../component/paxlogging/PaxLoggingEndpoint.java | 3 +
.../camel-pdf/src/main/docs/pdf-component.adoc | 16 +-
.../pdf/text/DefaultLineBuilderStrategy.java | 1 +
.../main/docs/pg-replication-slot-component.adoc | 16 +-
.../src/main/docs/pgevent-component.adoc | 12 +-
.../camel/component/pgevent/PgEventConsumer.java | 1 +
...gEventWithDefinedDatasourceIntegrationTest.java | 10 +-
.../camel-printer/src/main/docs/lpr-component.adoc | 24 +-
.../camel/component/printer/PrintDocument.java | 7 +-
.../camel/component/printer/PrinterEndpoint.java | 3 +
.../camel/component/printer/PrinterOperations.java | 1 +
.../camel/component/printer/PrinterProducer.java | 1 +
.../src/main/docs/properties-component.adoc | 76 +-
.../AbstractLocationPropertiesSource.java | 1 +
.../properties/DefaultPropertiesParser.java | 1 +
.../component/properties/FilePropertiesSource.java | 1 +
.../component/properties/PropertiesComponent.java | 10 +
.../component/properties/RefPropertiesSource.java | 1 +
.../src/main/docs/protobuf-dataformat.adoc | 22 +-
.../dataformat/protobuf/ProtobufDataFormat.java | 4 +
.../src/main/docs/pubnub-component.adoc | 28 +-
.../camel/component/pubnub/PubNubTestBase.java | 13 +-
components/camel-pulsar/pom.xml | 65 ++
.../src/main/docs/pulsar-component.adoc | 12 +-
.../component/pulsar/PulsarComponentTest.java | 1 +
.../pulsar/PulsarConcurrentConsumerInTest.java | 19 +-
.../pulsar/PulsarConcurrentProducerInTest.java | 20 +-
.../component/pulsar/PulsarConsumerInTest.java | 20 +-
.../component/pulsar/PulsarProducerInTest.java | 20 +-
.../src/main/docs/quartz2-component.adoc | 44 +-
.../quartz2/CronScheduledRoutePolicy.java | 1 +
.../camel/routepolicy/quartz2/ScheduledJob.java | 1 +
.../quartz2/SimpleScheduledRoutePolicy.java | 1 +
.../quartz2/QuartzCustomCalendarFireTest.java | 18 +-
.../quartz2/QuartzCustomCalendarNoFireTest.java | 18 +-
.../QuartzStartDelayedWithReferenceTest.java | 19 +-
.../src/main/docs/quickfix-component.adoc | 62 +-
.../src/main/docs/rabbitmq-component.adoc | 24 +-
.../camel/component/rabbitmq/RabbitConsumer.java | 5 +
.../rabbitmq/RabbitMQMessagePublisher.java | 2 +-
.../camel/component/rabbitmq/RabbitMQProducer.java | 1 +
.../rabbitmq/reply/ReplyManagerSupport.java | 7 +
.../rabbitmq/reply/TemporaryQueueReplyHandler.java | 2 +
.../rabbitmq/reply/TemporaryQueueReplyManager.java | 2 +
...essageIdAsCorrelationIdMessageSentCallback.java | 1 +
.../rabbitmq/RabbitMQConsumerIntTest.java | 16 +-
.../component/rabbitmq/RabbitMQEndpointTest.java | 8 +-
.../component/rabbitmq/RabbitMQInOutIntTest.java | 11 +-
.../RabbitMQLookupConnectionFactoryTest.java | 8 +-
.../src/main/docs/reactive-executor-vertx.adoc | 8 +-
.../src/main/docs/reactive-streams-component.adoc | 38 +-
.../engine/DefaultCamelReactiveStreamsService.java | 3 +
.../reactive/streams/DirectClientAPITest.java | 91 +-
.../src/main/docs/reactor-component.adoc | 2 +-
.../reactor/engine/ReactorStreamsService.java | 1 +
.../reactor/engine/ReactorStreamsServiceTest.java | 12 +-
.../camel-ref/src/main/docs/ref-component.adoc | 16 +-
.../apache/camel/component/ref/RefComponent.java | 1 +
components/camel-rest-swagger/pom.xml | 2 +-
.../src/main/docs/rest-swagger-component.adoc | 17 +-
.../camel/component/rest/swagger/HttpsTest.java | 6 -
.../src/main/docs/rest-api-component.adoc | 12 +-
.../camel-rest/src/main/docs/rest-component.adoc | 29 +-
.../camel/component/rest/DefaultRestRegistry.java | 19 +-
.../rest/RestProducerBindingProcessor.java | 2 +-
components/camel-restlet/pom.xml | 11 +-
.../src/main/docs/restlet-component.adoc | 30 +-
.../component/restlet/DefaultRestletBinding.java | 10 +-
.../camel/component/restlet/RestletComponent.java | 2 +
.../camel/component/restlet/RestletEndpoint.java | 4 +
.../RecipientListInflightExchangesTest.java | 1 +
.../RestRestletCustomDataFormatInvalidTest.java | 22 +-
.../component/restlet/RestRestletGetTest.java | 28 +-
.../component/restlet/RestRestletRouterIdTest.java | 100 +-
.../RestletHttpsWithSSLContextParametersTest.java | 46 +-
.../restlet/RestletMultiMethodsEndpointTest.java | 1 +
.../restlet/RestletMultiRoutesEndpointTest.java | 1 +
.../component/restlet/RestletPostContentTest.java | 3 +-
.../component/restlet/RestletPostFormTest.java | 3 +-
.../component/restlet/RestletProducerSSLTest.java | 14 +-
.../restlet/RestletProducerSessionTest.java | 66 +-
.../camel/component/restlet/RestletQueryTest.java | 3 +-
.../restlet/RestletValidUriQueryTest.java | 3 +-
components/camel-ribbon/pom.xml | 2 +-
components/camel-ribbon/src/main/docs/ribbon.adoc | 6 +-
.../camel-rss/src/main/docs/rss-component.adoc | 22 +-
.../camel-rss/src/main/docs/rss-dataformat.adoc | 6 +-
.../component/rss/AggregateRssFeedStrategy.java | 1 +
.../apache/camel/component/rss/RssComponent.java | 1 +
.../camel/component/rss/RssDateComparator.java | 1 +
.../component/rss/RssEntryPollingConsumer.java | 1 +
.../camel/component/rss/UpdatedDateFilter.java | 1 +
.../apache/camel/dataformat/rss/RssDataFormat.java | 2 +
.../camel/component/rss/RssEndpointTest.java | 1 +
.../component/rss/RssEntryPollingConsumerTest.java | 1 +
.../rss/RssEntryPollingConsumerWithFilterTest.java | 1 +
.../component/rss/RssEntrySortDefaultsTest.java | 1 +
.../camel/component/rss/RssEntrySortTest.java | 1 +
.../apache/camel/component/rss/RssFilterTest.java | 1 +
.../component/rss/RssPollingConsumerTest.java | 1 +
...sPollingConsumerWithFeedHeaderDisabledTest.java | 1 +
.../camel/dataformat/rss/RssConverterTest.java | 1 +
.../camel/dataformat/rss/RssDataFormatTest.java | 1 +
.../dataformat/rss/RssFilterWithXPathTest.java | 1 +
components/camel-rxjava/pom.xml | 97 ++
components/camel-rxjava/src/main/docs/rxjava.adoc | 20 +
.../rxjava2/engine/RxJavaCamelProcessor.java | 0
.../rxjava2/engine/RxJavaStreamsConstants.java | 38 +
.../rxjava2/engine/RxJavaStreamsService.java | 329 +++++++
.../engine/RxJavaStreamsServiceFactory.java | 0
.../org/apache/camel/reactive-streams/rxjava} | 0
.../RxJavaStreamsServiceBackpressureTest.java | 0
.../engine/RxJavaStreamsServiceEventTypeTest.java | 0
.../engine/RxJavaStreamsServiceSubscriberTest.java | 0
.../rxjava2/engine/RxJavaStreamsServiceTest.java | 334 +++++++
.../engine/RxJavaStreamsServiceTestSupport.java | 0
.../rxjava2/engine/suport/TestSubscriber.java | 0
.../src/test/resources/log4j2.properties | 33 +
components/camel-rxjava2/pom.xml | 97 --
.../camel-rxjava2/src/main/docs/rxjava2.adoc | 20 -
.../rxjava2/engine/RxJavaStreamsConstants.java | 38 -
.../rxjava2/engine/RxJavaStreamsService.java | 328 -------
.../rxjava2/engine/RxJavaStreamsServiceTest.java | 403 --------
.../src/test/resources/log4j2.properties | 33 -
.../camel-saga/src/main/docs/saga-component.adoc | 12 +-
.../src/main/docs/salesforce-component.adoc | 56 +-
.../component/salesforce/SalesforceComponent.java | 4 +-
.../component/salesforce/SalesforceConsumer.java | 1 +
.../component/salesforce/SalesforceEndpoint.java | 3 +
.../salesforce/api/dto/SObjectDescription.java | 1 +
.../internal/client/AbstractClientBase.java | 1 +
.../internal/client/DefaultRestClient.java | 1 +
.../internal/client/SalesforceSecurityHandler.java | 1 +
.../internal/processor/XmlRestProcessor.java | 1 +
.../ApprovalExamplesIntegrationTest.java | 11 +-
.../CompositeApiBatchIntegrationTest.java | 4 +-
components/camel-sap-netweaver/pom.xml | 2 +-
.../src/main/docs/sap-netweaver-component.adoc | 22 +-
.../src/main/docs/xquery-component.adoc | 30 +-
.../camel-saxon/src/main/docs/xquery-language.adoc | 26 +-
.../camel/component/xquery/XQueryBuilder.java | 5 +
.../camel/component/xquery/XQueryComponent.java | 1 +
.../component/xquery/XQueryModuleURIResolver.java | 1 +
.../camel/language/xquery/XQueryLanguage.java | 2 +
.../camel/builder/XsltAggregationStrategyTest.java | 1 +
.../builder/saxon/BeanWithXQueryInjectionTest.java | 1 +
.../saxon/XPathAnnotationResultTypeTest.java | 1 +
.../camel/builder/saxon/XQueryFilterTest.java | 1 +
...XQueryHeaderNameResultTypeAndNamespaceTest.java | 1 +
.../camel/builder/saxon/XQueryHeaderNameTest.java | 1 +
.../builder/saxon/XQueryRecipientListTest.java | 1 +
.../camel/builder/saxon/XQueryTransformTest.java | 1 +
.../builder/saxon/XQueryTransformTextTest.java | 1 +
.../saxon/XQueryWithNamespacesFilterTest.java | 1 +
.../component/xquery/XQueryConcurrencyTest.java | 1 +
.../camel/component/xquery/XQueryEndpointTest.java | 1 +
.../camel/component/xquery/XQueryExampleTest.java | 1 +
.../camel/component/xquery/XQueryFromFileTest.java | 1 +
.../xquery/XQueryLanguageFromFileTest.java | 1 +
.../component/xquery/XQueryNullHeaderTest.java | 1 +
.../xquery/XQueryPropogateHeadersTest.java | 1 +
.../xquery/XQueryURLBasedConcurrencyTest.java | 1 +
.../xquery/XQueryWithExplicitTypeTest.java | 1 +
.../component/xquery/XQueryWithExtensionTest.java | 11 +-
.../component/xslt/SaxonXsltFeatureRouteTest.java | 4 +-
.../camel/converter/saxon/SaxonConverterTest.java | 1 +
.../camel/language/xpath/XPathLanguageTest.java | 1 +
.../src/main/docs/scheduler-component.adoc | 24 +-
.../src/main/docs/schematron-component.adoc | 18 +-
.../component/schematron/SchematronComponent.java | 1 +
.../component/schematron/SchematronEndpoint.java | 2 +
.../component/schematron/SchematronProducer.java | 1 +
.../camel-seda/src/main/docs/seda-component.adoc | 28 +-
.../apache/camel/component/seda/SedaConsumer.java | 7 +
.../apache/camel/component/seda/SedaEndpoint.java | 4 +
.../apache/camel/component/seda/SedaProducer.java | 4 +-
.../src/main/docs/service-component.adoc | 18 +-
.../src/main/docs/servicenow-component.adoc | 16 +-
.../component/servicenow/ServiceNowParams.java | 6 +
components/camel-servlet/pom.xml | 5 +
.../src/main/docs/servlet-component.adoc | 36 +-
.../camel/component/servlet/ServletEndpoint.java | 2 +-
.../ExposedServletEndpointURIToJMXTest.java | 1 +
.../servlet/HttpClientRouteExampleSpringTest.java | 2 +
.../servlet/HttpClientRouteSpringTest.java | 2 +
.../component/servlet/HttpClientRouteTest.java | 1 +
.../servlet/MultiServletConsumerTest.java | 2 +
.../servlet/ServletCamelRouterTestSupport.java | 2 +
.../servlet/ServletNoSlashNeededTest.java | 1 +
.../component/servlet/ServletRootPathTest.java | 1 +
.../component/servlet/ServletSetBodyTest.java | 1 +
.../component/servlet/rest/RestServletGetTest.java | 31 +-
.../servlet/rest/RestServletGetWildcardsTest.java | 45 +-
.../rest/RestServletMethodNotAllowedTest.java | 31 +-
.../servlet/rest/RestServletOptionsTest.java | 25 +-
components/camel-shiro/src/main/docs/shiro.adoc | 18 +-
.../shiro/security/ShiroSecurityPolicy.java | 2 +
.../shiro/security/ShiroSecurityTokenInjector.java | 1 +
.../security/ShiroAuthenticationBase64Test.java | 2 +
...nticationReauthenticateFalseAndNewUserTest.java | 2 +
.../shiro/security/ShiroAuthenticationTest.java | 2 +
.../shiro/security/ShiroAuthorizationTest.java | 1 +
.../security/ShiroRolesAuthorizationTest.java | 1 +
.../camel-sip/src/main/docs/sip-component.adoc | 18 +-
.../apache/camel/component/sip/SipEndpoint.java | 2 +
.../apache/camel/component/sip/SipPublisher.java | 1 +
.../sip/listener/SipPresenceAgentListener.java | 6 +
.../component/sip/listener/SipPublishListener.java | 8 +-
.../sip/listener/SipSubscriptionListener.java | 6 +
.../src/main/docs/sjms-batch-component.adoc | 12 +-
.../camel-sjms/src/main/docs/sjms-component.adoc | 46 +-
.../apache/camel/component/sjms/SjmsEndpoint.java | 4 +
.../apache/camel/component/sjms/SjmsMessage.java | 1 +
.../apache/camel/component/sjms/SjmsProducer.java | 2 +
.../component/sjms/batch/SjmsBatchConsumer.java | 1 +
.../component/sjms/batch/SjmsBatchEndpoint.java | 2 +
.../sjms/consumer/InOutMessageHandler.java | 3 +-
.../sjms/jms/DefaultJmsKeyFormatStrategy.java | 2 +
.../component/sjms/jms/Jms11ObjectFactory.java | 2 +
.../tx/SessionBatchTransactionSynchronization.java | 1 +
.../component/sjms/AsyncStartStopListenerTest.java | 1 +
.../component/sjms/JmsSelectorOptionTest.java | 1 +
.../camel/component/sjms/JmsSelectorTest.java | 1 +
.../component/sjms/SjmsComponentRestartTest.java | 14 +-
.../sjms/SjmsEndpointNameOverrideTest.java | 1 +
.../camel/component/sjms/SjmsEndpointTest.java | 1 +
.../component/sjms/bugfixes/CAMEL6820Test.java | 1 +
.../sjms/consumer/AsyncConsumerFalseTest.java | 1 +
.../sjms/consumer/AsyncConsumerInOutTest.java | 1 +
.../sjms/consumer/EmptyMessageBodyTest.java | 1 +
.../InOnlyConsumerQueueSynchronousTest.java | 1 +
.../sjms/consumer/InOnlyConsumerQueueTest.java | 1 +
.../sjms/consumer/InOnlyConsumerTempQueueTest.java | 1 +
.../sjms/consumer/InOnlyConsumerTopicTest.java | 1 +
.../sjms/consumer/InOutConcurrentConsumerTest.java | 2 +
.../sjms/consumer/InOutConsumerQueueAsyncTest.java | 1 +
.../sjms/consumer/InOutConsumerQueueTest.java | 1 +
.../consumer/InOutConsumerTempQueueAsyncTest.java | 1 +
.../sjms/consumer/InOutConsumerTempQueueTest.java | 1 +
.../sjms/consumer/InOutConsumerTopicTest.java | 1 +
.../consumer/InOutSynchronousConsumerTest.java | 1 +
.../sjms/producer/AsyncQueueProducerTest.java | 1 +
.../sjms/producer/AsyncTopicProducerTest.java | 1 +
.../component/sjms/producer/PrefillPoolTest.java | 1 +
.../component/sjms/support/MockConnection.java | 1 +
.../sjms/support/MockConnectionFactory.java | 2 +
.../sjms/support/MockMessageConsumer.java | 1 +
.../camel/component/sjms/support/MockSession.java | 2 +
.../component/sjms/support/MyAsyncEndpoint.java | 3 +
.../component/sjms/support/MyAsyncProducer.java | 2 +
.../sjms/support/MyInOutTestConsumer.java | 1 +
.../camel-sjms2/src/main/docs/sjms2-component.adoc | 50 +-
.../component/sjms2/Sjms2ComponentRestartTest.java | 18 +-
.../sjms2/Sjms2EndpointNameOverrideTest.java | 1 +
.../camel/component/sjms2/Sjms2EndpointTest.java | 1 +
.../camel-slack/src/main/docs/slack-component.adoc | 20 +-
.../camel/component/slack/SlackConsumerTest.java | 1 +
.../camel-smpp/src/main/docs/smpp-component.adoc | 30 +-
.../smpp/MessageReceiverListenerImpl.java | 3 +
.../component/smpp/SmppConnectionFactory.java | 1 +
.../apache/camel/component/smpp/SmppEndpoint.java | 2 +
.../camel/component/smpp/SmppNLSTSplitter.java | 1 +
.../apache/camel/component/smpp/SmppProducer.java | 1 +
.../integration/SmppComponentIntegrationTest.java | 1 +
.../SmppConsumerReconnectIntegrationTest.java | 1 +
.../SmppProducerReconnectIntegrationTest.java | 1 +
.../src/main/docs/yaml-snakeyaml-dataformat.adoc | 12 +-
.../camel-snmp/src/main/docs/snmp-component.adoc | 20 +-
.../apache/camel/component/snmp/SnmpEndpoint.java | 3 +
.../apache/camel/component/snmp/SnmpOIDPoller.java | 1 +
.../camel/component/snmp/SnmpTrapConsumer.java | 1 +
.../apache/camel/component/snmp/PollOIDTest.java | 1 +
.../org/apache/camel/component/snmp/TrapTest.java | 1 +
.../src/main/docs/soapjaxb-dataformat.adoc | 24 +-
.../dataformat/soap/Soap11DataFormatAdapter.java | 1 +
.../dataformat/soap/Soap12DataFormatAdapter.java | 1 +
.../camel/dataformat/soap/SoapJaxbDataFormat.java | 2 +
.../camel/dataformat/soap/name/QNameStrategy.java | 2 +
.../soap/name/ServiceInterfaceStrategy.java | 2 +
.../dataformat/soap/name/TypeNameStrategy.java | 2 +
.../camel/dataformat/soap/FileReplyProcessor.java | 1 +
.../camel/dataformat/soap/SoapCxfClientTest.java | 1 +
.../camel/dataformat/soap/SoapCxfServerTest.java | 1 +
.../camel-solr/src/main/docs/solr-component.adoc | 22 +-
.../src/main/docs/soroush-component.adoc | 24 +-
.../soroushbot/support/SoroushMockServer.java | 1 +
components/camel-spark-rest/pom.xml | 2 +-
.../src/main/docs/spark-rest-component.adoc | 18 +-
.../camel/component/sparkrest/CamelSparkRoute.java | 2 +-
.../camel-spark/src/main/docs/spark-component.adoc | 30 +-
.../camel/component/spark/SparkProducerTest.java | 7 +-
.../src/main/docs/splunk-component.adoc | 24 +-
.../splunk/DefaultSplunkConfigurationFactory.java | 1 +
.../camel/component/splunk/SplunkComponent.java | 1 +
.../camel/component/splunk/SplunkEndpoint.java | 2 +
.../camel/component/splunk/SplunkProducer.java | 1 +
.../component/splunk/support/SplunkDataWriter.java | 3 +
.../src/main/docs/spring-batch-component.adoc | 26 +-
.../spring/batch/SpringBatchEndpointTest.java | 6 +-
.../spring/batch/SpringBatchIntegrationTest.java | 1 +
.../spring/batch/SpringBatchJobLauncherTest.java | 1 +
components/camel-spring-boot/pom.xml | 2 +-
.../src/main/docs/spring-boot.adoc | 38 +-
.../spring/boot/CamelConfigurationProperties.java | 15 +
.../cloud/CamelCloudConfigurationProperties.java | 2 +-
components/camel-spring-cloud-consul/pom.xml | 2 +-
.../src/main/docs/spring-cloud-consul.adoc | 2 +-
components/camel-spring-cloud-netflix/pom.xml | 2 +-
.../src/main/docs/spring-cloud-netflix.adoc | 4 +-
components/camel-spring-cloud-zookeeper/pom.xml | 2 +-
.../src/main/docs/spring-cloud-zookeeper.adoc | 2 +-
components/camel-spring-cloud/pom.xml | 2 +-
.../src/main/docs/spring-cloud.adoc | 4 +-
.../main/docs/spring-integration-component.adoc | 22 +-
.../integration/SpringIntegrationComponent.java | 1 +
.../integration/SpringIntegrationConsumer.java | 3 +
.../integration/SpringIntegrationEndpoint.java | 3 +
.../integration/SpringIntegrationMessage.java | 1 +
.../integration/SpringIntegrationProducer.java | 1 +
.../integration/adapter/CamelSourceAdapter.java | 3 +
.../integration/adapter/CamelTargetAdapter.java | 1 +
.../AbstractCamelContextBeanDefinitionParaser.java | 1 +
.../adapter/config/NamespaceHandler.java | 1 +
.../component/spring/integration/MyProcessor.java | 1 +
.../SpringIntegrationChannelConverterTest.java | 1 +
.../SpringIntegrationOneWayConsumerTest.java | 1 +
.../integration/SpringIntegrationProducerTest.java | 1 +
.../SpringIntegrationTwoWayConsumerTest.java | 1 +
.../src/main/docs/spring-javaconfig.adoc | 8 +-
.../spring/javaconfig/CamelConfiguration.java | 2 +
.../org/apache/camel/spring/javaconfig/Main.java | 1 +
.../spring/javaconfig/config/ContextConfig.java | 1 +
.../spring/javaconfig/patterns/FilterTest.java | 1 +
.../test/JavaConfigWithNestedConfigClassTest.java | 1 +
.../test/JavaConfigWithPostProcessorTest.java | 1 +
.../spring/javaconfig/test/MyPostProcessor.java | 2 +
.../src/main/docs/spring-ldap-component.adoc | 26 +-
.../springldap/SpringLdapProducerTest.java | 1 +
.../src/main/docs/spring-redis-component.adoc | 20 +-
.../component/redis/AllRedisProcessorsCreator.java | 1 +
.../camel/component/redis/RedisComponent.java | 1 +
.../camel/component/redis/RedisEndpoint.java | 3 +
.../idempotent/RedisIdempotentRepository.java | 8 +
.../camel/component/redis/RedisConnectionTest.java | 10 +-
.../redis/RedisConsumerIntegrationTest.java | 7 +-
.../camel/component/redis/RedisConsumerTest.java | 11 +-
.../apache/camel/component/redis/RedisGeoTest.java | 10 +-
.../camel/component/redis/RedisHashTest.java | 7 +-
.../apache/camel/component/redis/RedisKeyTest.java | 10 +-
.../camel/component/redis/RedisListTest.java | 7 +-
.../redis/RedisProducerIntegrationTest.java | 12 +-
.../apache/camel/component/redis/RedisSetTest.java | 7 +-
.../camel/component/redis/RedisSortedSetTest.java | 7 +-
.../camel/component/redis/RedisStringTest.java | 7 +-
.../component/redis/RedisTransactionTest.java | 10 +-
...sStringIdempotentRepositoryIntegrationTest.java | 7 +-
.../src/main/docs/spring-security.adoc | 14 +-
.../security/DefaultAuthenticationAdapter.java | 1 +
.../SpringSecurityAuthorizationPolicy.java | 5 +
.../security/config/BeanDefinitionParser.java | 2 +
.../spring/security/config/NamespaceHandler.java | 1 +
.../SpringSecurityAuthorizationPolicyParser.java | 2 +
.../src/main/docs/spring-ws-component.adoc | 40 +-
.../spring/ws/SpringWebserviceComponent.java | 1 +
.../spring/ws/SpringWebserviceConsumer.java | 3 +-
.../spring/ws/SpringWebserviceEndpoint.java | 2 +
.../spring/ws/SpringWebserviceProducer.java | 2 +
.../spring/ws/bean/CamelEndpointDispatcher.java | 1 +
.../spring/ws/bean/CamelEndpointMapping.java | 6 +
.../spring/ws/bean/WSACamelEndpointMapping.java | 2 +
.../spring/ws/filter/impl/BasicMessageFilter.java | 2 +-
.../impl/HeaderTransformationMessageFilter.java | 2 +-
.../spring/ws/ConsumerBreadcrumbIdTest.java | 9 +-
...ConsumerEndpointMappingByBeanNameRouteTest.java | 1 +
...erEndpointMappingResponseHandlingRouteTest.java | 1 +
.../ws/ConsumerEndpointMappingRouteTest.java | 1 +
.../ws/ConsumerExceptionPropagationRouteTest.java | 7 +-
.../spring/ws/ConsumerMarshallingRouteTest.java | 7 +-
.../ws/MessageFilterResolvingDefaultsTest.java | 1 +
.../spring/ws/MessageFilterResolvingTest.java | 1 +
.../spring/ws/SoapAttachmentResponseProcessor.java | 1 +
.../spring/ws/SoapHeaderResponseProcessor.java | 1 +
.../spring/ws/StockQuoteResponseProcessor.java | 1 +
.../spring/ws/addressing/AbstractWSATests.java | 1 +
.../ws/addressing/CamelDirectSenderTest.java | 1 +
.../ConsumerWSAEndpointMappingRouteTest.java | 1 +
.../ConsumerWSANewChannelParamsActionTests.java | 1 +
.../ConsumerWSANewChannelParamsToTests.java | 1 +
.../ConsumerWSASameChannelParamsActionTests.java | 1 +
.../ConsumerWSASameChannelParamsToTests.java | 1 +
.../ws/addressing/ProducerParamsBasicTest.java | 1 +
.../addressing/ProducerParamsPrecedenceTest.java | 1 +
.../spring/ws/addressing/StaticIdStrategy.java | 1 +
.../ws/processor/FaultResponseProcessor.java | 1 +
.../spring/ws/processor/OkResponseProcessor.java | 1 +
.../spring/ws/processor/PrecedenceProcessor.java | 1 +
...ProducerWss4JSecurityHeaderTestInterceptor.java | 1 +
components/camel-spring/pom.xml | 5 +
.../camel-spring/src/main/docs/spel-language.adoc | 16 +-
.../src/main/docs/spring-event-component.adoc | 14 +-
components/camel-spring/src/main/docs/spring.adoc | 30 +-
.../camel/component/event/EventComponent.java | 2 +
.../camel/component/event/EventEndpoint.java | 3 +
.../org/apache/camel/language/spel/RootObject.java | 5 +
.../apache/camel/language/spel/SpelExpression.java | 2 +
.../apache/camel/language/spel/SpelLanguage.java | 2 +
.../spring/CamelConsumerTemplateFactoryBean.java | 1 +
.../camel/spring/CamelContextFactoryBean.java | 70 ++
.../camel/spring/CamelEndpointFactoryBean.java | 1 +
.../CamelFluentProducerTemplateFactoryBean.java | 1 +
.../spring/CamelProducerTemplateFactoryBean.java | 1 +
.../spring/CamelRedeliveryPolicyFactoryBean.java | 1 +
.../camel/spring/CamelRestContextFactoryBean.java | 3 +
.../camel/spring/CamelRouteContextFactoryBean.java | 3 +
.../camel/spring/CamelThreadPoolFactoryBean.java | 1 +
.../camel/spring/ErrorHandlerDefinition.java | 77 +-
.../main/java/org/apache/camel/spring/Main.java | 2 +
.../spring/SpringModelJAXBContextFactory.java | 1 +
.../apache/camel/spring/SpringRouteBuilder.java | 3 +-
.../camel/spring/handler/BeanDefinitionParser.java | 2 +
.../spring/handler/CamelNamespaceHandler.java | 1 +
.../handler/ErrorHandlerDefinitionParser.java | 8 +
.../spring/remoting/CamelProxyFactoryBean.java | 9 +
.../spring/remoting/CamelServiceExporter.java | 5 +
.../spi/BridgePropertyPlaceholderConfigurer.java | 1 +
.../apache/camel/spring/spi/SpringInjector.java | 1 +
.../spring/spi/SpringManagementMBeanAssembler.java | 1 +
.../camel/spring/spi/SpringTransactionPolicy.java | 2 +
.../camel/spring/spi/TransactionErrorHandler.java | 3 +-
.../spring/spi/TransactionErrorHandlerBuilder.java | 3 +
.../spring/spi/TransactionErrorHandlerReifier.java | 1 +
.../org/apache/camel/spring/util/MainRunner.java | 3 +
.../spring/KeyManagersParametersFactoryBean.java | 1 +
.../util/spring/KeyStoreParametersFactoryBean.java | 1 +
.../SSLContextClientParametersFactoryBean.java | 1 +
.../spring/SSLContextParametersFactoryBean.java | 1 +
.../SSLContextServerParametersFactoryBean.java | 1 +
.../spring/SecureRandomParametersFactoryBean.java | 1 +
.../spring/TrustManagersParametersFactoryBean.java | 1 +
.../bean/AutowireConstructorRouteTest.java | 1 +
.../bean/AutowireConstructorRouteTwoTest.java | 1 +
.../camel/component/bean/BeanBindingTest.java | 1 +
.../apache/camel/component/bean/BeanRouteTest.java | 1 +
.../bean/SpringRouteMethodCallStaticTest.java | 1 +
.../camel/component/event/EventRouteTest.java | 1 +
.../camel/component/event/MistypedPackageTest.java | 1 +
.../component/log/CustomExchangeFormatterTest.java | 1 +
.../camel/component/log/SpringLogMarkerTest.java | 1 +
.../apache/camel/component/log/SpringLogTest.java | 1 +
.../SpringOptionalPropertiesDslTest.java | 1 +
...pertiesComponentEIPChoiceConvertBodyToTest.java | 1 +
...ingPropertiesComponentEIPConvertBodyToTest.java | 1 +
...SpringPropertiesComponentInterceptFromTest.java | 1 +
...pringPropertiesComponentOnExceptionRefTest.java | 1 +
.../SpringPropertiesComponentOnExceptionTest.java | 1 +
.../properties/SpringPropertiesRouteFromTest.java | 1 +
.../properties/SpringPropertiesRouteIdTest.java | 1 +
...pringPropertyPlaceholderOnExceptionRefTest.java | 1 +
.../rest/SpringFromRestConfigurationTest.java | 1 +
.../rest/SpringFromRestGetEmbeddedRouteTest.java | 1 +
.../rest/SpringFromRestGetInterceptTest.java | 1 +
.../rest/SpringFromRestGetOnExceptionTest.java | 1 +
.../SpringFromRestGetRouteOnExceptionTest.java | 1 +
.../component/rest/SpringFromRestGetTest.java | 1 +
.../rest/SpringFromRestIdAndDescriptionTest.java | 1 +
.../rest/SpringFromRestUriPrefixTest.java | 1 +
.../validator/SpringValidatorRouteTest.java | 1 +
.../component/xslt/SpringXsltRouteFileTest.java | 1 +
.../camel/component/xslt/SpringXsltRouteTest.java | 1 +
.../SpringTokenXMLPairNamespaceSplitTest.java | 1 +
.../camel/language/SpringXMLTokenSplitTest.java | 1 +
.../apache/camel/language/spel/SpelRouteTest.java | 2 +-
.../apache/camel/language/spel/SpelSpringTest.java | 1 +
.../org/apache/camel/language/spel/SpelTest.java | 3 +
.../camel/processor/RemoveHeadersExcludeTest.java | 1 +
.../apache/camel/spring/CamelContextAwareBean.java | 2 +
.../apache/camel/spring/CamelContextAwareTest.java | 1 +
.../camel/spring/CamelLoadRoutesFromXMLTest.java | 1 +
.../apache/camel/spring/EndpointReferenceTest.java | 2 +
.../apache/camel/spring/EndpointToIdRefTest.java | 1 +
.../org/apache/camel/spring/InjectedBeanTest.java | 1 +
.../apache/camel/spring/RegistryInjectionTest.java | 6 +-
.../RouteRefCamelContextFactoryBeanTest.java | 2 +
.../spring/SpringLogDebugBodyMaxCharsTest.java | 1 +
.../org/apache/camel/spring/SpringMDCTest.java | 2 +
.../camel/spring/SpringMDCTransactedTest.java | 62 +-
.../SpringMDCWithBreadcrumbDisabledTest.java | 2 +
.../camel/spring/SpringMDCWithBreadcrumbTest.java | 2 +
.../camel/spring/StartAndStopEventNotifier.java | 4 +
.../aop/SpringAopClassLevelCamelBeanTest.java | 1 +
.../camel/spring/bind/BeanAsEndpointTest.java | 1 +
.../camel/spring/bind/ProcessorAsEndpointTest.java | 1 +
.../apache/camel/spring/bind/ProcessorStub.java | 1 +
.../DefaultPackageResolverConfigureTest.java | 1 +
.../DualCamelContextEndpointOutsideTest.java | 1 +
.../spring/config/DummyErrorHandlerBuilder.java | 3 +
.../camel/spring/config/ErrorHandlerTest.java | 1 +
.../camel/spring/config/MyFailureProcessor.java | 1 +
...lContextCustomDefaultThreadPoolProfileTest.java | 1 +
...ingCamelContextCustomThreadPoolProfileTest.java | 1 +
...xtSimpleCustomDefaultThreadPoolProfileTest.java | 1 +
.../SpringCamelContextThreadPoolProfilesTest.java | 1 +
...ntextThreadPoolProfilesWithPlaceholderTest.java | 1 +
.../spring/config/scan/component/MyProcessor.java | 1 +
.../spring/example/ContentBasedRouteTest.java | 1 +
.../camel/spring/example/FooEventRouteTest.java | 1 +
.../camel/spring/example/MyCamel1Consumer.java | 49 -
.../camel/spring/example/MyCamel2Consumer.java | 49 -
.../spring/example/MyCamel2RecipientList.java | 36 -
.../apache/camel/spring/example/MyProcessor.java | 1 +
.../camel/spring/example/PojoConsumerTest.java | 1 +
.../example/PojoDualCamelContextConsumerTest.java | 117 ---
.../camel/spring/example/PojoSenderTest.java | 1 +
.../camel/spring/example/PojoVmConsumerTest.java | 1 +
.../camel/spring/example/SimpleRouteTest.java | 1 +
.../camel/spring/example/test1/MyRouteBuilder.java | 1 +
.../SpringFileAntPathMatcherFileFilterTest.java | 1 +
.../file/SpringFileConsumerPreMoveIssueTest.java | 1 +
.../spring/file/SpringFileConsumerPreMoveTest.java | 1 +
.../camel/spring/file/SpringFileRouteTest.java | 1 +
.../file/SpringSimpleFileNameWithQuoteTest.java | 1 +
.../camel/spring/handler/MyErrorProcessor.java | 2 +
...melContextAllowUseOriginalMessageFalseTest.java | 1 +
...amelContextAllowUseOriginalMessageTrueTest.java | 1 +
.../camel/spring/impl/SpringRefDataFormatTest.java | 1 +
.../spring/impl/SpringRoutePolicyFactoryTest.java | 1 +
.../impl/SpringRoutePolicyRefCallbackTest.java | 1 +
...TypeConverterRegistryStatisticsEnabledTest.java | 1 +
.../transformer/SpringTransformerRouteTest.java | 2 +
.../impl/validator/SpringValidatorRouteTest.java | 1 +
.../interceptor/AnnotatedBookServiceImpl.java | 1 +
.../spring/interceptor/AnnotatedConsumeImpl.java | 1 +
.../camel/spring/interceptor/AnnotatedRoute.java | 1 +
.../interceptor/ContainerWideInterceptor.java | 1 +
.../spring/interceptor/DelayerInterceptorTest.java | 1 +
.../MixedPropagationTransactedTest.java | 2 +
.../MixedStreamCachingInterceptorTest.java | 1 +
.../MixedTransactionPropagationTest.java | 2 +
.../NoStreamCachingInterceptorTest.java | 1 +
...eWithTwoRoutesContextScopedOnExceptionTest.java | 1 +
.../SpringAdviceWithTwoRoutesOnExceptionTest.java | 1 +
.../interceptor/SpringAdviceWithTwoRoutesTest.java | 1 +
.../SpringInterceptorStrategyOrderedTest.java | 1 +
...ransactionalClientDataSourceTransactedTest.java | 1 +
...ctionalClientDataSourceUsingTransactedTest.java | 1 +
...hOnExceptionAndRollbackUsingTransactedTest.java | 2 +
...dOnExceptionAndRollbackUsingTransactedTest.java | 1 +
.../interceptor/StreamCachingInterceptorTest.java | 1 +
.../TransactedInterceptSendToEndpointTest.java | 3 +
...InterceptUsingAdviceWithSendToEndpointTest.java | 3 +
.../TransactionClientDataSourceSupport.java | 1 +
.../TransactionalClientDataSourceAsyncTest.java | 2 +
.../TransactionalClientDataSourceHandledTest.java | 2 +
...ransactionalClientDataSourceLookupTypeTest.java | 1 +
.../TransactionalClientDataSourceMDCTest.java | 1 +
...alClientDataSourceMinimalConfigurationTest.java | 1 +
...entDataSourceMixedTransactedRedeliveryTest.java | 1 +
...ctionalClientDataSourceMixedTransactedTest.java | 2 +
...sactionalClientDataSourceNotTransactedTest.java | 2 +
...lClientDataSourceOnExceptionRedeliveryTest.java | 1 +
...ransactionalClientDataSourceRedeliveryTest.java | 1 +
.../TransactionalClientDataSourceTest.java | 1 +
...ransactionalClientDataSourceTransactedTest.java | 1 +
...taSourceTransactedWithChoiceRedeliveryTest.java | 1 +
...alClientDataSourceTransactedWithChoiceTest.java | 1 +
...urceTransactedWithFileLocalOnExceptionTest.java | 1 +
...ataSourceTransactedWithFileOnExceptionTest.java | 1 +
...onalClientDataSourceTransactedWithFileTest.java | 1 +
...taSourceTransactedWithLocalOnExceptionTest.java | 1 +
...lientDataSourceTransactionErrorHandlerTest.java | 1 +
...tDataSourceWithNoErrorHandlerConfigureTest.java | 1 +
...ourceWithOnExceptionHandledAndRollbackTest.java | 2 +
...ptionHandledAndRollbackUsingTransactedTest.java | 2 +
...rceWithOnExceptionMinimalConfigurationTest.java | 1 +
...lientDataSourceWithOnExceptionRollbackTest.java | 2 +
...ctionalClientDataSourceWithOnExceptionTest.java | 2 +
...actedErrorHandlerOnExceptionRedeliveryTest.java | 1 +
.../TransactionalClientWithAnnotatedBeanTest.java | 1 +
.../TransactionalClientWithRollbackTest.java | 2 +
.../route/DataSourceSpringRouteBuilder.java | 1 +
...dSpringOnExceptionErrorHandlerRefIssueTest.java | 1 +
...xceptionNotHandledErrorHandlerRefIssueTest.java | 1 +
...otHandledErrorHandlerRefIssueTwoRoutesTest.java | 1 +
...HandledRouteScopedErrorHandlerRefIssueTest.java | 1 +
...uteScopedErrorHandlerRefIssueTwoRoutesTest.java | 1 +
...ceptionRouteScopedErrorHandlerRefIssueTest.java | 1 +
...uteScopedErrorHandlerRefIssueTwoRoutesTest.java | 1 +
.../spring/issues/MyInjectionRouteBuilder.java | 1 +
.../apache/camel/spring/issues/MyProcessor.java | 1 +
.../apache/camel/spring/issues/MyRouteBuilder.java | 1 +
.../spring/issues/SampleInitializingBean.java | 1 +
.../issues/SampleInitializingRouteBuilder.java | 1 +
.../spring/issues/SampleRouteBuilderContainer.java | 1 +
...ingAdviceWithTwoRoutesOnExceptionIssueTest.java | 1 +
.../spring/issues/SpringCatchNestedFailTest.java | 1 +
...ngCharlesSplitAndTryCatchRollbackIssueTest.java | 1 +
.../issues/SpringExceptionCamel4022Test.java | 1 +
.../spring/issues/SpringFinallyNestedFailTest.java | 1 +
...ngMultipleErrorHandlerOnExceptionIssueTest.java | 1 +
.../SpringOnExceptionErrorHandlerRefIssueTest.java | 1 +
...ExceptionErrorHandlerRefIssueTwoRoutesTest.java | 1 +
...xceptionNotHandledErrorHandlerRefIssueTest.java | 1 +
...otHandledErrorHandlerRefIssueTwoRoutesTest.java | 1 +
...HandledRouteScopedErrorHandlerRefIssueTest.java | 1 +
...uteScopedErrorHandlerRefIssueTwoRoutesTest.java | 1 +
...ceptionRouteScopedErrorHandlerRefIssueTest.java | 1 +
...uteScopedErrorHandlerRefIssueTwoRoutesTest.java | 1 +
.../camel/spring/issues/SpringPackageTest.java | 1 +
.../SpringPropertiesAvailableEverywhereTest.java | 1 +
...uteScopedErrorHandlerRefIssueTwoRoutesTest.java | 1 +
.../issues/SpringRouteIdAutoAssignClashIssue.java | 1 +
...andlerAndContextScopedOnExceptionIssueTest.java | 1 +
.../SpringTryCatchFinallyAndErrorHandlerTest.java | 1 +
.../issues/SpringTryCatchWithSplitIssueTest.java | 1 +
.../spring/issues/SpringTryNestedFailTest.java | 1 +
.../org/apache/camel/spring/main/MyHelloBean.java | 1 +
...ualCamelContextManagedAutoAssignedNameTest.java | 2 +
.../management/DualCamelContextManagedTest.java | 1 +
.../JmxInstrumentationWithConnectorTest.java | 1 +
.../camel/spring/management/MyEventNotifier.java | 1 +
.../SpringCamelContextStartingFailedEventTest.java | 1 +
.../SpringDualLoggingEventNotifierTest.java | 1 +
.../management/SpringLoggingEventNotifierTest.java | 1 +
.../management/SpringManagedCamelContextTest.java | 1 +
.../SpringManagedCustomProcessorTest.java | 1 +
.../management/SpringManagedErrorHandlerTest.java | 1 +
.../SpringManagedNamePatternFixedTest.java | 1 +
.../management/SpringManagedNamePatternTest.java | 1 +
.../management/SpringManagedResourceTest.java | 1 +
...edRouteRemoveContextScopedErrorHandlerTest.java | 1 +
...emoveRouteAndContextScopedErrorHandlerTest.java | 1 +
...agedRouteRemoveRouteScopedErrorHandlerTest.java | 1 +
.../management/SpringManagedSanitizeTest.java | 1 +
.../SpringManagedStatisticsLevelOffTest.java | 1 +
...SpringManagedStatisticsLevelRoutesOnlyTest.java | 1 +
.../management/SpringPublishEventNotifierTest.java | 1 +
.../org/apache/camel/spring/mock/BeanMockTest.java | 1 +
.../org/apache/camel/spring/mock/MyAssertions.java | 1 +
...LanguageWithSpringPropertyPlaceholderRoute.java | 1 +
...uageWithSpringPropertyPlaceholderRouteTest.java | 1 +
...CamelCustomPostProcessorOnRouteBuilderTest.java | 1 +
.../MyRouteBuilderWithAutowiredPojo.java | 1 +
.../camel/spring/processor/MyAggregator.java | 1 +
.../apache/camel/spring/processor/MyProcessor.java | 1 +
.../camel/spring/processor/SetHeaderProcessor.java | 1 +
.../processor/SpringAggregateFromWireTapTest.java | 1 +
.../SpringAggregatorWithCustomStrategyTest.java | 1 +
.../SpringBatchResequencerAllowDuplicatesTest.java | 1 +
.../SpringBatchResequencerJMSPriorityTest.java | 1 +
.../processor/SpringCBRHeaderPredicateTest.java | 1 +
...ingCamelContextLogExhaustedMessageBodyTest.java | 1 +
.../camel/spring/processor/SpringChoiceTest.java | 1 +
.../SpringClaimCheckEipGetAndRemoveSetTest.java | 1 +
.../processor/SpringClaimCheckEipGetSetTest.java | 1 +
.../SpringClaimCheckEipPushPopBodyTest.java | 1 +
...ringClaimCheckEipPushPopHeadersPatternTest.java | 1 +
.../SpringClaimCheckEipPushPopHeadersTest.java | 1 +
...SpringClaimCheckEipPushPopRemoveHeaderTest.java | 1 +
.../processor/SpringClaimCheckEipPushPopTest.java | 1 +
.../processor/SpringComplexBlockWithEndTest.java | 4 +-
.../spring/processor/SpringConvertBodyTest.java | 1 +
.../processor/SpringCustomPredicateTest.java | 1 +
.../SpringCustomProcessorFactoryTest.java | 1 +
.../processor/SpringCustomRefLoadBalanceTest.java | 1 +
...etterChannelLogExhaustedMessageHistoryTest.java | 1 +
.../SpringDeadLetterChannelNewExceptionTest.java | 1 +
.../SpringDeadLetterChannelNoRedeliveryTest.java | 1 +
...DeadLetterChannelNotHandleNewExceptionTest.java | 1 +
.../SpringDeadLetterChannelOnPrepareTestTest.java | 1 +
...ingDeadLetterChannelUseOriginalBodyNewTest.java | 1 +
...SpringDeadLetterChannelUseOriginalBodyTest.java | 1 +
...adLetterChannelUseOriginalBodyWithFileTest.java | 1 +
...efaultErrorHandlerExchangeFormatterRefTest.java | 1 +
...ErrorHandlerLogExhaustedMessageHistoryTest.java | 1 +
...SpringDefaultErrorHandlerOnPrepareTestTest.java | 1 +
.../SpringDefaultErrorHandlerRetryWhileTest.java | 1 +
.../processor/SpringDelayerPerRouteTest.java | 1 +
.../camel/spring/processor/SpringDelayerTest.java | 1 +
.../spring/processor/SpringDynamicRouterTest.java | 1 +
.../processor/SpringEnrichExpressionTest.java | 1 +
.../SpringEnricherAggregateOnExceptionTest.java | 1 +
.../spring/processor/SpringEnricherRefTest.java | 1 +
.../camel/spring/processor/SpringEnricherTest.java | 1 +
...SpringEventNotifierExchangeSentExampleTest.java | 1 +
...ingFailOverLoadBalanceAutoStartupFalseTest.java | 1 +
.../processor/SpringFailOverLoadBalanceTest.java | 1 +
.../SpringFailoverMaximumFailoverAttemptsTest.java | 1 +
.../SpringFailoverRoundRobinStickyTest.java | 1 +
.../processor/SpringFailoverRoundRobinTest.java | 1 +
...pringIdempotentConsumerRemoveOnFailureTest.java | 1 +
.../SpringInheritErrorHandlerDefaultTest.java | 1 +
.../SpringInheritErrorHandlerFalseTest.java | 1 +
.../SpringInheritErrorHandlerTrueTest.java | 1 +
.../SpringInterceptFromEndpointRefTest.java | 1 +
.../spring/processor/SpringInterceptFromTest.java | 1 +
.../processor/SpringInterceptFromUriRegexTest.java | 1 +
.../SpringInterceptFromUriSimpleLogTest.java | 1 +
.../SpringInterceptFromUriWildcardTest.java | 1 +
.../SpringInterceptFromWhenNoStopTest.java | 1 +
.../processor/SpringInterceptFromWhenTest.java | 1 +
.../SpringInterceptFromWhenWithChoiceTest.java | 1 +
.../processor/SpringInterceptFromWithStopTest.java | 1 +
.../SpringInterceptSendToEndpointDynamicTest.java | 1 +
...ngInterceptSendToEndpointInOnExceptionTest.java | 1 +
.../SpringInterceptSendToEndpointSkipTest.java | 1 +
.../SpringInterceptSendToEndpointTest.java | 1 +
.../SpringInterceptSendToEndpointWhenTest.java | 1 +
.../SpringInterceptSimpleRouteStopTest.java | 1 +
.../processor/SpringInterceptSimpleRouteTest.java | 1 +
.../SpringInterceptSimpleRouteWhenStopTest.java | 1 +
.../SpringInterceptSimpleRouteWhenTest.java | 1 +
.../spring/processor/SpringLogProcessorTest.java | 1 +
.../SpringLogProcessorWithProvidedLoggerTest.java | 1 +
.../processor/SpringMarkRollbackOnlyTest.java | 1 +
.../SpringMessageHistoryDumpRoutingTest.java | 1 +
.../spring/processor/SpringMethodCallTest.java | 1 +
.../SpringMulticastNoStopOnExceptionTest.java | 1 +
.../processor/SpringMulticastOnPrepareTest.java | 1 +
.../SpringMulticastStopOnExceptionTest.java | 1 +
.../SpringMulticastSubUnitOfWorkTest.java | 1 +
.../spring/processor/SpringMulticastTest.java | 1 +
.../processor/SpringNestedChoiceIssueTest.java | 1 +
.../spring/processor/SpringNormalizerTest.java | 1 +
...letionAndInterceptAndOnExceptionGlobalTest.java | 1 +
.../SpringOnCompletionAndInterceptGlobalTest.java | 1 +
.../SpringOnCompletionAndInterceptTest.java | 1 +
.../processor/SpringOnCompletionGlobalTest.java | 1 +
.../processor/SpringOnCompletionModeTest.java | 1 +
.../SpringOnCompletionOnCompleteOnlyTest.java | 1 +
.../SpringOnCompletionOnFailureOnlyTest.java | 1 +
...ompletionRouteScopeOverrideGlobalScopeTest.java | 1 +
.../spring/processor/SpringOnCompletionTest.java | 1 +
.../SpringOnCompletionUseOriginalBodyTest.java | 1 +
.../processor/SpringOnCompletionWhenTest.java | 1 +
.../SpringOnExceptionContinueToRouteTest.java | 1 +
.../processor/SpringPolicyPerProcessorTest.java | 1 +
.../spring/processor/SpringPolicyPerRouteTest.java | 1 +
.../processor/SpringPollEnrichExpressionTest.java | 1 +
.../processor/SpringPollEnricherRefTest.java | 1 +
.../spring/processor/SpringPollEnricherTest.java | 1 +
.../processor/SpringRandomLoadBalanceTest.java | 1 +
...SpringRecipientListAggregationStrategyTest.java | 1 +
...pringRecipientListDoNotStopOnExceptionTest.java | 1 +
...ingRecipientListIgnoreInvalidEndpointsTest.java | 1 +
.../SpringRecipientListOnPrepareTest.java | 1 +
...ecipientListParallelOptionalPropertiesTest.java | 1 +
.../SpringRecipientListParallelStreamingTest.java | 1 +
.../processor/SpringRecipientListParallelTest.java | 1 +
.../SpringRecipientListStopOnExceptionTest.java | 1 +
.../SpringRecipientListSubUnitOfWorkTest.java | 1 +
.../SpringRecipientListWithArrayHeaderTest.java | 1 +
...RecipientListWithStringDelimitedHeaderTest.java | 1 +
...cipientListWithStringDelimitedPropertyTest.java | 1 +
.../processor/SpringRedeliverToSubRouteTest.java | 1 +
...veryErrorHandlerNoRedeliveryOnShutdownTest.java | 1 +
.../spring/processor/SpringRemoveHeaderTest.java | 1 +
.../processor/SpringRemoveHeadersExcludeTest.java | 1 +
.../spring/processor/SpringRemoveHeadersTest.java | 1 +
.../SpringRemovePropertiesWithExclusionTest.java | 1 +
...SpringRemovePropertiesWithoutExclusionTest.java | 1 +
.../spring/processor/SpringRemovePropertyTest.java | 1 +
...ringResequenceStreamRejectOldExchangesTest.java | 1 +
.../spring/processor/SpringResequencerTest.java | 1 +
.../camel/spring/processor/SpringRollbackTest.java | 1 +
.../processor/SpringRoundRobinLoadBalanceTest.java | 1 +
.../processor/SpringRouteNoAutoStartupTest.java | 1 +
.../SpringRouteStartupOrderSimpleTest.java | 1 +
.../processor/SpringRouteStartupOrderTest.java | 1 +
.../SpringRouteStartupOrderWithDefaultTest.java | 1 +
.../spring/processor/SpringRouteStopTest.java | 1 +
...RouteWithConstantFieldFromExchangeFailTest.java | 1 +
...ringRouteWithConstantFieldFromExchangeTest.java | 1 +
...pringRoutingSlipIgnoreInvalidEndpointsTest.java | 1 +
.../spring/processor/SpringRoutingSlipTest.java | 1 +
.../camel/spring/processor/SpringSagaTest.java | 1 +
.../processor/SpringSamplingThrottlerTest.java | 1 +
.../spring/processor/SpringScriptExternalTest.java | 1 +
.../camel/spring/processor/SpringScriptTest.java | 1 +
.../camel/spring/processor/SpringSetBodyTest.java | 1 +
.../processor/SpringSetExchangePatternTest.java | 1 +
.../SpringSetExchangePatternWithCustomIdTest.java | 1 +
.../processor/SpringSetHeaderNameDynamicTest.java | 1 +
.../spring/processor/SpringSetHeaderTest.java | 1 +
.../processor/SpringSetHeaderWithConstantTest.java | 1 +
.../SpringSetPropertyNameDynamicTest.java | 1 +
.../spring/processor/SpringSetPropertyTest.java | 1 +
.../SpringShutdownCompleteAllTasksTest.java | 1 +
.../SpringShutdownCompleteCurrentTaskOnlyTest.java | 1 +
.../SpringSimpleProcessorIdAwareTest.java | 1 +
.../processor/SpringSimpleResultTypeRouteTest.java | 1 +
.../camel/spring/processor/SpringSortBodyTest.java | 1 +
.../spring/processor/SpringSortExpressionTest.java | 1 +
.../processor/SpringSplitCustomExpressionTest.java | 1 +
.../processor/SpringSplitGroupMultiLinesTest.java | 1 +
.../processor/SpringSplitGroupSkipFirstTest.java | 1 +
.../processor/SpringSplitSubUnitOfWorkTest.java | 1 +
.../SpringSplitTokenizerGroupDynamicTest.java | 1 +
.../processor/SpringSplitterMethodCallTest.java | 1 +
.../SpringSplitterNoStopOnExceptionTest.java | 1 +
.../processor/SpringSplitterOnPrepareTest.java | 1 +
.../SpringSplitterStopOnExceptionTest.java | 1 +
...ngSplitterWithCustomThreadPoolExecutorTest.java | 1 +
.../processor/SpringStaticRecipientListTest.java | 1 +
.../camel/spring/processor/SpringStepTest.java | 1 +
.../processor/SpringStickyLoadBalanceTest.java | 1 +
.../processor/SpringStreamCachingPerRouteTest.java | 1 +
...ringThreadsCoreAndMaxPoolKeepAliveTimeTest.java | 1 +
.../processor/SpringThreadsCoreAndMaxPoolTest.java | 1 +
.../processor/SpringThreadsCorePoolTest.java | 1 +
.../spring/processor/SpringThreadsDefaultTest.java | 1 +
...ngThreadsExternalThreadPoolFactoryBeanTest.java | 1 +
.../SpringThreadsThreadPoolFactoryBeanTest.java | 1 +
.../processor/SpringThrottlerGroupingTest.java | 1 +
.../processor/SpringThrottlerMethodCallTest.java | 1 +
.../spring/processor/SpringThrottlerTest.java | 1 +
.../SpringThrottlerThreadPoolProfileTest.java | 1 +
.../SpringThrottlingInflightRoutePolicyTest.java | 1 +
.../processor/SpringThrowExceptionMessageTest.java | 1 +
.../spring/processor/SpringThrowExceptionTest.java | 1 +
.../processor/SpringToDynamicIgnoreTest.java | 1 +
...DynamicLanguageSimpleAndXPathAndHeaderTest.java | 1 +
.../SpringToDynamicLanguageSimpleAndXPathTest.java | 1 +
.../SpringToDynamicLanguageXPathTest.java | 1 +
.../spring/processor/SpringToDynamicTest.java | 1 +
.../spring/processor/SpringTokenizerTest.java | 1 +
.../processor/SpringTopicLoadBalanceTest.java | 1 +
.../spring/processor/SpringTransformTest.java | 1 +
...ingTryCatchMustHaveExceptionConfiguredTest.java | 1 +
.../SpringTryProcessorMultipleExceptionTest.java | 1 +
.../processor/SpringTryProcessorOnWhenTest.java | 1 +
.../spring/processor/SpringValidateRegExpTest.java | 1 +
.../spring/processor/SpringValidateSimpleTest.java | 1 +
.../SpringWeightedRandomLoadBalanceTest.java | 1 +
.../SpringWeightedRoundRobinLoadBalanceTest.java | 1 +
.../processor/SpringWireTapExpressionTest.java | 1 +
.../processor/SpringWireTapNewExchangeTest.java | 1 +
.../processor/SpringWireTapOnPrepareTest.java | 1 +
.../camel/spring/processor/SpringWireTapTest.java | 1 +
.../SpringWireTapUsingFireAndForgetCopyTest.java | 2 +
.../SpringWireTapUsingFireAndForgetTest.java | 2 +
.../processor/SpringWireTapVoidBeanTest.java | 1 +
.../spring/processor/SpringXPathFilterTest.java | 1 +
...ilterWithNamespaceOnImportRouteContextTest.java | 1 +
...XPathFilterWithNamespaceOnRouteContextTest.java | 1 +
.../SpringXPathFilterWithNamespaceTest.java | 1 +
...gXPathHeaderNameResultTypeAndNamespaceTest.java | 1 +
.../processor/SpringXPathHeaderNameTest.java | 1 +
.../spring/processor/SpringXPathHeaderTest.java | 1 +
.../processor/TransformWithExpressionTest.java | 1 +
.../SpringAggregateCompleteAllOnStopTest.java | 1 +
.../SpringAggregateCompletionIntervalTest.java | 1 +
.../aggregator/SpringAggregateControllerTest.java | 1 +
.../SpringAggregateDiscardOnTimeoutTest.java | 1 +
.../SpringAggregateExpressionSizeFallbackTest.java | 1 +
.../SpringAggregateExpressionSizeTest.java | 1 +
...ringAggregateExpressionTimeoutFallbackTest.java | 1 +
...ringAggregateExpressionTimeoutPerGroupTest.java | 1 +
.../SpringAggregateExpressionTimeoutTest.java | 1 +
.../SpringAggregateForceCompletionOnStopTest.java | 1 +
...roupedExchangeCompletionExpressionSizeTest.java | 1 +
.../SpringAggregateSimplePredicateEagerTest.java | 1 +
.../SpringAggregateSimplePredicateTest.java | 1 +
.../aggregator/SpringAggregateSimpleSizeTest.java | 1 +
.../SpringAggregateSimpleTimeoutTest.java | 1 +
.../SpringAggregateThreadPoolProfileTest.java | 1 +
...ggregationStrategyBeanAdapterAllowNullTest.java | 1 +
...gationStrategyBeanAdapterRefMethodNameTest.java | 1 +
...pringAggregationStrategyBeanAdapterRefTest.java | 1 +
.../processor/aggregator/SpringAggregatorTest.java | 1 +
.../FileConsumerIdempotentLoadStoreTest.java | 1 +
.../idempotent/FileConsumerIdempotentTest.java | 1 +
.../idempotent/SpringCacheIdempotentTest.java | 1 +
.../SpringParentChildInterceptStrategyTest.java | 1 +
.../DeadLetterChannelHandledExampleTest.java | 1 +
.../spring/processor/onexception/OrderService.java | 17 +-
.../onexception/RedeliveryPolicyReTest.java | 1 +
.../SpringContextScopeOnExceptionTest.java | 1 +
...adLetterChannelOnExceptionOnRedeliveryTest.java | 1 +
.../SpringOnExceptionContinueSubRouteTest.java | 1 +
.../SpringOnExceptionContinueSubSubRouteTest.java | 1 +
.../onexception/SpringOnExceptionContinueTest.java | 1 +
...ngOnExceptionFromChoiceUseOriginalBodyTest.java | 1 +
...ringOnExceptionLoadBalancerDoubleIssueTest.java | 1 +
...pringOnExceptionNotNormalizedClassNameTest.java | 1 +
...nExceptionOccurredProcessorOnExceptionTest.java | 1 +
.../SpringOnExceptionOccurredProcessorTest.java | 1 +
.../onexception/SpringOnExceptionSubRouteTest.java | 1 +
...ceptionSubRouteWithDefaultErrorHandlerTest.java | 1 +
.../SpringOnExceptionUseOriginalBodyTest.java | 1 +
.../SpringOnExceptionUseOriginalMessageTest.java | 1 +
.../SpringOnExceptionWithRouteAndContinueTest.java | 1 +
.../LowestQuoteAggregationStrategy.java | 1 +
.../processor/scattergather/ScatterGatherTest.java | 1 +
.../camel/spring/produce/MyListenerService.java | 1 +
.../org/apache/camel/spring/remoting/Bean.java | 1 +
.../apache/camel/spring/remoting/EchoService.java | 1 +
.../remoting/EchoSpringRemotingPojoDirectTest.java | 1 +
...choSpringRemotingPojoOutOfCamelContextTest.java | 1 +
.../remoting/EchoSpringRemotingPojoTest.java | 1 +
...SpringRemotingThrowingRuntimeExceptionTest.java | 1 +
.../apache/camel/spring/remoting/SayService.java | 1 +
.../SpringRemotingWithExportAndProxyTest.java | 1 +
...ingWithServiceExportAndNamespacesRouteTest.java | 1 +
.../SpringRemotingWithServiceExportRouteTest.java | 1 +
.../spring/routebuilder/CamelRouteBuilderTest.java | 1 +
.../camel/spring/routebuilder/MyOtherRoute.java | 3 +
.../apache/camel/spring/routebuilder/MyRoute.java | 1 +
.../scan/DefaultPackageScanClassResolverTest.java | 1 +
.../scan/PatternBasedPackageScanFilterTest.java | 1 +
.../apache/camel/spring/scan/ScanTestSupport.java | 1 +
.../camel/spring/xml/ConfiguredRouteBuilder.java | 1 +
.../camel/spring/xml/ConfiguredRouteBuilder2.java | 1 +
.../org/apache/camel/spring/RegistryInjection.xml | 2 +-
.../example/pojoDualCamelContextConsumer.xml | 38 -
.../aggregator/SpringAggregateControllerTest.xml | 4 +-
.../SpringAggregateExpressionSizeFallbackTest.xml | 4 +-
.../SpringAggregateExpressionSizeTest.xml | 4 +-
...pringAggregateExpressionTimeoutFallbackTest.xml | 4 +-
...pringAggregateExpressionTimeoutPerGroupTest.xml | 4 +-
.../SpringAggregateExpressionTimeoutTest.xml | 4 +-
...GroupedExchangeCompletionExpressionSizeTest.xml | 4 +-
.../camel-sql/src/main/docs/sql-component.adoc | 54 +-
.../src/main/docs/sql-stored-component.adoc | 24 +-
.../apache/camel/component/sql/SqlEndpoint.java | 2 +
.../apache/camel/component/sql/SqlProducer.java | 1 +
.../component/sql/stored/SqlStoredEndpoint.java | 1 +
.../component/sql/stored/SqlStoredProducer.java | 1 +
.../sql/stored/template/generated/Token.java | 1 +
.../stored/template/generated/TokenMgrError.java | 1 +
.../jdbc/ClassLoadingAwareObjectInputStream.java | 2 +
.../aggregate/jdbc/JdbcAggregationRepository.java | 9 +
.../sql/SqlConsumerDeleteBatchCompleteTest.java | 2 +
.../component/sql/SqlConsumerDeleteFailedTest.java | 2 +
.../camel/component/sql/SqlConsumerDeleteTest.java | 2 +
.../sql/SqlConsumerDeleteTransformTest.java | 2 +
.../sql/SqlConsumerDynamicParameterTest.java | 13 +-
.../sql/SqlConsumerMaxMessagesPerPollTest.java | 2 +
.../sql/SqlConsumerOutputTypeSelectListTest.java | 2 +
...lConsumerOutputTypeSelectListWithClassTest.java | 2 +
.../sql/SqlConsumerOutputTypeStreamListTest.java | 2 +
.../camel/component/sql/SqlConsumerTest.java | 2 +
.../camel/component/sql/SqlDataSourceRefTest.java | 12 +-
.../camel/component/sql/SqlDataSourceTest.java | 14 +-
.../camel/component/sql/SqlEndpointLikeTest.java | 12 +-
.../camel/component/sql/SqlEndpointTest.java | 2 +
.../camel/component/sql/SqlGeneratedKeysTest.java | 2 +
.../camel/component/sql/SqlPreserveHeaderTest.java | 2 +
...qlProducerAlwaysPopulateStatementFalseTest.java | 11 +-
.../SqlProducerAlwaysPopulateStatementTest.java | 10 +-
.../camel/component/sql/SqlProducerAndInTest.java | 2 +
.../component/sql/SqlProducerConcurrentTest.java | 2 +
.../sql/SqlProducerExpressionParameterTest.java | 2 +
.../component/sql/SqlProducerInMultiTest.java | 2 +
.../camel/component/sql/SqlProducerInTest.java | 2 +
.../component/sql/SqlProducerInsertNullTest.java | 2 +
.../camel/component/sql/SqlProducerJSONTest.java | 2 +
.../sql/SqlProducerNamedParameterNotExistTest.java | 2 +
.../sql/SqlProducerNamedParameterTest.java | 2 +
.../sql/SqlProducerNamedParametersTest.java | 2 +
.../camel/component/sql/SqlProducerNoopTest.java | 2 +
.../sql/SqlProducerNullBodyHeaderTest.java | 2 +
.../component/sql/SqlProducerNullBodyTest.java | 2 +
.../component/sql/SqlProducerOutputHeaderTest.java | 2 +
.../sql/SqlProducerOutputHeaderWithQueryTest.java | 2 +
.../sql/SqlProducerOutputTypeSelectListTest.java | 2 +
...lProducerOutputTypeSelectListWithClassTest.java | 2 +
...SqlProducerOutputTypeSelectOneNoResultTest.java | 2 +
.../sql/SqlProducerOutputTypeStreamListTest.java | 2 +
.../sql/SqlProducerParametersCountTest.java | 2 +
.../sql/SqlProducerReuseParameterTest.java | 2 +
.../component/sql/SqlProducerSeparatorTest.java | 2 +
.../sql/SqlProducerUseMessageBodyForSqlTest.java | 2 +
.../component/sql/SqlProducerWhereIssueTest.java | 2 +
.../apache/camel/component/sql/SqlRouteTest.java | 2 +
.../component/sql/SqlTransactedRouteTest.java | 9 +-
.../sql/stored/CallableStatementWrapperTest.java | 2 +
.../sql/stored/ProducerBatchInvalidTest.java | 2 +
.../component/sql/stored/ProducerBatchTest.java | 2 +
.../sql/stored/ProducerBodyArrayTest.java | 2 +
.../component/sql/stored/ProducerInOutTest.java | 2 +
.../camel/component/sql/stored/ProducerTest.java | 2 +
.../ProducerUseMessageBodyForTemplateTest.java | 2 +
.../sql/stored/SqlFunctionDataSourceTest.java | 2 +
.../sql/stored/SqlStoredDataSourceTest.java | 12 +-
.../component/sql/stored/TemplateCacheTest.java | 2 +
.../jdbc/AbstractJdbcAggregationTestSupport.java | 1 +
...ggregateRecoverDeadLetterChannelFailedTest.java | 1 +
.../JdbcAggregateRecoverDeadLetterChannelTest.java | 1 +
.../aggregate/jdbc/JdbcAggregateRecoverTest.java | 1 +
...bcAggregateRecoverWithRedeliveryPolicyTest.java | 1 +
.../jdbc/JdbcAggregateRecoverWithSedaTest.java | 1 +
.../jdbc/JdbcAggregationRepositoryTest.java | 1 +
...ngAggregateRecoverWithRedeliveryPolicyTest.java | 1 +
.../camel-ssh/src/main/docs/ssh-component.adoc | 20 +-
.../camel-stax/src/main/docs/stax-component.adoc | 20 +-
.../camel/component/stax/StaxStreamXMLReader.java | 46 +-
.../camel/component/stax/StAXComponentRefTest.java | 29 +-
.../camel-stomp/src/main/docs/stomp-component.adoc | 18 +-
.../camel/component/stomp/StompConsumer.java | 2 +
.../camel/component/stomp/StompEndpoint.java | 4 +
.../camel/component/stomp/StompProducer.java | 1 +
.../camel/component/stomp/StompBaseTest.java | 7 +-
.../camel/component/stomp/StompConsumerTest.java | 1 +
.../component/stomp/StompConsumerUriTest.java | 1 +
.../camel/component/stomp/StompProducerTest.java | 1 +
.../src/main/docs/stream-component.adoc | 16 +-
.../component/stream/FileWatcherStrategy.java | 1 +
.../camel/component/stream/StreamConsumer.java | 1 +
.../camel/component/stream/StreamEndpoint.java | 3 +
.../camel/component/stream/StreamProducer.java | 1 +
.../component/stream/ScanStreamDelayTest.java | 1 +
.../component/stream/ScanStreamFileManualTest.java | 1 +
.../camel/component/stream/ScanStreamFileTest.java | 1 +
.../stream/ScanStreamFileWithFilterTest.java | 1 +
.../component/stream/SplitStreamFileTest.java | 1 +
.../camel/component/stream/StreamDelayTest.java | 1 +
.../camel/component/stream/StreamEncodingTest.java | 1 +
.../stream/StreamGroupLinesLastStrategyTest.java | 1 +
.../stream/StreamGroupLinesStrategyTest.java | 16 +-
.../camel/component/stream/StreamHeaderTest.java | 2 +
.../component/stream/StreamRouteBuilderTest.java | 1 +
.../component/stream/StreamSystemErrTest.java | 1 +
.../component/stream/StreamSystemOutTest.java | 1 +
.../camel/component/stream/StreamToUrlTest.java | 1 +
.../src/main/docs/string-template-component.adoc | 24 +-
.../stringtemplate/StringTemplateComponent.java | 1 +
.../StringTemplateConcurrentTest.java | 1 +
.../StringTemplateContentCacheTest.java | 2 +
.../stringtemplate/StringTemplateLetterTest.java | 1 +
.../stringtemplate/StringTemplateTest.java | 1 +
.../camel-stub/src/main/docs/stub-component.adoc | 14 +-
.../src/main/docs/swagger-java.adoc | 14 +-
.../RestSwaggerReaderApiDocsOverrideTest.java | 29 +-
.../swagger/RestSwaggerReaderApiDocsTest.java | 29 +-
.../swagger/RestSwaggerReaderDayOfWeekTest.java | 30 +-
...RestSwaggerReaderEnableVendorExtensionTest.java | 32 +-
.../RestSwaggerReaderModelApiSecurityTest.java | 43 +-
.../RestSwaggerReaderModelBookOrderTest.java | 25 +-
.../camel/swagger/RestSwaggerReaderModelTest.java | 34 +-
.../RestSwaggerReaderOverrideHostApiDocsTest.java | 1 +
.../RestSwaggerReaderPropertyPlaceholderTest.java | 32 +-
.../camel/swagger/RestSwaggerReaderTest.java | 31 +-
.../camel/swagger/producer/RestSwaggerGetTest.java | 14 +-
.../producer/RestSwaggerGetUriParamTest.java | 14 +-
.../src/main/docs/syslog-dataformat.adoc | 16 +-
.../syslog/NettyRfc5425LongMessageTest.java | 19 +-
.../camel/component/syslog/NettyRfc5425Test.java | 18 +-
.../src/main/docs/tidyMarkup-dataformat.adoc | 12 +-
.../dataformat/tagsoup/TidyMarkupDataFormat.java | 2 +
.../src/main/docs/tarfile-dataformat.adoc | 14 +-
.../dataformat/tarfile/TarFileDataFormat.java | 2 +-
.../tarfile/TarFileMultipleFilesSplitterTest.java | 1 +
.../src/main/docs/telegram-component.adoc | 28 +-
.../telegram/TelegramProducerLocationTest.java | 1 +
.../src/main/docs/test-blueprint.adoc | 11 +-
.../test/blueprint/CamelBlueprintTestSupport.java | 3 +
.../test/blueprint/IsMockEndpointJUnit4Test.java | 6 +-
.../test/blueprint/SimpleWeaveAddMockLastTest.java | 1 +
.../component/rest/FromRestConfigurationTest.java | 1 +
.../rest/FromRestIdAndDescriptionTest.java | 1 +
.../camel-test-cdi/src/main/docs/test-cdi.adoc | 26 +-
.../camel-test-karaf/src/main/docs/test-karaf.adoc | 2 +-
.../src/main/docs/test-spring.adoc | 22 +-
.../test/spring/CamelSpringActiveProfileTest.java | 2 +-
...lSpringRouteProcessorDumpRouteCoverageTest.java | 2 +-
...pringRunnerDisableJmxInheritedOverrideTest.java | 1 +
.../CamelSpringRunnerMockEndpointsAndSkipTest.java | 56 --
.../spring/CamelSpringRunnerMockEndpointsTest.java | 57 --
.../test/spring/CamelSpringRunnerPlainTest.java | 29 +-
.../CamelSpringRunnerProvidesBreakpointTest.java | 3 +-
.../spring/CamelSpringRunnerUseAdviceWithTest.java | 4 +-
.../spring/CamelSpringRunnerPlainTest-context.xml | 12 -
.../org/apache/camel/test/spring/test.properties | 1 -
components/camel-test/src/main/docs/test.adoc | 4 +-
.../apache/camel/test/junit4/CamelTestSupport.java | 89 +-
.../patterns/SimpleWeaveAddMockLastTest.java | 1 +
.../camel/test/patterns/GetMockEndpointTest.java | 46 +
components/camel-testcontainers-spring/pom.xml | 83 ++
.../src/main/docs/testcontainers-spring.adoc | 2 +-
.../spring/ContainerAwareSpringTestSupport.java | 3 -
components/camel-testcontainers/pom.xml | 81 ++
.../src/main/docs/testcontainers.adoc | 2 +-
.../testcontainers/ContainerAwareTestSupport.java | 3 -
.../src/main/docs/thrift-component.adoc | 22 +-
.../src/main/docs/thrift-dataformat.adoc | 20 +-
.../camel/component/thrift/ThriftComponent.java | 1 +
.../camel/component/thrift/ThriftEndpoint.java | 2 +
.../camel/dataformat/thrift/ThriftDataFormat.java | 4 +
.../thrift/ThriftConsumerSecurityTest.java | 11 +-
.../thrift/ThriftProducerSecurityTest.java | 11 +-
.../component/thrift/generated/Operation.java | 1 +
.../dataformat/thrift/generated/Operation.java | 1 +
.../camel-tika/src/main/docs/tika-component.adoc | 14 +-
.../apache/camel/component/tika/TikaParseTest.java | 7 +-
.../camel-timer/src/main/docs/timer-component.adoc | 22 +-
.../camel/component/timer/TimerEndpoint.java | 3 +
.../src/main/docs/twilio-component.adoc | 20 +-
.../camel/component/twilio/TwilioComponent.java | 2 +
.../main/docs/twitter-directmessage-component.adoc | 12 +-
.../src/main/docs/twitter-search-component.adoc | 12 +-
.../src/main/docs/twitter-streaming-component.adoc | 12 +-
.../src/main/docs/twitter-timeline-component.adoc | 12 +-
.../camel-twitter/src/main/docs/twitter.adoc | 24 +-
.../component/twitter/AbstractTwitterEndpoint.java | 2 +
.../camel/component/twitter/TwitterHelper.java | 16 -
.../directmessage/DirectMessageProducer.java | 1 +
.../twitter/search/SearchConsumerHandler.java | 2 +
.../twitter/DirectMessageProducerTest.java | 1 +
.../twitter/SearchByExchangeDirectTest.java | 1 +
.../twitter/SearchDirectCustomComponentTest.java | 11 +-
.../camel/component/twitter/SearchEventTest.java | 9 +-
.../component/twitter/UserProducerInOnlyTest.java | 1 +
.../component/twitter/UserProducerInOutTest.java | 1 +
.../deprecated/SearchByExchangeDirectTest.java | 1 +
.../twitter/deprecated/SearchEventTest.java | 9 +-
.../twitter/deprecated/UserProducerInOnlyTest.java | 1 +
.../twitter/deprecated/UserProducerInOutTest.java | 1 +
components/camel-undertow/pom.xml | 7 +-
.../src/main/docs/undertow-component.adoc | 24 +-
.../component/undertow/DefaultUndertowHost.java | 1 +
.../undertow/DefaultUndertowHttpBinding.java | 2 +
.../component/undertow/UndertowConstants.java | 2 +
.../camel/component/undertow/UndertowConsumer.java | 33 +-
.../camel/component/undertow/UndertowEndpoint.java | 2 +
.../undertow/handlers/CamelMethodHandler.java | 1 +
.../undertow/handlers/CamelPathHandler.java | 1 +
.../handlers/CamelPathTemplateHandler.java | 1 +
.../undertow/handlers/CamelRootHandler.java | 2 +
.../undertow/handlers/CamelWebSocketHandler.java | 45 +-
.../camel/component/undertow/BaseUndertowTest.java | 10 +-
.../component/undertow/MultiPartFormTest.java | 1 +
.../undertow/UndertowHttpProducerSessionTest.java | 16 +-
.../undertow/rest/RestUndertowHttpGetTest.java | 12 +-
.../rest/RestUndertowHttpGetWildcardsTest.java | 43 +-
.../undertow/ws/UndertowWsConsumerRouteTest.java | 17 +-
.../src/main/docs/univocity-csv-dataformat.adoc | 22 +-
.../src/main/docs/univocity-fixed-dataformat.adoc | 22 +-
.../src/main/docs/univocity-tsv-dataformat.adoc | 22 +-
.../src/main/docs/validator-component.adoc | 16 +-
.../component/validator/ValidatorComponent.java | 1 +
.../src/main/docs/velocity-component.adoc | 26 +-
.../velocity/CamelVelocityDelegateClassLoader.java | 1 +
.../component/velocity/VelocityComponent.java | 1 +
.../velocity/VelocityBodyAsDomainObjectTest.java | 2 +
.../component/velocity/VelocityConcurrentTest.java | 1 +
.../velocity/VelocityContentCacheTest.java | 2 +
.../velocity/VelocityDynamicTemplateTest.java | 1 +
.../component/velocity/VelocityEncodingTest.java | 1 +
.../component/velocity/VelocityEndpointTest.java | 1 +
.../component/velocity/VelocityFileLetterTest.java | 1 +
.../VelocityFileLetterWithPropertyTest.java | 1 +
.../component/velocity/VelocityLetterTest.java | 1 +
.../velocity/VelocityLetterWithParserTest.java | 1 +
.../velocity/VelocityLetterWithoutHeaderTest.java | 1 +
.../velocity/VelocityMethodInvokationTest.java | 1 +
.../velocity/VelocityOverridesPropertiesTest.java | 1 +
.../velocity/VelocitySetTemplateViaHeaderTest.java | 1 +
.../VelocitySomeValuesNotInExchangeTest.java | 1 +
.../velocity/VelocityTemplateInHeaderTest.java | 1 +
.../camel/component/velocity/VelocityTest.java | 1 +
.../velocity/VelocityValuesInPropertiesTest.java | 1 +
.../camel-vertx/src/main/docs/vertx-component.adoc | 16 +-
.../camel/component/vertx/VertxComponent.java | 1 +
.../camel/component/vertx/VertxConsumer.java | 2 +
.../camel/component/vertx/VertxEndpoint.java | 2 +
.../apache/camel/component/vertx/VertxHelper.java | 2 +-
.../component/vertx/VertxMultipleConsumerTest.java | 1 +
.../component/vertx/VertxRequestReplyTest.java | 1 +
.../component/vertx/VertxRoutePubSubTest.java | 1 +
.../camel/component/vertx/VertxRouteTest.java | 1 +
.../camel-vm/src/main/docs/vm-component.adoc | 16 +-
.../org/apache/camel/component/vm/VmConsumer.java | 1 +
.../src/main/docs/weather-component.adoc | 22 +-
.../weather/http/CompositeHttpConfigurer.java | 1 +
.../weather/CurrentWeatherMadridProducerTest.java | 1 +
.../camel-web3j/src/main/docs/web3j-component.adoc | 16 +-
.../camel/component/web3j/Web3jComponent.java | 1 +
.../camel/component/web3j/Web3jProducer.java | 9 +-
.../component/web3j/Web3jMockTestSupport.java | 10 +-
.../component/web3j/Web3jQuorumProducerTest.java | 11 +-
.../integration/Web3jConsumerMainnetTest.java | 1 +
.../integration/Web3jProducerMainnetTest.java | 1 +
.../src/main/docs/webhook-component.adoc | 14 +-
.../src/main/docs/websocket-jsr356-component.adoc | 12 +-
.../src/main/docs/websocket-component.adoc | 24 +-
.../component/websocket/WebsocketConsumer.java | 1 +
.../component/websocket/WebsocketProducer.java | 1 +
.../websocket/AllowAllHostnameVerifier.java | 1 +
.../WebsocketSSLContextInUriRouteExampleTest.java | 7 +-
.../src/main/docs/wordpress-component.adoc | 18 +-
.../component/wordpress/WordpressComponent.java | 1 +
.../component/wordpress/WordpressEndpoint.java | 2 +
.../impl/AbstractWordpressCrudServiceAdapter.java | 4 +
.../wordpress/producer/WordpressPostProducer.java | 3 +
.../wordpress/producer/WordpressUserProducer.java | 3 +
.../src/main/docs/xchange-component.adoc | 18 +-
.../apache/camel/component/xchange/XChange.java | 10 +
.../src/main/docs/secureXML-dataformat.adoc | 28 +-
.../src/main/docs/xmlsecurity-component.adoc | 30 +-
.../component/xmlsecurity/XmlSignerEndpoint.java | 1 +
.../component/xmlsecurity/XmlVerifierEndpoint.java | 1 +
.../xmlsecurity/api/DefaultKeySelector.java | 1 +
.../xmlsecurity/api/XmlSignatureHelper.java | 3 +
.../processor/XmlSignatureConfiguration.java | 2 +
.../processor/XmlVerifierConfiguration.java | 1 +
.../xmlsecurity/XMLSecurityDataFormat.java | 1 +
.../component/xmlsecurity/ECDSASignatureTest.java | 8 +-
.../xmlsecurity/SignatureAlgorithmTest.java | 10 +-
.../xmlsecurity/SignatureDigestMethodTest.java | 10 +-
.../xmlsecurity/SpringXmlSignatureTest.java | 8 +-
.../xmlsecurity/XAdESSignaturePropertiesTest.java | 8 +-
.../component/xmlsecurity/XmlSignatureTest.java | 10 +-
.../util/SameDocumentUriDereferencer.java | 1 +
...ature2Message2MessageWithTimestampProperty.java | 1 +
.../xmlsecurity/XMLSecurityConcurrencyTest.java | 1 +
.../camel-xmpp/src/main/docs/xmpp-component.adoc | 18 +-
.../apache/camel/component/xmpp/XmppEndpoint.java | 4 +
.../component/xmpp/XmppGroupChatProducer.java | 1 +
.../apache/camel/component/xmpp/XmppLogger.java | 1 +
.../component/xmpp/XmppPrivateChatProducer.java | 1 +
.../camel/component/xmpp/XmppPubSubProducer.java | 1 +
.../component/xmpp/EmbeddedXmppTestServer.java | 4 +-
.../component/xmpp/GoogleTalkEndpointTest.java | 1 +
.../camel/component/xmpp/GoogleTalkTest.java | 1 +
.../component/xmpp/XmppDeferredConnectionTest.java | 7 +-
.../component/xmpp/XmppMultiUserChatTest.java | 8 +-
.../component/xmpp/XmppProducerConcurrentTest.java | 7 +-
.../component/xmpp/XmppRobustConnectionTest.java | 7 +-
.../camel/component/xmpp/XmppRouteChatTest.java | 8 +-
...ppRouteMultipleProducersSingleConsumerTest.java | 8 +-
.../camel-xpath/src/main/docs/xpath-language.adoc | 40 +-
.../language/xpath/DefaultNamespaceContext.java | 5 +
.../language/xpath/MessageVariableResolver.java | 1 +
.../apache/camel/language/xpath/XPathBuilder.java | 4 +
.../apache/camel/language/xpath/XPathLanguage.java | 3 +
.../camel-xslt/src/main/docs/xslt-component.adoc | 32 +-
.../xslt/DefaultTransformErrorHandler.java | 6 +
.../camel/component/xslt/DomResultHandler.java | 2 +
.../component/xslt/DomResultHandlerFactory.java | 1 +
.../camel/component/xslt/FileResultHandler.java | 2 +
.../component/xslt/FileResultHandlerFactory.java | 1 +
.../camel/component/xslt/StreamResultHandler.java | 2 +
.../component/xslt/StreamResultHandlerFactory.java | 1 +
.../camel/component/xslt/StringResultHandler.java | 2 +
.../component/xslt/StringResultHandlerFactory.java | 1 +
.../apache/camel/component/xslt/XsltBuilder.java | 1 +
.../src/main/docs/json-xstream-dataformat.adoc | 12 +-
.../src/main/docs/xstream-dataformat.adoc | 20 +-
.../dataformat/xstream/AbstractXStreamWrapper.java | 2 +
.../camel/dataformat/xstream/JsonDataFormat.java | 2 +
.../dataformat/xstream/XStreamDataFormat.java | 2 +
.../xstream/MarshalDomainObjectJSONTest.java | 1 +
.../xstream/MarshalDomainObjectTest.java | 1 +
.../camel/dataformat/xstream/MarshalListTest.java | 1 +
.../camel/dataformat/xstream/PurchaseOrder.java | 1 +
.../xstream/SpringMarshalDomainObjectJSONTest.java | 1 +
.../dataformat/xstream/SpringMarshalListTest.java | 1 +
.../xstream/SpringMarshalOmitFieldsTest.java | 1 +
.../xstream/SpringXStreamConfigurationTest.java | 1 +
.../xstream/UnmarshalThenMarshalJSONTest.java | 1 +
.../xstream/UnmarshalThenMarshalTest.java | 1 +
.../dataformat/xstream/XStreamConcurrencyTest.java | 1 +
.../xstream/XStreamConfigurationTest.java | 9 +
.../xstream/XStreamDataFormatOmitFieldsTest.java | 1 +
.../src/main/docs/yammer-component.adoc | 24 +-
.../camel/component/yammer/YammerComponent.java | 1 +
.../camel/component/yammer/YammerEndpoint.java | 2 +
.../yammer/scribe/JsonTokenExtractor.java | 1 +
.../yammer/YammerMessageAndUserRouteTest.java | 1 +
.../src/main/docs/zendesk-component.adoc | 20 +-
.../camel/component/zendesk/ZendeskEndpoint.java | 3 +
.../src/main/docs/gzipdeflater-dataformat.adoc | 10 +-
.../src/main/docs/zipdeflater-dataformat.adoc | 8 +-
.../deflater/GzipDeflaterDataFormat.java | 4 +-
.../dataformat/deflater/ZipDeflaterDataFormat.java | 4 +-
.../deflater/ZipDeflaterDataFormatTest.java | 1 +
.../src/main/docs/zipfile-dataformat.adoc | 14 +-
.../dataformat/zipfile/ZipFileDataFormat.java | 6 +-
.../zipfile/ZipFileMultipleFilesSplitterTest.java | 1 +
components/camel-zipkin/src/main/docs/zipkin.adoc | 18 +-
.../camel/zipkin/ZipkinClientRequestAdapter.java | 2 +-
.../camel/zipkin/ZipkinClientResponseAdaptor.java | 4 +-
.../java/org/apache/camel/zipkin/ZipkinHelper.java | 2 +-
.../camel/zipkin/ZipkinServerRequestAdapter.java | 2 +-
.../camel/zipkin/ZipkinServerResponseAdapter.java | 4 +-
.../java/org/apache/camel/zipkin/ZipkinTracer.java | 2 +
.../zipkin/ZipkinSpanReporterInRegistryTest.java | 7 +-
.../src/main/docs/zookeeper-master-component.adoc | 20 +-
.../component/zookeepermaster/MasterEndpoint.java | 3 +
.../zookeepermaster/ZookeeperGroupSupport.java | 1 +
.../component/zookeepermaster/group/Group.java | 1 +
.../internal/DelegateZooKeeperMultiGroup.java | 1 +
.../group/internal/ZooKeeperGroup.java | 1 +
.../zookeepermaster/CuratorFactoryBean.java | 4 +
.../zookeepermaster/ZKServerFactoryBean.java | 5 +
components/camel-zookeeper/pom.xml | 2 +-
.../src/main/docs/zookeeper-component.adoc | 20 +-
.../component/zookeeper/ConnectionHolder.java | 1 +
.../component/zookeeper/NaturalSortComparator.java | 1 +
.../component/zookeeper/ZooKeeperComponent.java | 1 +
.../zookeeper/ZooKeeperConnectionManager.java | 2 +
.../component/zookeeper/ZooKeeperConsumer.java | 1 +
.../component/zookeeper/ZooKeeperEndpoint.java | 2 +
.../component/zookeeper/ZooKeeperProducer.java | 2 +
.../zookeeper/operations/DataChangedOperation.java | 1 +
.../zookeeper/operations/DeleteOperation.java | 1 +
.../operations/FutureEventDrivenOperation.java | 3 +
.../zookeeper/operations/GetChildrenOperation.java | 1 +
.../zookeeper/operations/GetDataOperation.java | 1 +
.../zookeeper/operations/SetDataOperation.java | 1 +
.../component/zookeeper/ZooKeeperTestSupport.java | 1 +
...erviceRegistrationWithServiceComponentTest.java | 21 +-
components/pom.xml | 10 +-
components/readme.adoc | 31 +-
.../src/main/java/org/apache/camel/BeanInject.java | 4 -
.../main/java/org/apache/camel/BindToRegistry.java | 5 -
.../main/java/org/apache/camel/CamelContext.java | 16 +
.../src/main/java/org/apache/camel/Consume.java | 5 -
.../main/java/org/apache/camel/DynamicRouter.java | 7 -
.../main/java/org/apache/camel/EndpointInject.java | 4 -
.../src/main/java/org/apache/camel/Exchange.java | 10 +
.../main/java/org/apache/camel/InvokeOnHeader.java | 39 -
.../java/org/apache/camel/InvokeOnHeaders.java | 37 -
.../src/main/java/org/apache/camel/NamedRoute.java | 34 +
.../src/main/java/org/apache/camel/OutHeaders.java | 34 -
.../src/main/java/org/apache/camel/Produce.java | 5 -
.../main/java/org/apache/camel/PropertyInject.java | 4 -
.../main/java/org/apache/camel/RecipientList.java | 5 -
.../main/java/org/apache/camel/RoutingSlip.java | 5 -
.../org/apache/camel/RuntimeConfiguration.java | 33 +-
.../org/apache/camel/spi/CamelContextTracker.java | 1 +
.../main/java/org/apache/camel/spi/CamelEvent.java | 32 +
.../apache/camel/spi/InterceptSendToEndpoint.java | 14 +-
.../org/apache/camel/spi/InterceptStrategy.java | 11 +-
.../java/org/apache/camel/spi/InvokeOnHeader.java | 43 +
.../java/org/apache/camel/spi/InvokeOnHeaders.java | 41 +
.../OptimisticLockingAggregationRepository.java | 1 +
.../java/org/apache/camel/spi/RouteContext.java | 2 +
.../java/org/apache/camel/spi/SubUnitOfWork.java | 45 -
.../apache/camel/spi/SubUnitOfWorkCallback.java | 56 --
.../src/main/java/org/apache/camel/spi/Tracer.java | 125 +++
.../main/java/org/apache/camel/spi/UnitOfWork.java | 32 +-
.../jsse/AliasedX509ExtendedKeyManager.java | 6 +
.../apache/camel/support/jsse/JsseParameters.java | 2 +
.../camel/support/service/ServiceSupport.java | 14 +
.../src/main/docs/constant-language.adoc | 10 +-
.../src/main/docs/exchangeProperty-language.adoc | 8 +-
core/camel-base/src/main/docs/file-language.adoc | 18 +-
core/camel-base/src/main/docs/header-language.adoc | 8 +-
core/camel-base/src/main/docs/ref-language.adoc | 8 +-
core/camel-base/src/main/docs/simple-language.adoc | 44 +-
.../src/main/docs/tokenize-language.adoc | 4 +-
.../org/apache/camel/converter/CamelConverter.java | 3 +-
.../org/apache/camel/converter/IOConverter.java | 4 -
.../apache/camel/converter/ObjectConverter.java | 1 +
.../camel/impl/converter/ArrayTypeConverter.java | 1 +
.../impl/converter/BaseTypeConverterRegistry.java | 5 +
.../camel/impl/converter/DefaultTypeConverter.java | 1 +
.../camel/impl/converter/EnumTypeConverter.java | 1 +
.../InstanceMethodFallbackTypeConverter.java | 1 +
.../converter/InstanceMethodTypeConverter.java | 1 +
.../StaticMethodFallbackTypeConverter.java | 1 +
.../impl/converter/StaticMethodTypeConverter.java | 1 +
.../camel/impl/engine/AbstractCamelContext.java | 226 ++++-
.../apache/camel/impl/engine/BaseRouteService.java | 2 +
.../impl/engine/CamelPostProcessorHelper.java | 16 +-
.../engine/DefaultAsyncProcessorAwaitManager.java | 4 +
.../impl/engine/DefaultCamelBeanPostProcessor.java | 26 +-
.../camel/impl/engine/DefaultClassResolver.java | 14 +
.../impl/engine/DefaultComponentResolver.java | 1 +
.../camel/impl/engine/DefaultConsumerCache.java | 17 +
.../camel/impl/engine/DefaultConsumerTemplate.java | 34 +-
.../impl/engine/DefaultFactoryFinderResolver.java | 2 +
.../impl/engine/DefaultFluentProducerTemplate.java | 84 +-
.../impl/engine/DefaultInflightRepository.java | 5 +
.../engine/DefaultInterceptSendToEndpoint.java | 46 +-
.../camel/impl/engine/DefaultLanguageResolver.java | 1 +
.../impl/engine/DefaultManagementNameStrategy.java | 1 +
.../impl/engine/DefaultManagementStrategy.java | 21 +
.../impl/engine/DefaultMessageHistoryFactory.java | 4 +
.../camel/impl/engine/DefaultNodeIdFactory.java | 1 +
.../engine/DefaultPackageScanClassResolver.java | 10 +
.../camel/impl/engine/DefaultProducerCache.java | 19 +
.../camel/impl/engine/DefaultProducerTemplate.java | 96 +-
.../org/apache/camel/impl/engine/DefaultRoute.java | 14 +
.../camel/impl/engine/DefaultRouteContext.java | 74 ++
.../impl/engine/DefaultRouteStartupOrder.java | 4 +
.../engine/DefaultRuntimeEndpointRegistry.java | 8 +
.../camel/impl/engine/DefaultShutdownStrategy.java | 20 +
.../impl/engine/DefaultStreamCachingStrategy.java | 41 +-
.../camel/impl/engine/DefaultSubUnitOfWork.java | 71 --
.../apache/camel/impl/engine/DefaultTracer.java | 264 +++++
.../camel/impl/engine/DefaultUnitOfWork.java | 107 +--
.../camel/impl/engine/DefaultUuidGenerator.java | 1 +
.../impl/engine/DefaultValidatorRegistry.java | 1 +
.../impl/engine/DeferServiceStartupListener.java | 1 +
.../impl/engine/EventDrivenConsumerRoute.java | 5 +
.../engine/InterceptSendToEndpointProcessor.java | 24 +-
.../InterceptSendToMockEndpointStrategy.java | 3 +-
.../camel/impl/engine/JavaUuidGenerator.java | 1 +
.../engine/LimitedPollingConsumerPollStrategy.java | 3 +
.../apache/camel/impl/engine/MDCUnitOfWork.java | 12 +-
.../camel/impl/event/AbstractContextEvent.java | 1 +
.../camel/impl/event/AbstractExchangeEvent.java | 1 +
.../camel/impl/event/AbstractRouteEvent.java | 1 +
.../camel/impl/event/DefaultEventFactory.java | 30 +-
.../impl/event/ExchangeFailureHandledEvent.java | 3 +
.../impl/event/ExchangeFailureHandlingEvent.java | 3 +
.../camel/impl/event/ExchangeRedeliveryEvent.java | 1 +
.../camel/impl/event/ExchangeSendingEvent.java | 1 +
.../apache/camel/impl/event/ExchangeSentEvent.java | 2 +
.../impl/event/ServiceStartupFailureEvent.java | 1 +
.../camel/impl/event/ServiceStopFailureEvent.java | 1 +
.../scan/AnnotatedWithAnyPackageScanFilter.java | 1 +
.../impl/scan/AnnotatedWithPackageScanFilter.java | 1 +
.../impl/scan/AssignableToPackageScanFilter.java | 1 +
.../impl/scan/CompositePackageScanFilter.java | 1 +
.../impl/scan/InvertingPackageScanFilter.java | 1 +
.../impl/transformer/DataFormatTransformer.java | 2 +-
.../impl/transformer/ProcessorTransformer.java | 2 +-
.../camel/language/constant/ConstantLanguage.java | 3 +
.../camel/language/header/HeaderLanguage.java | 3 +
.../property/ExchangePropertyLanguage.java | 3 +
.../org/apache/camel/language/ref/RefLanguage.java | 3 +
.../language/simple/SimpleExpressionBuilder.java | 3 +-
.../camel/language/simple/SimpleLanguage.java | 2 +
.../camel/language/simple/ast/BaseSimpleNode.java | 1 +
.../simple/ast/SimpleFunctionExpression.java | 17 -
.../camel/language/tokenizer/TokenizeLanguage.java | 3 +
.../camel/processor/CamelInternalProcessor.java | 114 ++-
.../org/apache/camel/processor/CatchProcessor.java | 3 +
.../apache/camel/processor/ChoiceProcessor.java | 8 +
.../org/apache/camel/processor/ContractAdvice.java | 2 +-
.../camel/processor/ConvertBodyProcessor.java | 6 +-
.../camel/processor/DelayProcessorSupport.java | 1 +
.../java/org/apache/camel/processor/Delayer.java | 4 +
.../org/apache/camel/processor/DynamicRouter.java | 2 +
.../java/org/apache/camel/processor/Enricher.java | 8 +
.../processor/EvaluateExpressionProcessor.java | 1 +
.../camel/processor/ExchangePatternProcessor.java | 3 +
.../apache/camel/processor/FilterProcessor.java | 3 +
.../apache/camel/processor/FinallyProcessor.java | 3 +
.../InterceptorToAsyncProcessorBridge.java | 2 +
.../org/apache/camel/processor/LogProcessor.java | 3 +
.../org/apache/camel/processor/LoopProcessor.java | 4 +
.../camel/processor/MethodCallProcessor.java | 7 +-
.../apache/camel/processor/MulticastProcessor.java | 15 +
.../camel/processor/OnCompletionProcessor.java | 7 +
.../java/org/apache/camel/processor/Pipeline.java | 7 +-
.../org/apache/camel/processor/PipelineHelper.java | 24 +-
.../org/apache/camel/processor/PollEnricher.java | 32 +-
.../org/apache/camel/processor/RecipientList.java | 6 +
.../camel/processor/RecipientListProcessor.java | 9 +
.../camel/processor/RemoveHeaderProcessor.java | 6 +-
.../camel/processor/RemoveHeadersProcessor.java | 6 +-
.../camel/processor/RemovePropertiesProcessor.java | 3 +
.../camel/processor/RemovePropertyProcessor.java | 3 +
.../org/apache/camel/processor/Resequencer.java | 8 +
.../apache/camel/processor/RestBindingAdvice.java | 28 +-
.../apache/camel/processor/RollbackProcessor.java | 4 +
.../org/apache/camel/processor/RoutingSlip.java | 14 +-
.../apache/camel/processor/SamplingThrottler.java | 3 +
.../apache/camel/processor/ScriptProcessor.java | 4 +
.../camel/processor/SendDynamicProcessor.java | 7 +
.../org/apache/camel/processor/SendProcessor.java | 7 +
.../apache/camel/processor/SetBodyProcessor.java | 6 +-
.../apache/camel/processor/SetHeaderProcessor.java | 6 +-
.../camel/processor/SetPropertyProcessor.java | 3 +
.../org/apache/camel/processor/SortProcessor.java | 12 +-
.../org/apache/camel/processor/StopProcessor.java | 3 +
.../apache/camel/processor/StreamResequencer.java | 7 +
.../apache/camel/processor/ThreadsProcessor.java | 7 +
.../java/org/apache/camel/processor/Throttler.java | 3 +
.../camel/processor/ThrowExceptionProcessor.java | 7 +
.../apache/camel/processor/TransformProcessor.java | 7 +-
.../org/apache/camel/processor/TryProcessor.java | 10 +
.../apache/camel/processor/UnitOfWorkProducer.java | 2 +
.../apache/camel/processor/WireTapProcessor.java | 7 +-
.../aggregate/AbstractListAggregationStrategy.java | 2 +
.../processor/aggregate/AggregateProcessor.java | 84 +-
.../aggregate/AggregationStrategyBeanAdapter.java | 2 +
.../aggregate/DefaultAggregateController.java | 4 +
.../aggregate/GroupedBodyAggregationStrategy.java | 1 +
.../aggregate/MemoryAggregationRepository.java | 6 +
.../ShareUnitOfWorkAggregationStrategy.java | 1 +
.../aggregate/UseLatestAggregationStrategy.java | 1 +
.../aggregate/UseOriginalAggregationStrategy.java | 1 +
.../camel/processor/channel/DefaultChannel.java | 37 +-
.../processor/errorhandler/DeadLetterChannel.java | 7 +-
.../errorhandler/DefaultErrorHandler.java | 2 +-
.../processor/errorhandler/ExceptionPolicy.java | 10 +-
.../errorhandler/RedeliveryErrorHandler.java | 54 +-
.../processor/idempotent/IdempotentConsumer.java | 7 +
.../idempotent/IdempotentOnCompletion.java | 2 +
.../processor/interceptor/BacklogDebugger.java | 61 +-
.../camel/processor/interceptor/BacklogTracer.java | 9 -
.../processor/interceptor/BreakpointSupport.java | 6 +
.../DefaultBacklogTracerEventMessage.java | 7 +
.../processor/interceptor/DefaultDebugger.java | 1 +
.../loadbalancer/FailOverLoadBalancer.java | 2 +
.../loadbalancer/LoadBalancerSupport.java | 10 +
.../processor/loadbalancer/QueueLoadBalancer.java | 1 +
.../processor/loadbalancer/RandomLoadBalancer.java | 1 +
.../loadbalancer/RoundRobinLoadBalancer.java | 1 +
.../processor/loadbalancer/StickyLoadBalancer.java | 1 +
.../processor/loadbalancer/TopicLoadBalancer.java | 1 +
.../WeightedRoundRobinLoadBalancer.java | 1 +
.../camel/processor/resequencer/Element.java | 1 +
.../camel/processor/resequencer/Sequence.java | 3 +
.../throttling/ThrottlingInflightRoutePolicy.java | 2 +
.../caffeine/lrucache/CaffeineLRUCache.java | 7 +
.../caffeine/lrucache/CaffeineLRUCacheFactory.java | 10 +
.../caffeine/lrucache/CaffeineLRUCacheTest.java | 2 +
.../impl/cloud/DefaultServiceCallExpression.java | 14 +-
.../apache/camel/core/osgi/OsgiBeanRepository.java | 4 +
.../camel/core/osgi/OsgiCamelContextPublisher.java | 2 +
.../camel/core/osgi/OsgiComponentResolver.java | 1 +
.../camel/core/osgi/OsgiDataFormatResolver.java | 2 +
.../camel/core/osgi/OsgiEventAdminNotifier.java | 2 +
.../camel/core/osgi/OsgiFactoryFinderResolver.java | 2 +
.../camel/core/osgi/OsgiLanguageResolver.java | 1 +
.../core/osgi/OsgiPackageScanClassResolver.java | 1 +
.../apache/camel/core/osgi/OsgiTypeConverter.java | 24 +
.../org/apache/camel/core/osgi/impl/Activator.java | 14 +
.../osgi/utils/BundleDelegatingClassLoader.java | 4 +
.../apache/camel/core/osgi/CamelMockBundle.java | 5 +
.../camel/core/osgi/CamelMockBundleContext.java | 4 +
.../camel/core/osgi/CamelMockLanguageResolver.java | 1 +
.../core/osgi/test/MockTypeConverterRegistry.java | 20 +-
.../AbstractCamelConsumerTemplateFactoryBean.java | 3 +
.../core/xml/AbstractCamelContextFactoryBean.java | 7 +
.../core/xml/AbstractCamelEndpointFactoryBean.java | 2 +
.../camel/core/xml/AbstractCamelFactoryBean.java | 2 +
...ractCamelFluentProducerTemplateFactoryBean.java | 3 +
.../AbstractCamelProducerTemplateFactoryBean.java | 3 +
.../AbstractCamelRedeliveryPolicyFactoryBean.java | 2 +
.../xml/AbstractCamelThreadPoolFactoryBean.java | 2 +
.../core/xml/PatternBasedPackageScanFilter.java | 1 +
.../xml/util/jsse/AbstractJsseUtilFactoryBean.java | 3 +
core/camel-core/readme-eip.adoc | 2 +-
core/camel-core/readme.adoc | 2 +-
.../src/main/docs/eips/aggregate-eip.adoc | 45 +-
.../src/main/docs/eips/batch-config-eip.adoc | 2 +-
core/camel-core/src/main/docs/eips/bean-eip.adoc | 14 +-
core/camel-core/src/main/docs/eips/choice-eip.adoc | 6 +-
.../src/main/docs/eips/circuitBreaker-eip.adoc | 2 +-
.../src/main/docs/eips/claimCheck-eip.adoc | 16 +-
.../main/docs/eips/content-based-router-eip.adoc | 8 +-
.../src/main/docs/eips/content-filter-eip.adoc | 8 +-
.../src/main/docs/eips/convertBodyTo-eip.adoc | 2 +-
.../src/main/docs/eips/customLoadBalancer-eip.adoc | 2 +-
core/camel-core/src/main/docs/eips/delay-eip.adoc | 20 +-
.../src/main/docs/eips/dynamic-router.adoc | 12 +-
.../src/main/docs/eips/dynamicRouter-eip.adoc | 12 +-
core/camel-core/src/main/docs/eips/enrich-eip.adoc | 18 +-
.../main/docs/eips/eventDrivenConsumer-eip.adoc | 6 +-
.../src/main/docs/eips/failover-eip.adoc | 6 +-
core/camel-core/src/main/docs/eips/filter-eip.adoc | 10 +-
core/camel-core/src/main/docs/eips/from-eip.adoc | 6 +-
.../camel-core/src/main/docs/eips/hystrix-eip.adoc | 10 +-
.../main/docs/eips/hystrixConfiguration-eip.adoc | 2 +-
.../src/main/docs/eips/idempotentConsumer-eip.adoc | 4 +-
core/camel-core/src/main/docs/eips/inOnly-eip.adoc | 4 +-
core/camel-core/src/main/docs/eips/inOut-eip.adoc | 4 +-
.../src/main/docs/eips/loadBalance-eip.adoc | 14 +-
core/camel-core/src/main/docs/eips/log-eip.adoc | 18 +-
core/camel-core/src/main/docs/eips/loop-eip.adoc | 16 +-
.../camel-core/src/main/docs/eips/marshal-eip.adoc | 6 +-
.../src/main/docs/eips/multicast-eip.adoc | 8 +-
.../src/main/docs/eips/onFallback-eip.adoc | 2 +-
.../src/main/docs/eips/otherwise-eip.adoc | 6 +-
.../src/main/docs/eips/pipeline-eip.adoc | 6 +-
.../src/main/docs/eips/pollEnrich-eip.adoc | 18 +-
.../camel-core/src/main/docs/eips/process-eip.adoc | 16 +-
core/camel-core/src/main/docs/eips/random-eip.adoc | 2 +-
.../src/main/docs/eips/recipientList-eip.adoc | 40 +-
.../src/main/docs/eips/removeHeader-eip.adoc | 6 +-
.../src/main/docs/eips/removeHeaders-eip.adoc | 4 +-
.../src/main/docs/eips/removeProperties-eip.adoc | 6 +-
.../src/main/docs/eips/removeProperty-eip.adoc | 6 +-
.../src/main/docs/eips/requestReply-eip.adoc | 4 +-
.../src/main/docs/eips/resequence-eip.adoc | 18 +-
.../src/main/docs/eips/rollback-eip.adoc | 18 +-
.../src/main/docs/eips/roundRobin-eip.adoc | 6 +-
.../src/main/docs/eips/routingSlip-eip.adoc | 16 +-
core/camel-core/src/main/docs/eips/saga-eip.adoc | 26 +-
core/camel-core/src/main/docs/eips/sample-eip.adoc | 6 +-
core/camel-core/src/main/docs/eips/script-eip.adoc | 8 +-
.../src/main/docs/eips/serviceCall-eip.adoc | 32 +-
.../camel-core/src/main/docs/eips/setBody-eip.adoc | 6 +-
.../src/main/docs/eips/setHeader-eip.adoc | 6 +-
.../src/main/docs/eips/setOutHeader-eip.adoc | 6 +-
.../src/main/docs/eips/setProperty-eip.adoc | 6 +-
core/camel-core/src/main/docs/eips/sort-eip.adoc | 6 +-
core/camel-core/src/main/docs/eips/split-eip.adoc | 50 +-
core/camel-core/src/main/docs/eips/step-eip.adoc | 8 +-
core/camel-core/src/main/docs/eips/sticky-eip.adoc | 6 +-
core/camel-core/src/main/docs/eips/stop-eip.adoc | 2 +-
.../src/main/docs/eips/stream-config-eip.adoc | 2 +-
.../camel-core/src/main/docs/eips/threads-eip.adoc | 6 +-
.../src/main/docs/eips/throttle-eip.adoc | 10 +-
core/camel-core/src/main/docs/eips/to-eip.adoc | 8 +-
core/camel-core/src/main/docs/eips/toD-eip.adoc | 13 +-
core/camel-core/src/main/docs/eips/topic-eip.adoc | 6 +-
.../src/main/docs/eips/transform-eip.adoc | 4 +-
.../src/main/docs/eips/unmarshal-eip.adoc | 6 +-
.../src/main/docs/eips/validate-eip.adoc | 6 +-
.../src/main/docs/eips/weighted-eip.adoc | 6 +-
core/camel-core/src/main/docs/eips/when-eip.adoc | 6 +-
.../camel-core/src/main/docs/eips/wireTap-eip.adoc | 22 +-
.../apache/camel/builder/AdviceWithBuilder.java | 8 +-
.../camel/builder/AdviceWithRouteBuilder.java | 25 +
.../org/apache/camel/builder/AdviceWithTasks.java | 77 +-
.../org/apache/camel/builder/DataFormatClause.java | 12 -
.../camel/builder/DeadLetterChannelBuilder.java | 6 +-
.../camel/builder/DefaultErrorHandlerBuilder.java | 70 +-
.../camel/builder/ErrorHandlerBuilderRef.java | 2 +
.../camel/builder/ErrorHandlerBuilderSupport.java | 6 +-
.../org/apache/camel/builder/ExpressionClause.java | 94 --
.../camel/builder/ExpressionClauseSupport.java | 35 -
.../camel/builder/NoErrorHandlerBuilder.java | 2 +
.../org/apache/camel/builder/NotifyBuilder.java | 14 +
.../org/apache/camel/builder/RouteBuilder.java | 1 +
.../org/apache/camel/builder/SimpleBuilder.java | 3 +
.../org/apache/camel/builder/ValueBuilder.java | 1 +
.../camel/impl/AbstractModelCamelContext.java | 5 +
.../org/apache/camel/impl/DefaultCamelContext.java | 58 +-
.../camel/impl/DefaultModelJAXBContextFactory.java | 1 +
.../java/org/apache/camel/impl/RouteService.java | 4 +
.../apache/camel/model/AdviceWithDefinition.java | 40 +
.../apache/camel/model/AggregateDefinition.java | 58 +-
.../org/apache/camel/model/DelayDefinition.java | 6 +
.../org/apache/camel/model/HystrixDefinition.java | 2 +
.../apache/camel/model/InterceptDefinition.java | 8 -
.../model/InterceptSendToEndpointDefinition.java | 25 +
.../apache/camel/model/LoadBalanceDefinition.java | 1 +
.../org/apache/camel/model/MarshalDefinition.java | 2 -
.../apache/camel/model/MulticastDefinition.java | 7 +-
.../org/apache/camel/model/NoOutputDefinition.java | 1 +
.../apache/camel/model/OnCompletionDefinition.java | 11 +-
.../apache/camel/model/OnExceptionDefinition.java | 89 +-
.../org/apache/camel/model/OutputDefinition.java | 1 +
.../apache/camel/model/ProcessorDefinition.java | 8 +-
.../camel/model/RecipientListDefinition.java | 7 +-
.../apache/camel/model/ResequenceDefinition.java | 1 +
.../org/apache/camel/model/RouteDefinition.java | 23 +-
.../org/apache/camel/model/RoutesDefinition.java | 3 +
.../org/apache/camel/model/SplitDefinition.java | 7 +-
.../org/apache/camel/model/ThreadsDefinition.java | 6 +
.../org/apache/camel/model/ThrottleDefinition.java | 6 +
.../apache/camel/model/ToDynamicDefinition.java | 5 +
.../java/org/apache/camel/model/TryDefinition.java | 1 +
.../apache/camel/model/UnmarshalDefinition.java | 2 -
.../org/apache/camel/model/WireTapDefinition.java | 7 +
...klistServiceCallServiceFilterConfiguration.java | 1 +
.../cloud/ServiceCallDefinitionConstants.java | 2 +-
...icServiceCallServiceDiscoveryConfiguration.java | 1 +
.../camel/model/dataformat/BoonDataFormat.java | 89 --
.../model/dataformat/DataFormatsDefinition.java | 1 -
.../camel/model/language/ConstantExpression.java | 1 +
.../model/language/ExchangePropertyExpression.java | 1 +
.../camel/model/language/ExpressionDefinition.java | 3 +
.../camel/model/language/GroovyExpression.java | 1 +
.../camel/model/language/HeaderExpression.java | 1 +
.../camel/model/language/Hl7TerserExpression.java | 1 +
.../camel/model/language/JsonPathExpression.java | 1 +
.../camel/model/language/LanguageExpression.java | 1 +
.../camel/model/language/MethodCallExpression.java | 1 +
.../camel/model/language/MvelExpression.java | 1 +
.../model/language/NamespaceAwareExpression.java | 2 +
.../camel/model/language/OgnlExpression.java | 1 +
.../apache/camel/model/language/RefExpression.java | 1 +
.../camel/model/language/SimpleExpression.java | 1 +
.../camel/model/language/SpELExpression.java | 1 +
.../camel/model/language/XPathExpression.java | 1 +
.../camel/model/language/XQueryExpression.java | 1 +
.../apache/camel/model/rest/RestsDefinition.java | 3 +
.../DataFormatTransformerDefinition.java | 2 -
.../org/apache/camel/reifier/AggregateReifier.java | 8 +
.../reifier/InterceptSendToEndpointReifier.java | 28 +-
.../org/apache/camel/reifier/MulticastReifier.java | 1 +
.../org/apache/camel/reifier/RouteReifier.java | 20 +-
.../reifier/dataformat/BindyDataFormatReifier.java | 1 +
.../reifier/dataformat/BoonDataFormatReifier.java | 53 -
.../reifier/dataformat/DataFormatReifier.java | 2 -
.../errorhandler/DeadLetterChannelReifier.java | 3 +-
.../errorhandler/DefaultErrorHandlerReifier.java | 1 +
.../reifier/errorhandler/ErrorHandlerReifier.java | 3 +-
.../java/org/apache/camel/ContextTestSupport.java | 2 +
.../test/java/org/apache/camel/MyBarSingleton.java | 1 +
.../org/apache/camel/SuspendableServiceTest.java | 5 +
.../test/java/org/apache/camel/TestSupport.java | 2 +
.../camel/builder/ContextErrorHandlerTest.java | 3 +
.../org/apache/camel/builder/ErrorHandlerTest.java | 2 +
.../apache/camel/builder/ExceptionBuilderTest.java | 3 +-
.../ExceptionBuilderWithHandledExceptionTest.java | 3 +-
.../camel/builder/ExpressionBuilderTest.java | 1 +
.../camel/builder/MyInterceptorProcessor.java | 1 +
.../java/org/apache/camel/builder/MyProcessor.java | 1 +
.../builder/xml/ExtractXPathWithNamespaceTest.java | 1 +
.../camel/builder/xml/XPathFunctionsTest.java | 1 +
.../XPathHeaderNameResultTypeAndNamespaceTest.java | 1 +
.../camel/builder/xml/XPathHeaderNameTest.java | 1 +
.../apache/camel/builder/xml/XPathHeaderTest.java | 1 +
.../builder/xml/XPathNamespaceResultTypeTest.java | 1 +
.../camel/builder/xml/XPathNamespaceTest.java | 1 +
...AmbiguousMethodCallExceptionSimplifiedTest.java | 1 +
.../BeanExchangeAsReturnTypeNotAllowedTest.java | 2 +
.../component/bean/BeanHandlerMethodTest.java | 1 +
.../component/bean/BeanImplicitMethodTest.java | 1 +
.../camel/component/bean/BeanInPipelineTest.java | 2 +
.../component/bean/BeanInfoInheritanceTest.java | 1 +
.../apache/camel/component/bean/BeanInfoTest.java | 3 +
.../bean/BeanInfoWithBridgedMethodTest.java | 2 +
.../bean/BeanOverloadedCovariantMethodTest.java | 1 +
.../bean/BeanPackageScopeOutsideTest.java | 1 +
.../camel/component/bean/BeanPackageScopeTest.java | 1 +
.../camel/component/bean/BeanPipelineTest.java | 6 +-
.../bean/BeanReturnCallableReturnNullTest.java | 2 +
.../component/bean/BeanReturnCallableTest.java | 2 +
.../bean/BeanWithAnnotationAndExchangeTest.java | 2 +
.../bean/BeanWithAnnotationInheritedTest.java | 6 +
.../BeanWithExchangeExceptionAnnotationTest.java | 2 +
.../BeanWithExpressionInjectionPredicateTest.java | 1 +
.../bean/BeanWithExpressionInjectionTest.java | 1 +
.../camel/component/bean/BeanWithHeaderTest.java | 2 +
.../bean/BeanWithHeadersAndBodyInject2Test.java | 1 +
.../bean/BeanWithHeadersAndBodyInject3Test.java | 11 +-
.../bean/BeanWithHeadersAndBodyInjectionTest.java | 1 +
.../component/bean/BeanWithMethodHeaderTest.java | 1 +
...thPropertiesAndHeadersAndBodyInjectionTest.java | 1 +
.../BeanWithPropertiesAndHeadersInjectionTest.java | 1 +
.../BodyAnnotationToDisambiguateMethodsTest.java | 1 +
.../bean/CustomParameterMappingStrategyTest.java | 1 +
...ressionAnnotationToDisambiguateMethodsTest.java | 1 +
.../camel/component/bean/MyOtherFooBean.java | 1 +
.../camel/component/bean/MyServiceProxyTest.java | 2 +-
.../camel/component/bean/NewInstanceTest.java | 1 +
.../camel/component/bean/PredicateAsBeanTest.java | 2 +
.../camel/component/bean/issues/BaseClass.java | 1 +
.../camel/component/bean/issues/BaseSomething.java | 1 +
.../bean/issues/MyMessageToProcessorConverter.java | 1 +
.../component/dataset/DataSetProducerTest.java | 28 +-
.../camel/component/direct/DirectNoToTypeTest.java | 3 +-
.../direct/DirectProducerBlockingTest.java | 1 +
.../direct/DirectShouldUseSameThreadTest.java | 1 +
.../directvm/DirectVmHeaderFilterStrategyTest.java | 5 +-
...DirectVmNoPropertyPropagationComponentTest.java | 1 +
.../DirectVmNoPropertyPropagationTest.java | 1 +
.../directvm/DirectVmProducerBlockingTest.java | 1 +
.../directvm/DirectVmShouldUseSameThreadTest.java | 1 +
.../camel/component/file/BeanToFileTest.java | 2 +
.../file/FileBeginFailureOneTimeTest.java | 9 +-
.../file/FileConsumeMaxMessagesPerPollTest.java | 1 +
.../file/FileConsumeMoveRelativeNameTest.java | 1 +
.../file/FileConsumeMultipleDirectoriesTest.java | 1 +
.../FileConsumeNotEagerMaxMessagesPerPollTest.java | 1 +
.../FileConsumerAbsolutePathDefaultMoveTest.java | 1 +
.../file/FileConsumerAbsolutePathTest.java | 1 +
...leConsumerAbsolutePathWithAbsoluteMoveTest.java | 1 +
...leConsumerAbsolutePathWithRelativeMoveTest.java | 1 +
...ileConsumerAbsoluteRootPathDefaultMoveTest.java | 1 +
...BeginAndCommitExpressionRenameStrategyTest.java | 1 +
...leConsumerBeginAndCommitRenameStrategyTest.java | 1 +
...eConsumerBeginExpressionRenameStrategyTest.java | 1 +
.../file/FileConsumerBeginRenameStrategyTest.java | 1 +
...nsumerCommitRenameAbsolutePathStrategyTest.java | 1 +
.../file/FileConsumerCommitRenameStrategyTest.java | 1 +
.../file/FileConsumerDirectoryFilterTest.java | 2 +
.../file/FileConsumerDirectoryNotMatchedTest.java | 1 +
.../file/FileConsumerExcludeNameTest.java | 1 +
.../file/FileConsumerFailureHandledTest.java | 4 +-
...leConsumerFileExpressionThrowExceptionTest.java | 3 +
.../component/file/FileConsumerFileFilterTest.java | 2 +
.../file/FileConsumerFilterDirectoryTest.java | 1 +
.../component/file/FileConsumerFilterFileTest.java | 1 +
...leConsumerIdempotentOnExceptionHandledTest.java | 1 +
.../file/FileConsumerIdempotentRefTest.java | 6 +
.../FileConsumerIncludeAndExcludeNameTest.java | 1 +
.../file/FileConsumerIncludeNameTest.java | 1 +
.../file/FileConsumerInterceptEmptyFileTest.java | 1 +
.../file/FileConsumerPollStrategyNotBeginTest.java | 4 +
...FileConsumerPollStrategyPolledMessagesTest.java | 4 +
...umerPollStrategyRollbackThrowExceptionTest.java | 4 +
...FileConsumerPollStrategyStopOnRollbackTest.java | 4 +
.../file/FileConsumerPollStrategyTest.java | 4 +
.../file/FileConsumerPreMoveDeleteTest.java | 1 +
.../file/FileConsumerPreMoveIssueTest.java | 1 +
.../file/FileConsumerPreMoveLastModifiedTest.java | 1 +
.../file/FileConsumerPreMoveNoopTest.java | 1 +
.../component/file/FileConsumerPreMoveTest.java | 1 +
.../FileConsumerSharedThreadPollStopRouteTest.java | 1 +
.../file/FileConsumerSkipDotFilesTest.java | 1 +
.../file/FileConsumerSuspendAndResumeTest.java | 1 +
.../component/file/FileConsumerSuspendTest.java | 1 +
.../FileConsumerThreadsInProgressIssueTest.java | 1 +
.../file/FileExclusiveReadLockCopyTest.java | 1 +
.../file/FileExclusiveReadManuelTest.java | 1 +
.../file/FileExclusiveReadNoneStrategyTest.java | 1 +
.../file/FileHeaderFileNameProducedTest.java | 1 +
.../camel/component/file/FileMEPInOutTest.java | 1 +
.../camel/component/file/FileNoOpLockFileTest.java | 2 +
.../file/FileProduceGeneratedFileNameTest.java | 1 +
.../file/FileProduceTempFileNameTest.java | 1 +
.../component/file/FileProduceTempPrefixTest.java | 1 +
.../file/FileProducerFileBodyGetsMovedTest.java | 1 +
.../file/FileRouteOnDosWithNoVolTest.java | 1 +
.../camel/component/file/FileSorterRefTest.java | 1 +
.../component/file/FilerProducerAbsoluteTest.java | 1 +
.../component/file/FilerProducerFileNamesTest.java | 1 +
.../FromFileDoNotDeleteFileIfProcessFailsTest.java | 1 +
.../FromFileDoNotMoveFileIfProcessFailsTest.java | 1 +
.../file/FromFileMoveFileIfProcessFailsTest.java | 1 +
.../file/FromFilePollThirdTimeOkTest.java | 1 +
.../camel/component/file/NewFileConsumerTest.java | 1 +
.../camel/component/file/ToFileRouteTest.java | 7 +-
.../GenericFileDeleteProcessStrategyTest.java | 13 +
.../log/DefaultExchangeFormatterTest.java | 22 +-
.../component/log/LogBodyWithNewLineTest.java | 1 +
.../camel/component/mock/MockEndpointTest.java | 4 +-
.../component/mock/MockEndpointTimeClauseTest.java | 1 +
.../camel/component/mock/MockPredicateTest.java | 16 -
.../apache/camel/component/pojo/SayService.java | 1 +
.../component/rest/FromRestGetContentTypeTest.java | 4 +-
.../rest/FromRestGetCorsAllowCredentialsTest.java | 20 +-
.../component/rest/FromRestGetCorsCustomTest.java | 8 +-
.../camel/component/rest/FromRestGetCorsTest.java | 8 +-
.../component/rest/FromRestGetEndPathTest.java | 1 +
.../rest/FromRestGetHttpErrorCodeTest.java | 4 +-
.../rest/FromRestIdAndDescriptionTest.java | 1 +
.../component/rest/FromRestUriPrefixTest.java | 1 +
.../rest/RestProducerBindingProcessorTest.java | 4 +-
.../component/seda/SedaAsyncProducerTest.java | 4 +-
.../seda/SedaShouldNotUseSameThreadTest.java | 1 +
.../camel/component/seda/SedaUnitOfWorkTest.java | 1 +
.../camel/component/seda/TracingWithDelayTest.java | 6 +-
.../validator/CustomSchemaFactoryFeatureTest.java | 14 +-
.../ValidatorIncludeRelativeRouteTest.java | 1 +
.../apache/camel/component/vm/VMSplitterTest.java | 1 +
.../component/vm/VmShouldNotUseSameThreadTest.java | 1 +
.../vm/VmWaitForTaskIfReplyExpectedTest.java | 2 +-
.../component/xslt/XsltUriResolverFactoryTest.java | 1 +
.../apache/camel/converter/CamelConverterTest.java | 4 +-
.../org/apache/camel/converter/ConverterTest.java | 2 +
.../camel/converter/ObjectConverterTest.java | 10 +
.../org/apache/camel/converter/PurchaseOrder.java | 1 +
.../converter/stream/CachedOutputStreamTest.java | 1 +
.../org/apache/camel/impl/CustomIdFactoryTest.java | 1 +
.../camel/impl/DataFormatContextAwareTest.java | 2 +
.../impl/DefaultCamelContextStopFailureTest.java | 2 +
.../DefaultComponentReferencePropertiesTest.java | 4 +
.../apache/camel/impl/DefaultComponentTest.java | 2 +
.../camel/impl/DefaultConsumerTemplateTest.java | 2 +-
.../impl/DefaultProducerTemplateAsyncTest.java | 14 +-
.../apache/camel/impl/DummyLifecycleStrategy.java | 15 +
.../camel/impl/EndpointShutdownOnceTest.java | 4 +
.../apache/camel/impl/ExpressionAdapterTest.java | 2 +
.../apache/camel/impl/ExpressionSupportTest.java | 2 +
.../impl/ExtendedStartupListenerComponentTest.java | 1 +
.../impl/HeaderFilterStrategyComponentTest.java | 6 +
.../camel/impl/LanguageCamelContextAwareTest.java | 4 +
.../camel/impl/MultipleConsumersSupportTest.java | 8 +
.../impl/PojoProduceInterceptEndpointTest.java | 2 +-
.../org/apache/camel/impl/RefDataFormatTest.java | 2 +
.../camel/impl/RouteSuspendResumeWarmUpTest.java | 3 +
.../StartupListenerComponentFromRegistryTest.java | 1 +
.../camel/impl/StartupListenerComponentTest.java | 1 +
.../org/apache/camel/impl/StartupListenerTest.java | 1 +
.../camel/impl/TypeConverterAllowNullTest.java | 1 +
.../TypeConverterRegistryMissesThenAddTest.java | 1 +
.../camel/impl/TypeConverterRegistryTest.java | 1 +
.../impl/engine/CamelPostProcessorHelperTest.java | 7 -
.../camel/impl/engine/DefaultCamelContextTest.java | 2 +
.../EventNotifierExchangeSentParallelTest.java | 1 +
...ventNotifierServiceStoppingFailedEventTest.java | 2 +
.../impl/transformer/TransformerRouteTest.java | 8 +-
.../camel/impl/validator/ValidatorRouteTest.java | 4 +-
.../issues/AdviceWithErrorHandlerRemoveTest.java | 104 ++
.../issues/AdviceWithInterceptFromRemoveTest.java | 98 ++
.../issues/AdviceWithInterceptRemoveTest.java | 98 ++
...dviceWithInterceptSendToEndpointRemoveTest.java | 100 ++
.../issues/AdviceWithOnCompletionRemoveTest.java | 100 ++
.../issues/AdviceWithOnExceptionRemoveTest.java | 80 +-
.../issues/AdviceWithStartTargetIssueTest.java | 1 +
.../issues/CBRCustomPredicateAsFilterTest.java | 1 +
.../apache/camel/issues/Camel4857UriIssueTest.java | 3 +
.../CharlesSplitAndTryCatchRollbackIssueTest.java | 1 +
...CharlesSplitUseBeanAsErrorHandlerIssueTest.java | 1 +
.../camel/issues/ComponentUseRawUriTest.java | 3 +
.../camel/issues/CustomFailveOverProcessor.java | 1 +
.../org/apache/camel/issues/DavidSiefertTest.java | 3 +-
.../issues/DoCatchCaughExceptionIssueTest.java | 2 +-
.../issues/DynamicRouterWithInterceptorTest.java | 1 +
.../issues/FilterCustomPredicateAsFilterTest.java | 1 +
.../InterceptCustomPredicateAsFilterTest.java | 1 +
.../apache/camel/issues/InterceptFromLogTest.java | 1 +
.../java/org/apache/camel/issues/Issue170Test.java | 1 +
...icastAggregationStrategyThrowExceptionTest.java | 1 +
...essageBodyAndEnrichedHeadersClaimCheckTest.java | 81 ++
...xOriginalMessageBodyAndEnrichedHeadersTest.java | 78 ++
...eBodyAndEnrichedHeadersUseOriginalBodyTest.java | 76 ++
...lelStopOnExceptionWithOnExceptionIssueTest.java | 2 +
...thAggregationStrategyThrowingExceptionTest.java | 1 +
.../MulticastPipelineAggregateIssueTest.java | 1 +
.../issues/MulticastSingleAggregateIssueTest.java | 1 +
.../org/apache/camel/issues/NeilSplitterTest.java | 1 +
.../camel/issues/OnExceptionWithTwoBeansTest.java | 1 +
.../camel/issues/ProxyReturnNullIssueTest.java | 1 +
...thAggregationStrategyThrowingExceptionTest.java | 1 +
.../issues/RecipientListWithInterceptorTest.java | 1 +
.../RouteStartupFailShouldStopAlsoIssueTest.java | 11 +-
.../issues/RoutingSlipWithInterceptorTest.java | 1 +
.../camel/issues/SetHeaderInDoCatchIssueTest.java | 5 +-
.../camel/issues/SplitPropertiesFileIssueTest.java | 1 +
.../camel/issues/SplitWithInterceptorTest.java | 1 +
...thAggregationStrategyThrowingExceptionTest.java | 1 +
.../SplitterThrowExceptionInExpressionTest.java | 1 +
.../SplitterThrowExceptionInExpressionTwoTest.java | 1 +
.../camel/issues/TryCatchWithSplitIssueTest.java | 2 +
.../apache/camel/issues/TwoTimerWithJMXIssue.java | 6 +-
.../java/org/apache/camel/language/BeanTest.java | 1 +
.../org/apache/camel/language/ConstantTest.java | 1 +
.../camel/language/FileLanguageExtSingleTest.java | 4 +-
.../apache/camel/language/FileLanguageTest.java | 2 +
.../java/org/apache/camel/language/HeaderTest.java | 1 +
.../apache/camel/language/NoSuchLanguageTest.java | 1 +
.../org/apache/camel/language/PropertyTest.java | 1 +
.../apache/camel/language/RefPredicateTest.java | 1 +
.../java/org/apache/camel/language/RefTest.java | 1 +
.../TokenXMLPairMultiNamespaceSplitTest.java | 2 +
.../TokenXMLPairNamespaceMultilineSplitTest.java | 2 +
...kenXMLPairNamespaceSplitChildNamespaceTest.java | 101 ++
.../apache/camel/language/XPathFunctionTest.java | 1 +
.../camel/language/XPathOutFunctionTest.java | 1 +
.../java/org/apache/camel/language/XPathTest.java | 1 +
.../camel/language/simple/SimpleOperatorTest.java | 1 +
.../language/simple/SimpleParserPredicateTest.java | 1 +
.../apache/camel/language/simple/SimpleTest.java | 16 +-
.../model/LoadRouteFromXmlWithOnExceptionTest.java | 1 +
.../model/LoadRouteFromXmlWithPolicyTest.java | 2 +
.../camel/processor/AnimalDeepClonePrepare.java | 1 +
.../apache/camel/processor/AppendingProcessor.java | 1 +
.../org/apache/camel/processor/AsyncLoopTest.java | 1 +
.../camel/processor/BeanCachedProcessorTest.java | 1 +
.../BeanInvocationThrowsExceptionTest.java | 1 +
.../BeanOgnMethodWithXPathInjectionTest.java | 1 +
.../BeanRecipientListInterfaceAnnotationTest.java | 1 +
.../BeanRecipientListNoMethodNameTest.java | 1 +
.../camel/processor/BeanRecipientListTest.java | 1 +
.../processor/BeanRecipientListTimeoutTest.java | 3 +
.../org/apache/camel/processor/BeanRouteTest.java | 1 +
.../camel/processor/BeanWithExceptionTest.java | 1 +
.../processor/BeanWithXPathInjectionTest.java | 1 +
.../camel/processor/BodyInAggregatingStrategy.java | 1 +
.../BodyInPreCompleteAggregatingStrategy.java | 1 +
.../processor/BodyOutAggregatingStrategy.java | 3 +-
.../processor/Camel715ThreadProcessorTest.java | 1 +
.../apache/camel/processor/ChoiceAsyncTest.java | 1 +
.../processor/ChoiceCompoundPredicateTest.java | 1 +
.../apache/camel/processor/ChoiceNoActionTest.java | 1 +
.../org/apache/camel/processor/ChoiceTest.java | 1 +
.../processor/ChoiceWhenBeanExpressionTest.java | 1 +
.../ChoiceWhenBeanExpressionWithExceptionTest.java | 1 +
.../processor/ChoiceWhenNotPredicateTest.java | 1 +
.../processor/ChoiceWithSimpleExpressionTest.java | 1 +
.../camel/processor/ChoiceWithTranfromTest.java | 1 +
.../org/apache/camel/processor/ClaimCheckTest.java | 2 +
.../processor/ComposedMessageProcessorTest.java | 3 +
.../apache/camel/processor/ConvertBodyTest.java | 1 +
.../CreateRouteWithNonExistingEndpointTest.java | 1 +
.../camel/processor/CustomLoadBalanceTest.java | 2 +
.../camel/processor/CustomRefLoadBalanceTest.java | 1 +
.../camel/processor/CustomRoutePolicyTest.java | 1 +
.../camel/processor/DataFormatServiceTest.java | 4 +
...dLetterChannelExceptionCausePropagatedTest.java | 1 +
...CausePropagatedWithDefaultErrorHandlerTest.java | 1 +
.../DeadLetterChannelHandledExampleTest.java | 20 +-
...lHandledExampleWithDefaultErrorHandlerTest.java | 1 +
...adLetterChannelOnExceptionOnRedeliveryTest.java | 4 +
.../DeadLetterChannelOnRedeliveryTest.java | 1 +
.../camel/processor/DeadLetterChannelTest.java | 1 +
.../DeadLetterChannelUseOriginalInBodyTest.java | 1 +
...LetterChannelUseOriginalInBodyWithFileTest.java | 1 +
...ltConsumerBridgeErrorHandlerRedeliveryTest.java | 1 +
.../DefinitionPolicyPerProcessorTest.java | 2 +
.../camel/processor/DelayInterceptorTest.java | 1 +
.../camel/processor/DelayerAsyncDelayedTest.java | 1 +
.../org/apache/camel/processor/DelayerTest.java | 1 +
.../camel/processor/DelayerWhileShutdownTest.java | 1 +
.../org/apache/camel/processor/DetourTest.java | 2 +
...point2MustBeStartedBeforeSendProcessorTest.java | 4 +
...dpointMustBeStartedBeforeSendProcessorTest.java | 4 +
.../processor/ExceptionHandlerStreamCacheTest.java | 1 +
.../processor/FailOverAllFailedExceptionTest.java | 1 +
.../FailOverLoadBalanceAutoStartupFalseTest.java | 1 +
.../FailOverLoadBalanceMultipleExceptionTest.java | 1 +
...verLoadBalanceNotInheritedErrorHandlerTest.java | 1 +
.../camel/processor/FailOverLoadBalanceTest.java | 3 +
...lOverLoadBalanceWrappedExceptionNoLuckTest.java | 1 +
.../FailOverLoadBalanceWrappedExceptionTest.java | 1 +
.../FailOverLoadBalancerSetFaultTest.java | 4 +-
.../processor/FailOverNotCatchedExceptionTest.java | 1 +
.../camel/processor/FileIdempotentClearTest.java | 1 +
.../FileIdempotentConsumerLoadStoreTest.java | 1 +
.../processor/FileIdempotentConsumerTest.java | 1 +
.../camel/processor/FileIdempotentRemoveTest.java | 1 +
.../processor/FileIdempotentTrunkStoreTest.java | 1 +
.../processor/FileRollbackOnCompletionTest.java | 2 +
.../camel/processor/FilterBeforeSplitTest.java | 1 +
.../camel/processor/FilterNotMatchedTest.java | 1 +
.../org/apache/camel/processor/FilterNotTest.java | 1 +
.../apache/camel/processor/FilterSimpleTest.java | 1 +
.../org/apache/camel/processor/FilterTest.java | 1 +
...dempotentConsumerUsingCustomRepositoryTest.java | 6 +
.../processor/InheritErrorHandlerDefaultTest.java | 1 +
.../processor/InheritErrorHandlerFalseTest.java | 1 +
.../processor/InheritErrorHandlerTrueTest.java | 1 +
.../org/apache/camel/processor/JoinRoutesTest.java | 1 +
.../java/org/apache/camel/processor/LoopTest.java | 1 +
.../apache/camel/processor/LoopTestProcessor.java | 1 +
.../camel/processor/LoopWithAggregatorTest.java | 1 +
.../org/apache/camel/processor/MDCAsyncTest.java | 5 +-
.../org/apache/camel/processor/MDCResetTest.java | 4 +-
.../org/apache/camel/processor/MDCWireTapTest.java | 12 +-
.../apache/camel/processor/MethodFilterTest.java | 1 +
.../MultiCastParallelAndStreamCachingTest.java | 8 +-
.../MultiCastStreamCachingInSubRouteTest.java | 2 +-
.../MultiErrorHandlerInRouteNotHandledTest.java | 1 +
.../processor/MultiErrorHandlerInRouteTest.java | 1 +
.../MulticastKeepOriginalMessageUnchangedTest.java | 1 +
.../processor/MulticastNoStopOnExceptionTest.java | 1 +
.../MulticastParallelAllTimeoutAwareTest.java | 2 +
.../MulticastParallelNoStopOnExceptionTest.java | 2 +
.../MulticastParallelStopOnExceptionTest.java | 2 +
.../MulticastParallelTimeoutAwareTest.java | 2 +
...castStopOnExceptionLastWithOnExceptionTest.java | 1 +
.../processor/MulticastStopOnExceptionTest.java | 1 +
...ulticastStopOnExceptionWithOnExceptionTest.java | 1 +
.../processor/MulticastStreamCachingTest.java | 1 +
.../org/apache/camel/processor/MulticastTest.java | 1 +
.../camel/processor/MulticastUnitOfWorkTest.java | 1 +
.../processor/MulticastWithOnExceptionTest.java | 1 +
.../camel/processor/MyLoggingSentEventNotifer.java | 1 +
.../org/apache/camel/processor/MyNormalizer.java | 4 +-
.../camel/processor/MySentEventNotifier.java | 1 +
.../org/apache/camel/processor/MyValidator.java | 1 +
.../processor/NewProcessorAndServiceTest.java | 5 +-
.../org/apache/camel/processor/NormalizerTest.java | 1 +
...letionAndInterceptAndOnExceptionGlobalTest.java | 1 +
.../OnCompletionAndInterceptGlobalTest.java | 1 +
.../processor/OnCompletionAndInterceptTest.java | 1 +
.../camel/processor/OnCompletionAsyncTest.java | 1 +
.../OnCompletionGlobalCustomPoolTest.java | 2 +
.../camel/processor/OnCompletionGlobalTest.java | 1 +
.../OnCompletionMoreGlobalRouteCompletionTest.java | 1 +
.../processor/OnCompletionMoreGlobalTest.java | 1 +
.../processor/OnCompletionOnCompleteOnlyTest.java | 1 +
.../processor/OnCompletionOnFailureOnlyTest.java | 1 +
...ompletionRouteScopeOverrideGlobalScopeTest.java | 1 +
.../OnCompletionShutdownProcessorTest.java | 3 +
.../apache/camel/processor/OnCompletionTest.java | 1 +
.../processor/OnCompletionUseOriginalBodyTest.java | 1 +
.../camel/processor/PipelineConcurrentTest.java | 3 +-
.../apache/camel/processor/PipelineMEPTest.java | 3 +-
.../org/apache/camel/processor/PipelineTest.java | 16 +-
.../camel/processor/PolicyPerProcessorTest.java | 2 +
.../apache/camel/processor/PolicyPerRouteTest.java | 2 +
.../camel/processor/RandomLoadBalanceTest.java | 1 +
.../camel/processor/RecipientListBeanTest.java | 1 +
...istExchangePropertyAggregationStrategyTest.java | 1 +
.../RecipientListExchangePropertyTest.java | 1 +
.../RecipientListFineGrainedErrorHandlingTest.java | 1 +
.../processor/RecipientListFunctionalTest.java | 1 +
.../RecipientListIgnoreInvalidEndpointsTest.java | 1 +
...cipientListInvalidEndpointErrorHandlerTest.java | 1 +
...tInvalidEndpointIgnoreInvalidEndpointsTest.java | 1 +
.../camel/processor/RecipientListLeakTest.java | 1 +
.../camel/processor/RecipientListNoCacheTest.java | 1 +
.../processor/RecipientListReturnValueTest.java | 1 +
.../apache/camel/processor/RecipientListTest.java | 1 +
.../RecipientListWithArrayHeaderTest.java | 1 +
...RecipientListWithStringDelimitedHeaderTest.java | 1 +
...cipientListWithStringDelimitedPropertyTest.java | 1 +
.../RedeliveryPolicyPerExceptionTest.java | 1 +
.../org/apache/camel/processor/RegExRouteTest.java | 1 +
.../apache/camel/processor/RemoveHeaderTest.java | 1 +
.../camel/processor/RemoveHeadersExcludeTest.java | 1 +
.../apache/camel/processor/RemoveHeadersTest.java | 1 +
.../RemovePropertiesWithExclusionTest.java | 1 +
.../RemovePropertiesWithoutExclusionTest.java | 1 +
.../apache/camel/processor/RemovePropertyTest.java | 1 +
.../apache/camel/processor/ResequencerTest.java | 2 +
.../camel/processor/RoundRobinLoadBalanceTest.java | 1 +
.../camel/processor/RoutePerformanceCountTest.java | 1 +
.../processor/RouteServicesStartupOrderTest.java | 4 +
.../apache/camel/processor/RoutingSlipDslTest.java | 1 +
.../camel/processor/RoutingSlipNoCacheTest.java | 1 +
.../camel/processor/SamplingThrottlerTest.java | 1 +
.../apache/camel/processor/ScriptExternalTest.java | 1 +
.../org/apache/camel/processor/ScriptTest.java | 1 +
.../camel/processor/SetExchangePatternTest.java | 1 +
.../SetHeaderUsingDslExpressionsTest.java | 2 +
.../apache/camel/processor/SetPropertyTest.java | 1 +
.../processor/ShutdownCompleteAllTasksTest.java | 1 +
.../org/apache/camel/processor/SimpleMockTest.java | 2 +
.../camel/processor/SimpleProcessorTest.java | 2 +-
.../processor/SimpleProcessorTraceableTest.java | 2 +-
.../org/apache/camel/processor/SimulatorTest.java | 4 +-
.../org/apache/camel/processor/SortBodyTest.java | 1 +
.../apache/camel/processor/SortExpressionTest.java | 2 +
.../camel/processor/SplitAggregateInOutTest.java | 1 +
.../camel/processor/SplitParallelTimeoutTest.java | 2 +
.../camel/processor/SplitterMethodCallTest.java | 2 +
.../SplitterNoAggregationStrategyTest.java | 1 +
.../processor/SplitterNoStopOnExceptionTest.java | 1 +
.../camel/processor/SplitterOnCompletionTest.java | 1 +
.../processor/SplitterOnPrepareExceptionTest.java | 1 +
.../camel/processor/SplitterOnPrepareTest.java | 1 +
.../SplitterParallelNoStopOnExceptionTest.java | 2 +
.../SplitterParallelStopOnExceptionTest.java | 2 +
...ParallelStopOnExceptionWithOnExceptionTest.java | 1 +
.../apache/camel/processor/SplitterPojoTest.java | 1 +
...SplitterShareUnitOfWorkCompletionAwareTest.java | 1 +
.../processor/SplitterStopOnExceptionTest.java | 1 +
...SplitterStopOnExceptionWithOnExceptionTest.java | 1 +
.../camel/processor/SplitterStreamCacheTest.java | 1 +
.../SplitterStreamCachingInSubRouteTest.java | 2 +-
.../org/apache/camel/processor/SplitterTest.java | 9 +-
.../SplitterWithCustomThreadPoolExecutorTest.java | 1 +
.../camel/processor/SplitterWithXqureyTest.java | 1 +
.../camel/processor/StickyLoadBalanceTest.java | 1 +
.../camel/processor/StreamResequencerTest.java | 1 +
...SourceContentBasedRouterNoErrorHandlerTest.java | 1 +
...tentBasedRouterSSEnabledOnCamelContextTest.java | 1 +
.../StreamSourceContentBasedRouterTest.java | 1 +
.../camel/processor/ThrottlerAsyncDelayedTest.java | 1 +
.../apache/camel/processor/ThrottlerDslTest.java | 1 +
.../camel/processor/ThrottlerMethodCallTest.java | 1 +
.../org/apache/camel/processor/ThrottlerTest.java | 1 +
.../processor/ThrottlerThreadPoolProfileTest.java | 1 +
...xceptionRoutePolicyHalfOpenHandlerSedaTest.java | 1 +
...ingExceptionRoutePolicyHalfOpenHandlerTest.java | 1 +
...ThrottlingExceptionRoutePolicyHalfOpenTest.java | 1 +
.../ThrottlingExceptionRoutePolicyTest.java | 1 +
.../camel/processor/TopicLoadBalanceTest.java | 1 +
.../apache/camel/processor/TraceDelayerTest.java | 1 +
.../camel/processor/TraceInterceptorTest.java | 1 +
.../camel/processor/TracerConfigurationTest.java | 1 +
.../processor/TransformExternalScriptTest.java | 1 +
.../camel/processor/TransformProcessorTest.java | 1 +
.../TransformProcessorWithHeaderTest.java | 1 +
.../org/apache/camel/processor/TransformTest.java | 1 +
.../camel/processor/TransformViaDSLTest.java | 1 +
.../apache/camel/processor/TransformXpathTest.java | 1 +
.../TryProcessorHandleWrappedExceptionTest.java | 3 +
.../TryProcessorMultipleExceptionTest.java | 1 +
.../camel/processor/TryProcessorOnWhenTest.java | 1 +
.../apache/camel/processor/TryProcessorTest.java | 5 +
.../TypeConverterRegistryStatsPerformanceTest.java | 1 +
.../UnitOfWorkSynchronizationAdapterTest.java | 1 +
.../org/apache/camel/processor/UnitOfWorkTest.java | 1 +
.../apache/camel/processor/ValidateRegExpTest.java | 1 +
.../camel/processor/ValidateSimpleRegExpTest.java | 1 +
.../apache/camel/processor/ValidateSimpleTest.java | 1 +
.../processor/ValidatingDomProcessorTest.java | 1 +
.../ValidatingProcessorNotUseSharedSchemaTest.java | 1 +
.../camel/processor/ValidatingProcessorTest.java | 1 +
.../ValidationFinallyBlockNoCatchTest.java | 1 +
.../processor/ValidationFinallyBlockTest.java | 1 +
.../org/apache/camel/processor/ValidationTest.java | 1 +
...dationWithErrorInHandleAndFinallyBlockTest.java | 1 +
.../processor/ValidationWithExceptionTest.java | 1 +
.../ValidationWithFinallyBlockPipelineTest.java | 1 +
...lidationWithHandlePipelineAndExceptionTest.java | 1 +
.../ValidationWithHandlePipelineTest.java | 1 +
.../ValidationWithInFlowExceptionTest.java | 1 +
.../ValidationWithMultipleHandlesTest.java | 1 +
...lidationWithNestedFinallyBlockPipelineTest.java | 1 +
.../processor/ValidationWithTryCatchTest.java | 1 +
.../processor/WireTapBeanAsProcessorTest.java | 1 +
.../apache/camel/processor/WireTapBeanTest.java | 1 +
.../camel/processor/WireTapCustomPool2Test.java | 2 +
.../camel/processor/WireTapCustomPoolTest.java | 2 +
.../camel/processor/WireTapExpressionTest.java | 1 +
.../camel/processor/WireTapLogEndpointTest.java | 1 +
.../org/apache/camel/processor/WireTapLogTest.java | 1 +
.../camel/processor/WireTapShutdownBeanTest.java | 1 +
.../camel/processor/WireTapShutdownRouteTest.java | 1 +
.../camel/processor/WireTapStreamCachingTest.java | 1 +
.../org/apache/camel/processor/WireTapTest.java | 1 +
.../camel/processor/WireTapUsingMulticastTest.java | 1 +
.../camel/processor/WireTapVoidBeanTest.java | 1 +
.../apache/camel/processor/XPathChoiceTest.java | 1 +
.../apache/camel/processor/XPathFilterTest.java | 1 +
...ithNamespaceBuilderFilterAndResultTypeTest.java | 1 +
.../XPathWithNamespaceBuilderFilterTest.java | 1 +
.../processor/XPathWithNamespacesFilterTest.java | 1 +
.../aggregator/AbstractDistributedTest.java | 2 +
...gregateCompletionOnNewCorrelationGroupTest.java | 1 +
.../aggregator/AggregateControllerTest.java | 1 +
.../aggregator/AggregateDiscardOnFailureTest.java | 140 +++
...eCompletionHeaderInAggregationStrategyTest.java | 1 +
.../AggregateForceCompletionHeaderTest.java | 1 +
.../aggregator/AggregateFromWireTapTest.java | 1 +
.../aggregator/AggregateLostGroupIssueTest.java | 4 +-
.../aggregator/AggregateMultipleSourceTest.java | 1 +
.../AggregateNewExchangeAndConfirmTest.java | 1 +
.../AggregateRepositoryReturnNullTest.java | 1 +
.../AggregateShouldSkipFilteredExchangesTest.java | 1 +
.../AggregateSimpleExpressionIssueTest.java | 1 +
.../processor/aggregator/AggregateTimeoutTest.java | 2 +
.../aggregator/AggregatorExceptionHandleTest.java | 2 +-
.../camel/processor/aggregator/AggregatorTest.java | 1 +
.../aggregator/CustomAggregationStrategyTest.java | 1 +
.../aggregator/DistributedTimeoutTest.java | 2 +
.../AsyncEndpointCustomAsyncInterceptorTest.java | 1 +
.../async/AsyncEndpointCustomInterceptorTest.java | 1 +
.../async/AsyncEndpointCustomRoutePolicyTest.java | 1 +
.../processor/async/AsyncEndpointDelayUoWTest.java | 1 +
.../processor/async/AsyncEndpointPolicyTest.java | 2 +
.../async/AsyncEndpointRecipientList3Test.java | 2 +-
.../async/AsyncEndpointRecipientList4Test.java | 2 +-
.../async/AsyncEndpointRecipientListBean3Test.java | 2 +-
.../async/AsyncEndpointRecipientListBean4Test.java | 2 +-
.../AsyncEndpointRecipientListParallel3Test.java | 2 +-
.../AsyncEndpointRecipientListParallel4Test.java | 2 +-
.../async/AsyncEndpointRoutingSlip3Test.java | 2 +-
.../async/AsyncEndpointRoutingSlipBean3Test.java | 2 +-
...syncEndpointRoutingSlipBeanNonBlockingTest.java | 2 +-
.../async/AsyncEndpointUoWFailedTest.java | 1 +
.../processor/async/AsyncEndpointUoWTest.java | 1 +
.../processor/async/AsyncRouteWithErrorTest.java | 1 +
.../camel/processor/async/MyAsyncEndpoint.java | 3 +
.../camel/processor/async/MyAsyncProducer.java | 6 +-
.../DynamicRouterConcurrentPOJOTest.java | 1 +
.../EnricherAsyncUnhandledExceptionTest.java | 1 +
.../processor/enricher/EnricherNoResourceTest.java | 1 +
.../camel/processor/enricher/EnricherRefTest.java | 2 +-
.../processor/enricher/EnricherSendEventTest.java | 1 +
.../camel/processor/enricher/EnricherTest.java | 1 +
.../camel/processor/enricher/FailureProcessor.java | 1 +
...ollEnrichFileCustomAggregationStrategyTest.java | 1 +
.../enricher/PollEnricherNoResourceTest.java | 1 +
.../camel/processor/enricher/PollEnricherTest.java | 3 +-
.../camel/processor/enricher/SampleAggregator.java | 1 +
.../errorhandler/ErrorHandlerSupportTest.java | 5 +
.../CustomExceptionPolicyStrategyTest.java | 4 +-
...ltExceptionPolicyStrategyUsingOnlyWhenTest.java | 3 +-
...efaultExceptionPolicyStrategyUsingWhenTest.java | 3 +-
.../intercept/DualInterceptSimpleRouteTest.java | 59 --
.../InterceptFromEndpointInstanceTest.java | 1 +
.../InterceptFromEndpointRefFixedTest.java | 1 +
.../intercept/InterceptFromEndpointRefTest.java | 1 +
.../InterceptFromEndpointRefUriFixedTest.java | 1 +
.../intercept/InterceptFromEndpointRefUriTest.java | 1 +
.../intercept/InterceptFromSimpleLogTest.java | 1 +
.../InterceptFromSimplePredicateTest.java | 2 +
.../InterceptFromSimplePredicateWithStopTest.java | 1 +
.../intercept/InterceptFromSimpleRouteTest.java | 1 +
.../intercept/InterceptFromUriRegexTest.java | 1 +
.../intercept/InterceptFromUriSimpleLogTest.java | 1 +
.../InterceptFromUriWildcardHeaderUriTest.java | 1 +
.../intercept/InterceptFromUriWildcardTest.java | 1 +
.../InterceptSendToEndpointAfterTest.java | 114 +++
.../interceptor/AdviceWithRouteIdTest.java | 1 +
.../AuditInterceptorAsyncDelegateIssueTest.java | 1 +
.../AuditInterceptorDelegateIssueTest.java | 1 +
.../processor/interceptor/ConditionSupport.java | 2 +
.../InterceptorStrategyNotOrderedTest.java | 2 +
.../InterceptorStrategyOrderedTest.java | 4 +
...efaultErrorHandlerExchangeFormatterRefTest.java | 1 +
.../DefaultErrorHandlerRetryWhileTest.java | 1 +
...rorHandlerRouteWithDefaultErrorHandlerTest.java | 1 +
...ceptionProcessorInspectCausedExceptionTest.java | 1 +
...CausedExceptionWithDefaultErrorHandlerTest.java | 1 +
.../OnExceptionUseOriginalBodyTest.java | 1 +
.../OnExceptionUseOriginalMessageTest.java | 2 +-
.../OnExceptionWrappedExceptionTest.java | 1 +
.../resequencer/MyFileNameExpression.java | 1 +
.../resequencer/ResequencerBatchOrderTest.java | 1 +
.../resequencer/ResequencerEngineTest.java | 2 +
.../resequencer/ResequencerFileNameTest.java | 1 +
.../processor/resequencer/SequenceBuffer.java | 1 +
.../DynamicRouterEventNotifierTest.java | 1 +
.../RecipientListEventNotifierTest.java | 1 +
.../RoutingSlipDataModificationTest.java | 1 +
.../routingslip/RoutingSlipEventNotifierTest.java | 1 +
.../RoutingSlipIgnoreInvalidEndpointsTest.java | 1 +
.../processor/routingslip/RoutingSlipPOJOTest.java | 5 +-
.../processor/routingslip/RoutingSlipTest.java | 1 +
.../RoutingSlipWithErrorHandlerTest.java | 1 +
.../routingslip/RoutingSlipWithExceptionTest.java | 1 +
.../validation/CatalogLSResourceResolver.java | 16 +
.../camel/support/IntrospectionSupportTest.java | 1 +
.../apache/camel/support/ServiceSupportTest.java | 3 +
.../org/apache/camel/support/jndi/ExampleBean.java | 1 +
.../org/apache/camel/support/jndi/JndiTest.java | 1 +
.../org/apache/camel/util/AnotherExampleBean.java | 1 +
.../camel/util/ExpressionListComparatorTest.java | 2 +
.../apache/camel/util/OrderedComparatorTest.java | 1 +
.../builder/endpoint/AbstractEndpointBuilder.java | 1 +
.../builder/endpoint/EndpointBuilderFactory.java | 1 -
.../AtmosphereWebsocketEndpointBuilderFactory.java | 48 +-
.../dsl/DataSetEndpointBuilderFactory.java | 30 +
.../dsl/EhcacheEndpointBuilderFactory.java | 18 +-
.../endpoint/dsl/EjbEndpointBuilderFactory.java | 187 ----
.../endpoint/dsl/HdfsEndpointBuilderFactory.java | 16 +-
.../endpoint/dsl/HttpEndpointBuilderFactory.java | 24 +-
.../dsl/JettyHttpEndpointBuilder9Factory.java | 16 +-
.../endpoint/dsl/JpaEndpointBuilderFactory.java | 379 +++-----
.../endpoint/dsl/LogEndpointBuilderFactory.java | 22 -
.../dsl/MongoDbEndpointBuilderFactory.java | 8 +-
.../dsl/ServletEndpointBuilderFactory.java | 16 +-
.../endpoint/ProcessorDefinitionDslTest.java | 1 +
.../camel-headersmap/src/main/docs/headersmap.adoc | 6 +-
.../src/main/docs/xtokenize-language.adoc | 4 +-
.../language/xtokenizer/XMLTokenizeLanguage.java | 3 +
.../camel/support/builder/xml/StAX2SAXSource.java | 15 +
.../validation/DefaultValidationErrorHandler.java | 5 +
.../validation/PredicateValidatingProcessor.java | 2 +
.../processor/validation/ValidatingProcessor.java | 1 +
.../org/apache/camel/util/xml/BytesSource.java | 3 +
.../org/apache/camel/util/xml/SourceCache.java | 5 +
.../apache/camel/util/xml/StreamSourceCache.java | 5 +
.../org/apache/camel/util/xml/StringSource.java | 5 +
.../camel/main/DefaultConfigurationConfigurer.java | 2 +
.../camel/main/DefaultConfigurationProperties.java | 39 +
.../src/main/java/org/apache/camel/main/Main.java | 3 +
.../org/apache/camel/main/MainListenerSupport.java | 5 +
.../java/org/apache/camel/main/MainSupport.java | 7 +
.../camel-main-configuration-metadata.json | 12 +
.../mbean/ManagedAggregateProcessorMBean.java | 2 +
.../mbean/ManagedDynamicRouterMBean.java | 1 +
.../api/management/mbean/ManagedEnricherMBean.java | 1 +
.../management/mbean/ManagedErrorHandlerMBean.java | 3 +
.../management/mbean/ManagedPollEnricherMBean.java | 1 +
.../mbean/ManagedRecipientListMBean.java | 1 +
.../management/mbean/ManagedRoutingSlipMBean.java | 1 +
.../mbean/ManagedSendDynamicProcessorMBean.java | 1 +
.../mbean/ManagedSendProcessorMBean.java | 1 +
.../api/management/mbean/ManagedTracerMBean.java | 48 +
.../api/management/mbean/ManagedWireTapMBean.java | 1 +
.../DefaultInstrumentationProcessor.java | 1 +
.../camel/management/DefaultManagementAgent.java | 45 +
.../DefaultManagementObjectNameStrategy.java | 23 +
.../DefaultManagementObjectStrategy.java | 15 +
.../management/DelegatePerformanceCounter.java | 5 +
.../management/JmxManagementLifecycleStrategy.java | 23 +
.../camel/management/JmxManagementStrategy.java | 6 +
.../management/JmxManagementStrategyFactory.java | 1 +
.../management/JmxNotificationEventNotifier.java | 4 +
.../camel/management/LoggingEventNotifier.java | 3 +
.../camel/management/ManagedCamelContextImpl.java | 4 +
.../camel/management/PublishEventNotifier.java | 4 +
.../mbean/ManagedAggregateProcessor.java | 39 +
.../management/mbean/ManagedBacklogDebugger.java | 38 +
.../management/mbean/ManagedBacklogTracer.java | 25 +
.../management/mbean/ManagedBrowsableEndpoint.java | 11 +-
.../management/mbean/ManagedCamelContext.java | 57 ++
.../camel/management/mbean/ManagedComponent.java | 5 +
.../camel/management/mbean/ManagedConsumer.java | 2 +
.../management/mbean/ManagedConsumerCache.java | 8 +
.../camel/management/mbean/ManagedCounter.java | 4 +
.../camel/management/mbean/ManagedDelayer.java | 4 +
.../management/mbean/ManagedEndpointRegistry.java | 8 +
.../camel/management/mbean/ManagedEnricher.java | 1 +
.../management/mbean/ManagedErrorHandler.java | 59 ++
.../management/mbean/ManagedEventNotifier.java | 23 +
.../mbean/ManagedPerformanceCounter.java | 27 +
.../management/mbean/ManagedPollEnricher.java | 1 +
.../camel/management/mbean/ManagedProcessor.java | 11 +
.../camel/management/mbean/ManagedProducer.java | 2 +
.../management/mbean/ManagedProducerCache.java | 9 +
.../camel/management/mbean/ManagedRoute.java | 29 +
.../mbean/ManagedRuntimeCamelCatalog.java | 1 +
.../mbean/ManagedRuntimeEndpointRegistry.java | 1 +
.../mbean/ManagedScheduledPollConsumer.java | 16 +
.../mbean/ManagedSendDynamicProcessor.java | 8 +
.../management/mbean/ManagedSendProcessor.java | 4 +
.../camel/management/mbean/ManagedService.java | 13 +
.../mbean/ManagedStreamCachingStrategy.java | 24 +
.../management/mbean/ManagedSuspendableRoute.java | 3 +
.../camel/management/mbean/ManagedThreadPool.java | 24 +
.../camel/management/mbean/ManagedThrottler.java | 7 +
.../ManagedThrottlingInflightRoutePolicy.java | 8 +
.../management/mbean/ManagedThroughputLogger.java | 5 +
.../camel/management/mbean/ManagedTracer.java | 96 ++
.../mbean/ManagedTransformerRegistry.java | 8 +
.../mbean/ManagedTypeConverterRegistry.java | 13 +
.../management/mbean/ManagedValidatorRegistry.java | 8 +
.../management/mbean/ManagedWireTapProcessor.java | 8 +
.../camel/management/mbean/StatisticCounter.java | 3 +
.../camel/management/mbean/StatisticDelta.java | 3 +
.../camel/management/mbean/StatisticMaximum.java | 3 +
.../camel/management/mbean/StatisticMinimum.java | 3 +
.../camel/management/mbean/StatisticValue.java | 3 +
.../component/controlbus/ControlBusStatsTest.java | 1 +
.../camel/management/BacklogDebuggerTest.java | 1 +
.../camel/management/BacklogTracerFilterTest.java | 1 +
.../management/BacklogTracerIdOnAllNodesTest.java | 1 +
.../management/BacklogTracerPatternRouteTest.java | 1 +
.../camel/management/BacklogTracerPatternTest.java | 1 +
.../management/BacklogTracerStreamCachingTest.java | 1 +
.../apache/camel/management/BacklogTracerTest.java | 1 +
.../management/CamelChoiceWithManagementTest.java | 1 +
.../apache/camel/management/CustomEndpoint.java | 3 +
.../JmxInstrumentationCustomMBeanTest.java | 4 +
.../JmxInstrumentationUsingDefaultsTest.java | 1 +
.../JmxNotificationEventNotifierTest.java | 1 +
.../camel/management/JmxRecipientListTest.java | 1 +
.../management/ManagedAggregateControllerTest.java | 1 +
.../management/ManagedCustomLoadBalancerTest.java | 1 +
.../management/ManagedCustomProcessorTest.java | 1 +
.../management/ManagedFileIdempotentClearTest.java | 1 +
.../ManagedFileIdempotentConsumerTest.java | 1 +
.../management/ManagedInlinedProcessorTest.java | 2 +-
.../ManagedMemoryIdempotentClearTest.java | 1 +
.../ManagedMemoryIdempotentConsumerTest.java | 1 +
.../ManagedRouteStopAndStartCleanupTest.java | 1 +
.../camel/management/ManagedStartupFailedTest.java | 82 ++
.../management/ManagedSuspendedServiceTest.java | 1 +
.../apache/camel/management/ManagedTracerTest.java | 101 ++
.../apache/camel/component/ResourceEndpoint.java | 6 +
.../stream/ByteArrayInputStreamCache.java | 3 +
.../camel/converter/stream/CachedOutputStream.java | 8 +
.../converter/stream/FileInputStreamCache.java | 4 +
.../camel/converter/stream/InputStreamCache.java | 4 +
.../converter/stream/OutputStreamBuilder.java | 96 --
.../apache/camel/converter/stream/ReaderCache.java | 5 +
.../AsyncCallbackToCompletableFutureAdapter.java | 2 +-
.../support/AsyncProcessorConverterHelper.java | 6 +
.../camel/support/CamelObjectInputStream.java | 1 +
.../apache/camel/support/ChildServiceSupport.java | 2 +
.../apache/camel/support/DefaultAsyncProducer.java | 2 +
.../org/apache/camel/support/DefaultComponent.java | 5 +
.../org/apache/camel/support/DefaultConsumer.java | 6 +
.../org/apache/camel/support/DefaultEndpoint.java | 10 +
.../org/apache/camel/support/DefaultExchange.java | 43 +
.../camel/support/DefaultExchangeHolder.java | 2 +
.../camel/support/DefaultHeaderFilterStrategy.java | 2 +
.../camel/support/DefaultLRUCacheFactory.java | 6 +
.../org/apache/camel/support/DefaultMessage.java | 14 +
.../DefaultPollingConsumerPollStrategy.java | 3 +
.../camel/support/DefaultPollingEndpoint.java | 1 +
.../org/apache/camel/support/DefaultProducer.java | 1 +
.../support/DefaultScheduledPollConsumer.java | 11 +-
.../DefaultScheduledPollConsumerScheduler.java | 2 +
.../camel/support/DefaultThreadPoolFactory.java | 1 +
.../apache/camel/support/DefaultTimeoutMap.java | 5 +
.../camel/support/EventDrivenPollingConsumer.java | 7 +
.../apache/camel/support/EventNotifierSupport.java | 24 +
.../org/apache/camel/support/ExchangeHelper.java | 109 +--
.../apache/camel/support/ExpressionAdapter.java | 2 +
.../apache/camel/support/ExpressionComparator.java | 1 +
.../camel/support/ExpressionListComparator.java | 1 +
.../apache/camel/support/ExpressionSupport.java | 1 +
.../support/ExpressionToPredicateAdapter.java | 1 +
.../support/HeaderFilterStrategyComponent.java | 2 +
.../camel/support/HeaderSelectorProducer.java | 5 +-
.../org/apache/camel/support/LanguageSupport.java | 2 +
.../camel/support/LoggingExceptionHandler.java | 3 +
.../org/apache/camel/support/MessageHelper.java | 11 +-
.../org/apache/camel/support/ObjectHelper.java | 15 +-
.../apache/camel/support/OrderedComparator.java | 1 +
.../camel/support/PollingConsumerSupport.java | 1 +
.../apache/camel/support/ProcessorEndpoint.java | 2 +
.../camel/support/ProcessorPollingConsumer.java | 5 +
.../apache/camel/support/RoutePolicySupport.java | 4 +
.../camel/support/ScheduledPollConsumer.java | 1 +
.../camel/support/ScheduledPollEndpoint.java | 1 +
.../apache/camel/support/SimpleUuidGenerator.java | 1 +
.../camel/support/SynchronizationAdapter.java | 6 +
.../camel/support/SynchronousDelegateProducer.java | 6 +
.../org/apache/camel/support/TimeoutMapEntry.java | 5 +
.../support/builder/BinaryPredicateSupport.java | 5 +
.../camel/support/builder/ExpressionBuilder.java | 129 ---
.../camel/support/builder/OutputStreamBuilder.java | 95 ++
.../builder/TokenXMLExpressionIterator.java | 46 +-
.../support/component/AbstractApiComponent.java | 1 +
.../support/component/AbstractApiEndpoint.java | 1 +
.../support/component/AbstractApiProducer.java | 4 +-
.../support/jndi/CamelInitialContextFactory.java | 1 +
.../jndi/CamelSingletonInitialContextFactory.java | 1 +
.../camel/support/jndi/JndiBeanRepository.java | 4 +
.../org/apache/camel/support/jndi/JndiContext.java | 36 +
.../DefaultAnnotationExpressionFactory.java | 1 +
.../DefaultManagementMBeanAssembler.java | 1 +
.../camel/support/processor/CamelLogProcessor.java | 4 +
.../processor/DefaultExchangeFormatter.java | 56 +-
.../support/processor/DefaultMaskingFormatter.java | 1 +
.../support/processor/DelegateAsyncProcessor.java | 7 +
.../camel/support/processor/DelegateProcessor.java | 6 +
.../support/processor/DelegateSyncProcessor.java | 1 +
.../camel/support/processor/MarshalProcessor.java | 8 +-
.../camel/support/processor/ThroughputLogger.java | 5 +
.../support/processor/UnmarshalProcessor.java | 7 +
.../idempotent/FileIdempotentRepository.java | 5 +
.../idempotent/MemoryIdempotentRepository.java | 5 +
.../org/apache/camel/util/CamelVersionHelper.java | 16 +
.../java/org/apache/camel/util/FilterIterator.java | 3 +
.../main/java/org/apache/camel/util/Scanner.java | 3 +
.../util/concurrent/AsyncCompletionService.java | 2 +
.../camel/util/concurrent/CamelThreadFactory.java | 2 +
.../concurrent/SubmitOrderedCompletionService.java | 7 +
.../concurrent/SynchronousExecutorService.java | 6 +
docs/components/modules/ROOT/nav.adoc | 10 +-
.../modules/ROOT/pages/activemq-component.adoc | 14 +-
.../modules/ROOT/pages/ahc-component.adoc | 46 +-
.../modules/ROOT/pages/ahc-ws-component.adoc | 18 +-
.../modules/ROOT/pages/amqp-component.adoc | 20 +-
.../modules/ROOT/pages/apns-component.adoc | 30 +-
.../modules/ROOT/pages/as2-component.adoc | 16 +-
.../modules/ROOT/pages/asn1-dataformat.adoc | 10 +-
.../modules/ROOT/pages/asterisk-component.adoc | 14 +-
.../modules/ROOT/pages/atmos-component.adoc | 18 +-
.../ROOT/pages/atmosphere-websocket-component.adoc | 20 +-
.../modules/ROOT/pages/atom-component.adoc | 20 +-
.../modules/ROOT/pages/atomix-map-component.adoc | 18 +-
.../ROOT/pages/atomix-messaging-component.adoc | 10 +-
.../ROOT/pages/atomix-multimap-component.adoc | 10 +-
.../modules/ROOT/pages/atomix-queue-component.adoc | 10 +-
.../modules/ROOT/pages/atomix-set-component.adoc | 10 +-
.../modules/ROOT/pages/atomix-value-component.adoc | 10 +-
.../modules/ROOT/pages/avro-component.adoc | 20 +-
.../modules/ROOT/pages/avro-dataformat.adoc | 10 +-
.../modules/ROOT/pages/aws-cw-component.adoc | 24 +-
.../modules/ROOT/pages/aws-ddb-component.adoc | 42 +-
.../ROOT/pages/aws-ddbstream-component.adoc | 34 +-
.../modules/ROOT/pages/aws-ec2-component.adoc | 20 +-
.../modules/ROOT/pages/aws-ecs-component.adoc | 22 +-
.../modules/ROOT/pages/aws-eks-component.adoc | 22 +-
.../modules/ROOT/pages/aws-iam-component.adoc | 22 +-
.../modules/ROOT/pages/aws-kinesis-component.adoc | 32 +-
.../ROOT/pages/aws-kinesis-firehose-component.adoc | 26 +-
.../modules/ROOT/pages/aws-kms-component.adoc | 22 +-
.../modules/ROOT/pages/aws-lambda-component.adoc | 26 +-
.../modules/ROOT/pages/aws-mq-component.adoc | 20 +-
.../modules/ROOT/pages/aws-msk-component.adoc | 22 +-
.../modules/ROOT/pages/aws-s3-component.adoc | 40 +-
.../modules/ROOT/pages/aws-sdb-component.adoc | 30 +-
.../modules/ROOT/pages/aws-ses-component.adoc | 26 +-
.../modules/ROOT/pages/aws-sns-component.adoc | 30 +-
.../modules/ROOT/pages/aws-sqs-component.adoc | 48 +-
.../modules/ROOT/pages/aws-swf-component.adoc | 32 +-
docs/components/modules/ROOT/pages/aws-xray.adoc | 12 +-
.../modules/ROOT/pages/azure-blob-component.adoc | 26 +-
.../modules/ROOT/pages/azure-queue-component.adoc | 22 +-
docs/components/modules/ROOT/pages/azure.adoc | 2 +-
.../modules/ROOT/pages/barcode-dataformat.adoc | 14 +-
.../modules/ROOT/pages/base64-dataformat.adoc | 12 +-
.../modules/ROOT/pages/bean-component.adoc | 18 +-
.../modules/ROOT/pages/bean-language.adoc | 33 +-
.../ROOT/pages/bean-validator-component.adoc | 18 +-
.../modules/ROOT/pages/beanio-dataformat.adoc | 14 +-
.../modules/ROOT/pages/beanstalk-component.adoc | 20 +-
.../modules/ROOT/pages/bindy-dataformat.adoc | 44 +-
docs/components/modules/ROOT/pages/blueprint.adoc | 6 +-
.../modules/ROOT/pages/bonita-component.adoc | 18 +-
.../modules/ROOT/pages/boon-dataformat.adoc | 104 --
.../modules/ROOT/pages/box-component.adoc | 48 +-
.../modules/ROOT/pages/braintree-component.adoc | 60 +-
.../modules/ROOT/pages/browse-component.adoc | 16 +-
.../ROOT/pages/caffeine-cache-component.adoc | 16 +-
.../ROOT/pages/caffeine-loadcache-component.adoc | 12 +-
.../modules/ROOT/pages/cbor-dataformat.adoc | 10 +-
docs/components/modules/ROOT/pages/cdi.adoc | 353 +------
.../modules/ROOT/pages/chatscript-component.adoc | 12 +-
.../modules/ROOT/pages/chunk-component.adoc | 22 +-
.../modules/ROOT/pages/class-component.adoc | 16 +-
.../modules/ROOT/pages/cm-sms-component.adoc | 12 +-
.../modules/ROOT/pages/cmis-component.adoc | 22 +-
.../modules/ROOT/pages/coap-component.adoc | 14 +-
.../modules/ROOT/pages/cometd-component.adoc | 22 +-
.../modules/ROOT/pages/consul-component.adoc | 14 +-
.../modules/ROOT/pages/controlbus-component.adoc | 18 +-
.../modules/ROOT/pages/corda-component.adoc | 16 +-
.../modules/ROOT/pages/couchbase-component.adoc | 14 +-
.../modules/ROOT/pages/couchdb-component.adoc | 18 +-
.../modules/ROOT/pages/cql-component.adoc | 26 +-
.../modules/ROOT/pages/crypto-cms-component.adoc | 14 +-
.../modules/ROOT/pages/crypto-component.adoc | 30 +-
.../modules/ROOT/pages/crypto-dataformat.adoc | 20 +-
.../modules/ROOT/pages/csv-dataformat.adoc | 24 +-
.../modules/ROOT/pages/cxf-component.adoc | 105 +-
.../modules/ROOT/pages/cxf-transport.adoc | 20 +-
.../modules/ROOT/pages/cxfrs-component.adoc | 28 +-
.../modules/ROOT/pages/dataformat-component.adoc | 14 +-
.../modules/ROOT/pages/dataset-component.adoc | 33 +-
.../modules/ROOT/pages/dataset-test-component.adoc | 17 +-
.../modules/ROOT/pages/digitalocean-component.adoc | 40 +-
.../modules/ROOT/pages/direct-component.adoc | 16 +-
.../modules/ROOT/pages/direct-vm-component.adoc | 14 +-
.../modules/ROOT/pages/disruptor-component.adoc | 26 +-
.../modules/ROOT/pages/dns-component.adoc | 24 +-
.../modules/ROOT/pages/docker-component.adoc | 18 +-
.../modules/ROOT/pages/dozer-component.adoc | 24 +-
.../modules/ROOT/pages/drill-component.adoc | 16 +-
.../modules/ROOT/pages/dropbox-component.adoc | 54 +-
.../modules/ROOT/pages/ehcache-component.adoc | 22 +-
.../modules/ROOT/pages/ejb-component.adoc | 225 -----
.../ROOT/pages/elasticsearch-rest-component.adoc | 22 +-
.../modules/ROOT/pages/elsql-component.adoc | 20 +-
.../modules/ROOT/pages/etcd-component.adoc | 12 +-
.../modules/ROOT/pages/eventadmin-component.adoc | 18 +-
.../modules/ROOT/pages/exec-component.adoc | 30 +-
.../modules/ROOT/pages/facebook-component.adoc | 24 +-
.../modules/ROOT/pages/fhir-component.adoc | 10 +-
.../modules/ROOT/pages/fhirJson-dataformat.adoc | 10 +-
.../modules/ROOT/pages/fhirXml-dataformat.adoc | 10 +-
.../modules/ROOT/pages/file-component.adoc | 84 +-
.../modules/ROOT/pages/file-watch-component.adoc | 22 +-
.../modules/ROOT/pages/flatpack-component.adoc | 32 +-
.../modules/ROOT/pages/flatpack-dataformat.adoc | 10 +-
.../modules/ROOT/pages/flink-component.adoc | 20 +-
.../modules/ROOT/pages/fop-component.adoc | 20 +-
.../modules/ROOT/pages/freemarker-component.adoc | 26 +-
.../modules/ROOT/pages/ftp-component.adoc | 60 +-
.../modules/ROOT/pages/ftps-component.adoc | 10 +-
.../modules/ROOT/pages/ganglia-component.adoc | 22 +-
.../modules/ROOT/pages/geocoder-component.adoc | 18 +-
.../modules/ROOT/pages/git-component.adoc | 16 +-
.../modules/ROOT/pages/github-component.adoc | 16 +-
.../ROOT/pages/google-bigquery-component.adoc | 24 +-
.../ROOT/pages/google-bigquery-sql-component.adoc | 18 +-
.../ROOT/pages/google-calendar-component.adoc | 20 +-
.../pages/google-calendar-stream-component.adoc | 14 +-
.../modules/ROOT/pages/google-drive-component.adoc | 20 +-
.../modules/ROOT/pages/google-mail-component.adoc | 20 +-
.../ROOT/pages/google-mail-stream-component.adoc | 14 +-
.../ROOT/pages/google-pubsub-component.adoc | 24 +-
.../ROOT/pages/google-sheets-component.adoc | 20 +-
.../ROOT/pages/google-sheets-stream-component.adoc | 14 +-
.../modules/ROOT/pages/gora-component.adoc | 24 +-
.../modules/ROOT/pages/grape-component.adoc | 28 +-
.../modules/ROOT/pages/grok-dataformat.adoc | 16 +-
.../modules/ROOT/pages/groovy-language.adoc | 22 +-
.../modules/ROOT/pages/grpc-component.adoc | 26 +-
.../ROOT/pages/guava-eventbus-component.adoc | 18 +-
.../ROOT/pages/gzipdeflater-dataformat.adoc | 10 +-
.../pages/hazelcast-atomicvalue-component.adoc | 22 +-
.../ROOT/pages/hazelcast-instance-component.adoc | 12 +-
.../ROOT/pages/hazelcast-list-component.adoc | 22 +-
.../ROOT/pages/hazelcast-map-component.adoc | 24 +-
.../ROOT/pages/hazelcast-multimap-component.adoc | 22 +-
.../ROOT/pages/hazelcast-queue-component.adoc | 38 +-
.../pages/hazelcast-replicatedmap-component.adoc | 20 +-
.../ROOT/pages/hazelcast-ringbuffer-component.adoc | 16 +-
.../ROOT/pages/hazelcast-seda-component.adoc | 14 +-
.../ROOT/pages/hazelcast-set-component.adoc | 10 +-
.../ROOT/pages/hazelcast-topic-component.adoc | 16 +-
docs/components/modules/ROOT/pages/hazelcast.adoc | 16 +-
.../modules/ROOT/pages/hbase-component.adoc | 38 +-
.../modules/ROOT/pages/hdfs-component.adoc | 323 +++++++
.../modules/ROOT/pages/hdfs2-component.adoc | 323 -------
.../modules/ROOT/pages/hipchat-component.adoc | 26 +-
.../modules/ROOT/pages/hl7-dataformat.adoc | 26 +-
.../modules/ROOT/pages/hl7terser-language.adoc | 10 +-
.../modules/ROOT/pages/http-component.adoc | 725 ++++++++++++++
.../modules/ROOT/pages/http4-component.adoc | 732 --------------
docs/components/modules/ROOT/pages/hystrix.adoc | 4 +-
.../modules/ROOT/pages/ical-dataformat.adoc | 10 +-
.../ROOT/pages/iec60870-client-component.adoc | 12 +-
.../ROOT/pages/iec60870-server-component.adoc | 12 +-
.../modules/ROOT/pages/ignite-cache-component.adoc | 12 +-
.../ROOT/pages/ignite-compute-component.adoc | 14 +-
.../ROOT/pages/ignite-events-component.adoc | 10 +-
.../modules/ROOT/pages/ignite-idgen-component.adoc | 10 +-
.../ROOT/pages/ignite-messaging-component.adoc | 12 +-
.../modules/ROOT/pages/ignite-queue-component.adoc | 12 +-
.../modules/ROOT/pages/ignite-set-component.adoc | 12 +-
docs/components/modules/ROOT/pages/ignite.adoc | 14 +-
.../modules/ROOT/pages/infinispan-component.adoc | 595 +++++++++++-
.../modules/ROOT/pages/influxdb-component.adoc | 16 +-
.../modules/ROOT/pages/iota-component.adoc | 16 +-
.../modules/ROOT/pages/ipfs-component.adoc | 18 +-
.../modules/ROOT/pages/irc-component.adoc | 24 +-
.../modules/ROOT/pages/ironmq-component.adoc | 24 +-
.../modules/ROOT/pages/jacksonxml-dataformat.adoc | 28 +-
docs/components/modules/ROOT/pages/jasypt.adoc | 16 +-
.../modules/ROOT/pages/jaxb-dataformat.adoc | 30 +-
.../modules/ROOT/pages/jbpm-component.adoc | 32 +-
.../modules/ROOT/pages/jcache-component.adoc | 36 +-
.../modules/ROOT/pages/jclouds-component.adoc | 34 +-
.../modules/ROOT/pages/jcr-component.adoc | 18 +-
.../modules/ROOT/pages/jdbc-component.adoc | 26 +-
.../modules/ROOT/pages/jetty-component.adoc | 54 +-
.../modules/ROOT/pages/jgroups-component.adoc | 28 +-
.../modules/ROOT/pages/jgroups-raft-component.adoc | 22 +-
.../modules/ROOT/pages/jing-component.adoc | 16 +-
.../modules/ROOT/pages/jira-component.adoc | 38 +-
.../modules/ROOT/pages/jms-component.adoc | 94 +-
.../modules/ROOT/pages/jmx-component.adoc | 12 +-
.../modules/ROOT/pages/jolt-component.adoc | 16 +-
.../modules/ROOT/pages/jooq-component.adoc | 18 +-
.../modules/ROOT/pages/jpa-component.adoc | 46 +-
.../ROOT/pages/json-fastjson-dataformat.adoc | 8 +-
.../modules/ROOT/pages/json-gson-dataformat.adoc | 8 +-
.../ROOT/pages/json-jackson-dataformat.adoc | 10 +-
.../ROOT/pages/json-johnzon-dataformat.adoc | 8 +-
.../ROOT/pages/json-validator-component.adoc | 14 +-
.../ROOT/pages/json-xstream-dataformat.adoc | 12 +-
.../modules/ROOT/pages/jsonApi-dataformat.adoc | 6 +-
.../modules/ROOT/pages/jsonpath-language.adoc | 28 +-
.../modules/ROOT/pages/jt400-component.adoc | 28 +-
.../modules/ROOT/pages/kafka-component.adoc | 40 +-
.../pages/kubernetes-config-maps-component.adoc | 12 +-
.../pages/kubernetes-deployments-component.adoc | 12 +-
.../ROOT/pages/kubernetes-hpa-component.adoc | 12 +-
.../ROOT/pages/kubernetes-job-component.adoc | 12 +-
.../pages/kubernetes-namespaces-component.adoc | 12 +-
.../ROOT/pages/kubernetes-nodes-component.adoc | 12 +-
...rnetes-persistent-volumes-claims-component.adoc | 12 +-
.../kubernetes-persistent-volumes-component.adoc | 12 +-
.../ROOT/pages/kubernetes-pods-component.adoc | 12 +-
...bernetes-replication-controllers-component.adoc | 12 +-
.../kubernetes-resources-quota-component.adoc | 12 +-
.../ROOT/pages/kubernetes-secrets-component.adoc | 12 +-
.../kubernetes-service-accounts-component.adoc | 12 +-
.../ROOT/pages/kubernetes-services-component.adoc | 12 +-
docs/components/modules/ROOT/pages/kubernetes.adoc | 12 +-
docs/components/modules/ROOT/pages/kura.adoc | 28 +-
.../modules/ROOT/pages/language-component.adoc | 18 +-
.../modules/ROOT/pages/ldap-component.adoc | 24 +-
.../modules/ROOT/pages/ldif-component.adoc | 25 +-
docs/components/modules/ROOT/pages/leveldb.adoc | 16 +-
.../modules/ROOT/pages/linkedin-component.adoc | 36 +-
.../modules/ROOT/pages/log-component.adoc | 31 +-
.../modules/ROOT/pages/lpr-component.adoc | 24 +-
docs/components/modules/ROOT/pages/lra.adoc | 4 +-
.../modules/ROOT/pages/lucene-component.adoc | 30 +-
.../modules/ROOT/pages/lumberjack-component.adoc | 18 +-
.../modules/ROOT/pages/lzf-dataformat.adoc | 12 +-
.../modules/ROOT/pages/mail-component.adoc | 50 +-
.../modules/ROOT/pages/master-component.adoc | 20 +-
.../modules/ROOT/pages/metrics-component.adoc | 58 +-
.../modules/ROOT/pages/micrometer-component.adoc | 50 +-
.../modules/ROOT/pages/microprofile-config.adoc | 4 +-
.../modules/ROOT/pages/milo-client-component.adoc | 24 +-
.../modules/ROOT/pages/milo-server-component.adoc | 16 +-
.../ROOT/pages/mime-multipart-dataformat.adoc | 12 +-
.../modules/ROOT/pages/mina2-component.adoc | 28 +-
.../modules/ROOT/pages/mllp-component.adoc | 22 +-
.../modules/ROOT/pages/mock-component.adoc | 42 +-
.../modules/ROOT/pages/mongodb-component.adoc | 1016 ++++++++++++++++++++
.../ROOT/pages/mongodb-gridfs-component.adoc | 30 +-
.../modules/ROOT/pages/mongodb3-component.adoc | 1015 -------------------
.../modules/ROOT/pages/mqtt-component.adoc | 18 +-
.../modules/ROOT/pages/msv-component.adoc | 16 +-
.../modules/ROOT/pages/mustache-component.adoc | 22 +-
.../modules/ROOT/pages/mvel-component.adoc | 24 +-
.../modules/ROOT/pages/mvel-language.adoc | 14 +-
.../modules/ROOT/pages/mybatis-bean-component.adoc | 16 +-
.../modules/ROOT/pages/mybatis-component.adoc | 34 +-
.../modules/ROOT/pages/nagios-component.adoc | 18 +-
.../modules/ROOT/pages/nats-component.adoc | 14 +-
.../modules/ROOT/pages/netty4-component.adoc | 46 +-
.../modules/ROOT/pages/netty4-http-component.adoc | 34 +-
.../modules/ROOT/pages/nsq-component.adoc | 12 +-
.../modules/ROOT/pages/ognl-language.adoc | 14 +-
.../modules/ROOT/pages/olingo2-component.adoc | 28 +-
.../modules/ROOT/pages/olingo4-component.adoc | 26 +-
.../pages/openshift-build-configs-component.adoc | 10 +-
.../ROOT/pages/openshift-builds-component.adoc | 10 +-
.../ROOT/pages/openstack-cinder-component.adoc | 30 +-
.../ROOT/pages/openstack-glance-component.adoc | 20 +-
.../ROOT/pages/openstack-keystone-component.adoc | 48 +-
.../ROOT/pages/openstack-neutron-component.adoc | 42 +-
.../ROOT/pages/openstack-nova-component.adoc | 36 +-
.../ROOT/pages/openstack-swift-component.adoc | 30 +-
docs/components/modules/ROOT/pages/openstack.adoc | 2 +-
.../components/modules/ROOT/pages/opentracing.adoc | 14 +-
.../modules/ROOT/pages/optaplanner-component.adoc | 22 +-
.../modules/ROOT/pages/paho-component.adoc | 19 +-
.../modules/ROOT/pages/paxlogging-component.adoc | 16 +-
.../modules/ROOT/pages/pdf-component.adoc | 16 +-
.../ROOT/pages/pg-replication-slot-component.adoc | 16 +-
.../modules/ROOT/pages/pgevent-component.adoc | 12 +-
.../modules/ROOT/pages/pgp-dataformat.adoc | 26 +-
.../modules/ROOT/pages/properties-component.adoc | 76 +-
.../modules/ROOT/pages/protobuf-dataformat.adoc | 22 +-
.../modules/ROOT/pages/pubnub-component.adoc | 28 +-
.../modules/ROOT/pages/pulsar-component.adoc | 12 +-
.../modules/ROOT/pages/quartz2-component.adoc | 44 +-
.../modules/ROOT/pages/quickfix-component.adoc | 62 +-
.../modules/ROOT/pages/rabbitmq-component.adoc | 24 +-
.../ROOT/pages/reactive-executor-vertx.adoc | 8 +-
.../ROOT/pages/reactive-streams-component.adoc | 38 +-
.../modules/ROOT/pages/reactor-component.adoc | 2 +-
.../modules/ROOT/pages/ref-component.adoc | 16 +-
.../modules/ROOT/pages/rest-api-component.adoc | 12 +-
.../modules/ROOT/pages/rest-component.adoc | 29 +-
.../modules/ROOT/pages/rest-swagger-component.adoc | 17 +-
.../modules/ROOT/pages/restlet-component.adoc | 30 +-
docs/components/modules/ROOT/pages/ribbon.adoc | 6 +-
.../modules/ROOT/pages/rss-component.adoc | 22 +-
.../modules/ROOT/pages/rss-dataformat.adoc | 6 +-
docs/components/modules/ROOT/pages/rxjava.adoc | 20 +
docs/components/modules/ROOT/pages/rxjava2.adoc | 20 -
.../modules/ROOT/pages/saga-component.adoc | 12 +-
.../modules/ROOT/pages/salesforce-component.adoc | 56 +-
.../ROOT/pages/sap-netweaver-component.adoc | 22 +-
.../modules/ROOT/pages/scheduler-component.adoc | 24 +-
.../modules/ROOT/pages/schematron-component.adoc | 18 +-
.../modules/ROOT/pages/scp-component.adoc | 16 +-
.../modules/ROOT/pages/secureXML-dataformat.adoc | 28 +-
.../modules/ROOT/pages/seda-component.adoc | 28 +-
.../modules/ROOT/pages/service-component.adoc | 18 +-
.../modules/ROOT/pages/servicenow-component.adoc | 16 +-
.../modules/ROOT/pages/servlet-component.adoc | 36 +-
.../modules/ROOT/pages/sftp-component.adoc | 8 +-
docs/components/modules/ROOT/pages/shiro.adoc | 18 +-
.../modules/ROOT/pages/sip-component.adoc | 18 +-
.../modules/ROOT/pages/sjms-batch-component.adoc | 12 +-
.../modules/ROOT/pages/sjms-component.adoc | 46 +-
.../modules/ROOT/pages/sjms2-component.adoc | 50 +-
.../modules/ROOT/pages/slack-component.adoc | 20 +-
.../modules/ROOT/pages/smpp-component.adoc | 30 +-
.../modules/ROOT/pages/snmp-component.adoc | 20 +-
.../modules/ROOT/pages/soapjaxb-dataformat.adoc | 24 +-
.../modules/ROOT/pages/solr-component.adoc | 22 +-
.../modules/ROOT/pages/soroush-component.adoc | 24 +-
.../modules/ROOT/pages/spark-component.adoc | 30 +-
.../modules/ROOT/pages/spark-rest-component.adoc | 18 +-
.../modules/ROOT/pages/spel-language.adoc | 16 +-
.../modules/ROOT/pages/splunk-component.adoc | 24 +-
.../modules/ROOT/pages/spring-batch-component.adoc | 26 +-
.../components/modules/ROOT/pages/spring-boot.adoc | 38 +-
.../modules/ROOT/pages/spring-cloud-consul.adoc | 2 +-
.../modules/ROOT/pages/spring-cloud-netflix.adoc | 4 +-
.../modules/ROOT/pages/spring-cloud-zookeeper.adoc | 2 +-
.../modules/ROOT/pages/spring-cloud.adoc | 4 +-
.../modules/ROOT/pages/spring-event-component.adoc | 14 +-
.../ROOT/pages/spring-integration-component.adoc | 22 +-
.../modules/ROOT/pages/spring-javaconfig.adoc | 8 +-
.../modules/ROOT/pages/spring-ldap-component.adoc | 26 +-
.../modules/ROOT/pages/spring-redis-component.adoc | 20 +-
.../modules/ROOT/pages/spring-security.adoc | 14 +-
.../modules/ROOT/pages/spring-ws-component.adoc | 40 +-
docs/components/modules/ROOT/pages/spring.adoc | 30 +-
.../modules/ROOT/pages/sql-component.adoc | 54 +-
.../modules/ROOT/pages/sql-stored-component.adoc | 24 +-
.../modules/ROOT/pages/ssh-component.adoc | 20 +-
.../modules/ROOT/pages/stax-component.adoc | 20 +-
.../modules/ROOT/pages/stomp-component.adoc | 18 +-
.../modules/ROOT/pages/stream-component.adoc | 16 +-
.../ROOT/pages/string-template-component.adoc | 24 +-
.../modules/ROOT/pages/stub-component.adoc | 14 +-
.../modules/ROOT/pages/swagger-java.adoc | 14 +-
.../modules/ROOT/pages/syslog-dataformat.adoc | 16 +-
.../modules/ROOT/pages/tarfile-dataformat.adoc | 14 +-
.../modules/ROOT/pages/telegram-component.adoc | 28 +-
.../modules/ROOT/pages/test-blueprint.adoc | 8 +-
docs/components/modules/ROOT/pages/test-cdi.adoc | 26 +-
docs/components/modules/ROOT/pages/test-karaf.adoc | 2 +-
.../components/modules/ROOT/pages/test-spring.adoc | 22 +-
docs/components/modules/ROOT/pages/test.adoc | 4 +-
.../modules/ROOT/pages/testcontainers-spring.adoc | 2 +-
.../modules/ROOT/pages/testcontainers.adoc | 2 +-
.../modules/ROOT/pages/thrift-component.adoc | 22 +-
.../modules/ROOT/pages/thrift-dataformat.adoc | 20 +-
.../modules/ROOT/pages/tidyMarkup-dataformat.adoc | 12 +-
.../modules/ROOT/pages/tika-component.adoc | 14 +-
.../modules/ROOT/pages/timer-component.adoc | 22 +-
.../modules/ROOT/pages/twilio-component.adoc | 20 +-
.../pages/twitter-directmessage-component.adoc | 12 +-
.../ROOT/pages/twitter-search-component.adoc | 12 +-
.../ROOT/pages/twitter-streaming-component.adoc | 12 +-
.../ROOT/pages/twitter-timeline-component.adoc | 12 +-
docs/components/modules/ROOT/pages/twitter.adoc | 24 +-
.../modules/ROOT/pages/undertow-component.adoc | 24 +-
.../ROOT/pages/univocity-csv-dataformat.adoc | 22 +-
.../ROOT/pages/univocity-fixed-dataformat.adoc | 22 +-
.../ROOT/pages/univocity-tsv-dataformat.adoc | 22 +-
.../modules/ROOT/pages/validator-component.adoc | 16 +-
.../modules/ROOT/pages/velocity-component.adoc | 26 +-
.../modules/ROOT/pages/vertx-component.adoc | 16 +-
.../modules/ROOT/pages/vm-component.adoc | 16 +-
.../modules/ROOT/pages/weather-component.adoc | 22 +-
.../modules/ROOT/pages/web3j-component.adoc | 16 +-
.../modules/ROOT/pages/webhook-component.adoc | 14 +-
.../modules/ROOT/pages/websocket-component.adoc | 24 +-
.../ROOT/pages/websocket-jsr356-component.adoc | 12 +-
.../modules/ROOT/pages/wordpress-component.adoc | 18 +-
.../modules/ROOT/pages/xchange-component.adoc | 18 +-
.../modules/ROOT/pages/xmlsecurity-component.adoc | 30 +-
.../modules/ROOT/pages/xmpp-component.adoc | 18 +-
.../modules/ROOT/pages/xpath-language.adoc | 40 +-
.../modules/ROOT/pages/xquery-component.adoc | 30 +-
.../modules/ROOT/pages/xquery-language.adoc | 26 +-
.../modules/ROOT/pages/xslt-component.adoc | 32 +-
.../modules/ROOT/pages/xstream-dataformat.adoc | 20 +-
.../ROOT/pages/yaml-snakeyaml-dataformat.adoc | 12 +-
.../modules/ROOT/pages/yammer-component.adoc | 24 +-
.../modules/ROOT/pages/zendesk-component.adoc | 20 +-
.../modules/ROOT/pages/zipdeflater-dataformat.adoc | 8 +-
.../modules/ROOT/pages/zipfile-dataformat.adoc | 14 +-
docs/components/modules/ROOT/pages/zipkin.adoc | 18 +-
.../modules/ROOT/pages/zookeeper-component.adoc | 20 +-
.../ROOT/pages/zookeeper-master-component.adoc | 20 +-
docs/gulpfile.js | 4 +-
.../spring/javaconfig/patterns/FilterTest.java | 1 +
.../test/spring/CamelSpringRunnerPlainTest.java | 29 +-
.../org/apache/camel/processor/FilterTest.java | 1 +
.../org/apache/camel/processor/TransformTest.java | 1 +
.../camel/processor/TransformViaDSLTest.java | 1 +
.../management/ManagedCustomProcessorTest.java | 1 +
.../modules/ROOT/pages/aggregate-eip.adoc | 34 +-
.../modules/ROOT/pages/architecture.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/async.adoc | 64 +-
.../ROOT/pages/asynchronous-routing-engine.adoc | 6 +-
.../modules/ROOT/pages/backlog-tracer.adoc | 12 +-
.../modules/ROOT/pages/backlogdebugger.adoc | 10 +-
.../modules/ROOT/pages/bam-example.adoc | 8 +-
docs/user-manual/modules/ROOT/pages/bam.adoc | 10 +-
.../modules/ROOT/pages/batch-config-eip.adoc | 2 +-
.../modules/ROOT/pages/batch-consumer.adoc | 8 +-
docs/user-manual/modules/ROOT/pages/bean-eip.adoc | 14 +-
.../modules/ROOT/pages/bean-integration.adoc | 8 +-
docs/user-manual/modules/ROOT/pages/binding.adoc | 10 +-
.../modules/ROOT/pages/book-getting-started.adoc | 36 +-
docs/user-manual/modules/ROOT/pages/books.adoc | 20 +-
.../modules/ROOT/pages/browsable-endpoint.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/building.adoc | 28 +-
.../user-manual/modules/ROOT/pages/camel-boot.adoc | 8 +-
.../ROOT/pages/camel-configuration-utilities.adoc | 32 +-
.../user-manual/modules/ROOT/pages/camel-core.adoc | 2 +
.../modules/ROOT/pages/camel-jar-dependencies.adoc | 14 +-
.../modules/ROOT/pages/camelcontext.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/cep.adoc | 4 +-
.../user-manual/modules/ROOT/pages/choice-eip.adoc | 6 +-
.../modules/ROOT/pages/circuitBreaker-eip.adoc | 2 +-
.../modules/ROOT/pages/claimCheck-eip.adoc | 16 +-
.../user-manual/modules/ROOT/pages/clustering.adoc | 6 +-
.../ROOT/pages/commercial-camel-offerings.adoc | 26 +-
docs/user-manual/modules/ROOT/pages/component.adoc | 6 +-
.../modules/ROOT/pages/componentconfiguration.adoc | 2 +-
.../modules/ROOT/pages/configuring-camel.adoc | 8 +-
...ing-route-startup-ordering-and-autostartup.adoc | 26 +-
.../modules/ROOT/pages/constant-language.adoc | 10 +-
.../ROOT/pages/content-based-router-eip.adoc | 8 +-
.../modules/ROOT/pages/content-enricher.adoc | 2 +-
.../modules/ROOT/pages/content-filter-eip.adoc | 8 +-
.../modules/ROOT/pages/contributing.adoc | 2 +-
.../modules/ROOT/pages/convertBodyTo-eip.adoc | 2 +-
.../modules/ROOT/pages/correlation-identifier.adoc | 4 +-
.../modules/ROOT/pages/customLoadBalancer-eip.adoc | 2 +-
.../modules/ROOT/pages/data-format.adoc | 11 +-
.../modules/ROOT/pages/dead-letter-channel.adoc | 53 +-
docs/user-manual/modules/ROOT/pages/debugger.adoc | 12 +-
.../modules/ROOT/pages/defaulterrorhandler.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/delay-eip.adoc | 20 +-
.../modules/ROOT/pages/delay-interceptor.adoc | 10 +-
.../modules/ROOT/pages/dependency-injection.adoc | 2 +-
.../modules/ROOT/pages/dozer-type-conversion.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/dsl.adoc | 4 +-
.../modules/ROOT/pages/dynamic-router.adoc | 12 +-
.../modules/ROOT/pages/dynamicRouter-eip.adoc | 12 +-
.../modules/ROOT/pages/endpoint-completer.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/endpoint.adoc | 4 +-
.../user-manual/modules/ROOT/pages/enrich-eip.adoc | 18 +-
.../pages/enterprise-integration-patterns.adoc | 16 +-
.../modules/ROOT/pages/error-handler.adoc | 28 +-
.../ROOT/pages/error-handling-in-camel.adoc | 20 +-
.../modules/ROOT/pages/event-message.adoc | 6 +-
.../ROOT/pages/eventDrivenConsumer-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/examples.adoc | 8 +-
.../modules/ROOT/pages/exception-clause.adoc | 109 ++-
.../modules/ROOT/pages/exchange-pattern.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/exchange.adoc | 4 +-
.../ROOT/pages/exchangeProperty-language.adoc | 8 +-
.../user-manual/modules/ROOT/pages/expression.adoc | 14 +-
.../modules/ROOT/pages/failover-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/faq.adoc | 18 +-
.../pages/faq/can-i-get-commercial-support.adoc | 2 +-
.../ROOT/pages/faq/can-i-use-camel-on-java-14.adoc | 2 +-
...loader-issue-of-servicemix-camel-component.adoc | 2 +-
.../pages/faq/does-camel-work-on-ibms-jdk.adoc | 8 +-
.../exception-beandefinitionstoreexception.adoc | 2 +-
...ption-javaxnamingnoinitialcontextexception.adoc | 2 +-
...tion-orgapachecamelnosuchendpointexception.adoc | 4 +-
.../faq/exception-orgxmlsaxsaxparseexception.adoc | 2 +-
...an-i-create-a-custom-component-or-endpoint.adoc | 4 +-
...on-ip-address-from-the-camel-cxf-consumer-.adoc | 2 +-
.../pages/faq/how-can-i-get-the-source-code.adoc | 12 +-
.../faq/how-can-i-stop-a-route-from-a-route.adoc | 10 +-
...ults-with-stacktraces-when-using-camel-cxf.adoc | 2 +-
.../pages/faq/how-do-i-become-a-committer.adoc | 12 +-
.../pages/faq/how-do-i-change-the-logging.adoc | 2 +-
.../ROOT/pages/faq/how-do-i-compile-the-code.adoc | 2 +-
.../pages/faq/how-do-i-configure-endpoints.adoc | 24 +-
...-endpoints-without-the-value-being-encoded.adoc | 4 +-
...size-for-producercache-or-producertemplate.adoc | 4 +-
...ximum-endpoint-cache-size-for-camelcontext.adoc | 6 +-
.../ROOT/pages/faq/how-do-i-debug-my-route.adoc | 2 +-
.../ROOT/pages/faq/how-do-i-disable-jmx.adoc | 2 +-
.../ROOT/pages/faq/how-do-i-edit-the-website.adoc | 6 +-
.../pages/faq/how-do-i-enable-debug-logging.adoc | 2 +-
...reams-when-debug-logging-messages-in-camel.adoc | 6 +-
...en-consuming-for-example-from-a-ftp-server.adoc | 4 +-
...how-do-i-import-rests-from-other-xml-files.adoc | 2 +-
...ow-do-i-import-routes-from-other-xml-files.adoc | 4 +-
.../faq/how-do-i-invoke-camel-routes-from-jbi.adoc | 2 +-
.../faq/how-do-i-let-jetty-match-wildcards.adoc | 2 +-
...ow-do-i-make-my-jms-endpoint-transactional.adoc | 8 +-
.../ROOT/pages/faq/how-do-i-name-my-routes.adoc | 2 +-
.../pages/faq/how-do-i-restart-camelcontext.adoc | 2 +-
...wn-exception-during-processing-an-exchange.adoc | 2 +-
.../how-do-i-retry-failed-messages-forever.adoc | 2 +-
...om-a-certain-point-back-or-an-entire-route.adoc | 2 +-
...-contexttestsupport-class-in-my-unit-tests.adoc | 2 +-
.../how-do-i-run-activemq-and-camel-in-jboss.adoc | 4 +-
.../how-do-i-run-camel-using-java-webstart.adoc | 4 +-
...chars-when-debug-logging-messages-in-camel.adoc | 6 +-
...do-i-set-the-mep-when-interacting-with-jbi.adoc | 6 +-
...ify-time-period-in-a-human-friendly-syntax.adoc | 2 +-
...h-method-to-use-when-using-beans-in-routes.adoc | 2 +-
.../pages/faq/how-do-i-use-a-big-uber-jar.adoc | 2 +-
.../faq/how-do-i-use-camel-inside-servicemix.adoc | 2 +-
.../pages/faq/how-do-i-use-java-14-logging.adoc | 2 +-
.../modules/ROOT/pages/faq/how-do-i-use-log4j.adoc | 2 +-
...spring-property-placeholder-with-camel-xml.adoc | 4 +-
.../how-do-i-use-uris-with-parameters-in-xml.adoc | 2 +-
...om-processor-which-sends-multiple-messages.adoc | 2 +-
...direct-event-seda-and-vm-endpoints-compare.adoc | 2 +-
...-do-the-timer-and-quartz-endpoints-compare.adoc | 2 +-
.../pages/faq/how-does-camel-compare-to-mule.adoc | 2 +-
.../how-does-camel-compare-to-servicemix-eip.adoc | 6 +-
.../faq/how-does-camel-compare-to-servicemix.adoc | 4 +-
.../faq/how-does-camel-compare-to-synapse.adoc | 2 +-
...how-does-camel-look-up-beans-and-endpoints.adoc | 2 +-
.../faq/how-does-camel-work-with-activemq.adoc | 2 +-
.../faq/how-does-camel-work-with-servicemix.adoc | 4 +-
.../ROOT/pages/faq/how-does-camel-work.adoc | 2 +-
.../faq/how-does-the-camel-api-compare-to.adoc | 6 +-
.../ROOT/pages/faq/how-does-the-website-work.adoc | 2 +-
...hould-i-invoke-my-pojos-or-spring-services.adoc | 4 +-
...kage-applications-using-camel-and-activemq.adoc | 4 +-
...the-camel-cxf-endpoint-from-osgi-platform-.adoc | 2 +-
...-avoid-sending-some-or-all-message-headers.adoc | 8 +-
...e-a-static-camel-converter-method-in-scala.adoc | 2 +-
...http-protocol-headers-in-the-camel-message.adoc | 2 +-
...end-the-same-message-to-multiple-endpoints.adoc | 2 +-
...-without-touching-the-spring-configuration.adoc | 2 +-
.../pages/faq/how-to-use-a-dynamic-uri-in-to.adoc | 2 +-
...-extra-camel-componets-in-servicemix-camel.adoc | 2 +
...-1x-context-xml-from-apache-camel-web-site.adoc | 2 +-
...f-i-use-servicemix-when-should-i-use-camel.adoc | 4 +-
.../modules/ROOT/pages/faq/is-camel-an-esb.adoc | 2 +-
.../ROOT/pages/faq/is-camel-ioc-friendly.adoc | 8 +-
.../modules/ROOT/pages/faq/is-there-an-ide.adoc | 2 +-
...when-adding-and-removing-routes-at-runtime.adoc | 2 +-
.../ROOT/pages/faq/running-camel-standalone.adoc | 2 +-
...-activemq-broker-or-in-another-application.adoc | 8 +-
.../ROOT/pages/faq/using-camel-core-testsjar.adoc | 2 +-
.../using-getin-or-getout-methods-on-exchange.adoc | 8 +-
.../ROOT/pages/faq/what-are-the-dependencies.adoc | 18 +-
.../modules/ROOT/pages/faq/what-is-a-router.adoc | 2 +-
.../modules/ROOT/pages/faq/what-is-camel.adoc | 4 +-
.../ROOT/pages/faq/what-is-the-license.adoc | 2 +-
.../ROOT/pages/faq/what-jars-do-i-need.adoc | 6 +-
.../pages/faq/what-platforms-are-supported.adoc | 2 +-
...se-when-or-otherwise-in-a-java-camel-route.adoc | 4 +-
.../faq/why-cant-i-use-sign-in-my-password.adoc | 4 +-
...o-many-noclassdeffoundexception-on-startup.adoc | 2 +-
...my-message-lose-its-headers-during-routing.adoc | 2 +-
...use-too-many-threads-with-producertemplate.adoc | 2 +-
...-does-ftp-component-not-download-any-files.adoc | 2 +-
.../why-does-maven-not-download-dependencies.adoc | 2 +-
...-file-consumer-use-the-camel-error-handler.adoc | 4 +-
...jms-route-only-consume-one-message-at-once.adoc | 4 +-
...ge-with-error-handler-not-work-as-expected.adoc | 2 +-
.../pages/faq/why-is-my-message-body-empty.adoc | 2 +-
...is-my-processor-not-showing-up-in-jconsole.adoc | 4 +-
...-the-exception-null-when-i-use-onexception.adoc | 2 +-
.../modules/ROOT/pages/faq/why-the-name-camel.adoc | 2 +-
.../pages/faq/why-use-multiple-camelcontext.adoc | 2 +-
.../modules/ROOT/pages/file-language.adoc | 18 +-
.../user-manual/modules/ROOT/pages/filter-eip.adoc | 10 +-
.../modules/ROOT/pages/fluent-builders.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/from-eip.adoc | 6 +-
.../modules/ROOT/pages/getting-started.adoc | 8 +-
.../modules/ROOT/pages/graceful-shutdown.adoc | 28 +-
.../user-manual/modules/ROOT/pages/groovy-dsl.adoc | 16 +-
.../modules/ROOT/pages/guaranteed-delivery.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/guice.adoc | 10 +-
.../modules/ROOT/pages/header-language.adoc | 8 +-
.../modules/ROOT/pages/health-check.adoc | 6 +-
.../modules/ROOT/pages/hiding-middleware.adoc | 2 +
.../modules/ROOT/pages/http-session-handling.adoc | 18 +-
.../modules/ROOT/pages/http-session.adoc | 16 +-
.../modules/ROOT/pages/hystrix-eip.adoc | 10 +-
.../ROOT/pages/hystrixConfiguration-eip.adoc | 2 +-
.../modules/ROOT/pages/idempotentConsumer-eip.adoc | 4 +-
.../user-manual/modules/ROOT/pages/inOnly-eip.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/inOut-eip.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/index.adoc | 10 +-
docs/user-manual/modules/ROOT/pages/injector.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/intercept.adoc | 92 +-
.../inversion-of-control-with-smart-defaults.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/irc-room.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/java-dsl.adoc | 14 +-
docs/user-manual/modules/ROOT/pages/jmx.adoc | 64 +-
docs/user-manual/modules/ROOT/pages/jndi.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/json.adoc | 44 +-
docs/user-manual/modules/ROOT/pages/karaf.adoc | 54 +-
docs/user-manual/modules/ROOT/pages/languages.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/lifecycle.adoc | 10 +-
.../modules/ROOT/pages/loadBalance-eip.adoc | 14 +-
docs/user-manual/modules/ROOT/pages/log-eip.adoc | 18 +-
docs/user-manual/modules/ROOT/pages/loop-eip.adoc | 16 +-
.../modules/ROOT/pages/mailing-lists.adoc | 4 +-
.../modules/ROOT/pages/marshal-eip.adoc | 6 +-
.../modules/ROOT/pages/message-bus.adoc | 4 +-
.../modules/ROOT/pages/message-channel.adoc | 6 +-
.../modules/ROOT/pages/message-endpoint.adoc | 6 +-
.../modules/ROOT/pages/message-router.adoc | 6 +-
.../modules/ROOT/pages/message-translator.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/message.adoc | 2 +-
.../modules/ROOT/pages/multicast-eip.adoc | 8 +-
.../modules/ROOT/pages/onFallback-eip.adoc | 2 +-
.../modules/ROOT/pages/oncompletion.adoc | 18 +-
.../modules/ROOT/pages/otherwise-eip.adoc | 6 +-
.../modules/ROOT/pages/pipeline-eip.adoc | 6 +-
.../modules/ROOT/pages/point-to-point-channel.adoc | 4 +-
.../modules/ROOT/pages/pojo-consuming.adoc | 3 +-
.../modules/ROOT/pages/pojo-producing.adoc | 6 +-
.../modules/ROOT/pages/pollEnrich-eip.adoc | 18 +-
docs/user-manual/modules/ROOT/pages/predicate.adoc | 12 +-
.../modules/ROOT/pages/process-eip.adoc | 16 +-
docs/user-manual/modules/ROOT/pages/processor.adoc | 12 +-
.../modules/ROOT/pages/producertemplate.adoc | 6 +-
.../ROOT/pages/publish-subscribe-channel.adoc | 4 +-
.../user-manual/modules/ROOT/pages/random-eip.adoc | 2 +-
.../modules/ROOT/pages/recipientList-eip.adoc | 40 +-
.../modules/ROOT/pages/ref-language.adoc | 8 +-
docs/user-manual/modules/ROOT/pages/registry.adoc | 2 +-
.../modules/ROOT/pages/release-guide.adoc | 8 +-
.../modules/ROOT/pages/removeHeader-eip.adoc | 6 +-
.../modules/ROOT/pages/removeHeaders-eip.adoc | 4 +-
.../modules/ROOT/pages/removeProperties-eip.adoc | 6 +-
.../modules/ROOT/pages/removeProperty-eip.adoc | 6 +-
.../modules/ROOT/pages/requestReply-eip.adoc | 4 +-
.../modules/ROOT/pages/resequence-eip.adoc | 18 +-
docs/user-manual/modules/ROOT/pages/rest-dsl.adoc | 46 +-
.../modules/ROOT/pages/return-address.adoc | 2 +-
.../modules/ROOT/pages/rollback-eip.adoc | 18 +-
.../modules/ROOT/pages/roundRobin-eip.adoc | 6 +-
.../modules/ROOT/pages/route-builder.adoc | 4 +-
.../modules/ROOT/pages/route-policy.adoc | 20 +-
docs/user-manual/modules/ROOT/pages/routes.adoc | 10 +-
.../modules/ROOT/pages/routingSlip-eip.adoc | 16 +-
docs/user-manual/modules/ROOT/pages/saga-eip.adoc | 26 +-
.../user-manual/modules/ROOT/pages/sample-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/scala-dsl.adoc | 8 +-
.../user-manual/modules/ROOT/pages/script-eip.adoc | 8 +-
.../modules/ROOT/pages/scripting-languages.adoc | 16 +-
docs/user-manual/modules/ROOT/pages/security.adoc | 10 +-
.../modules/ROOT/pages/service-registry.adoc | 6 +-
.../modules/ROOT/pages/serviceCall-eip.adoc | 30 +-
.../modules/ROOT/pages/servicepool.adoc | 10 +-
.../modules/ROOT/pages/servlet-tomcat-example.adoc | 12 +-
.../modules/ROOT/pages/setBody-eip.adoc | 6 +-
.../modules/ROOT/pages/setHeader-eip.adoc | 6 +-
.../modules/ROOT/pages/setOutHeader-eip.adoc | 6 +-
.../modules/ROOT/pages/setProperty-eip.adoc | 6 +-
.../modules/ROOT/pages/simple-language.adoc | 44 +-
docs/user-manual/modules/ROOT/pages/sort-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/split-eip.adoc | 50 +-
.../modules/ROOT/pages/spring-example.adoc | 2 +-
.../modules/ROOT/pages/spring-remoting.adoc | 2 +-
.../modules/ROOT/pages/spring-testing.adoc | 24 +-
.../modules/ROOT/pages/spring-xml-extensions.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/spring.adoc | 28 +-
docs/user-manual/modules/ROOT/pages/step-eip.adoc | 8 +-
.../user-manual/modules/ROOT/pages/sticky-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/stop-eip.adoc | 2 +-
.../modules/ROOT/pages/stream-caching.adoc | 28 +-
.../modules/ROOT/pages/stream-config-eip.adoc | 2 +-
docs/user-manual/modules/ROOT/pages/support.adoc | 12 +-
docs/user-manual/modules/ROOT/pages/team.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/testing.adoc | 22 +-
.../modules/ROOT/pages/threading-model.adoc | 22 +-
.../modules/ROOT/pages/threads-eip.adoc | 6 +-
.../modules/ROOT/pages/throttle-eip.adoc | 10 +-
docs/user-manual/modules/ROOT/pages/to-eip.adoc | 8 +-
docs/user-manual/modules/ROOT/pages/toD-eip.adoc | 13 +-
.../modules/ROOT/pages/tokenize-language.adoc | 4 +-
docs/user-manual/modules/ROOT/pages/topic-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/tracer.adoc | 211 +---
.../modules/ROOT/pages/transactional-client.adoc | 20 +-
.../ROOT/pages/transactionerrorhandler.adoc | 12 +-
.../modules/ROOT/pages/transform-eip.adoc | 4 +-
.../modules/ROOT/pages/transformer.adoc | 16 +-
docs/user-manual/modules/ROOT/pages/transport.adoc | 6 +-
.../modules/ROOT/pages/try-catch-finally.adoc | 14 +-
.../modules/ROOT/pages/type-converter.adoc | 22 +-
.../modules/ROOT/pages/unmarshal-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/uris.adoc | 2 +-
.../modules/ROOT/pages/user-stories.adoc | 6 +-
.../pages/using-osgi-blueprint-with-camel.adoc | 6 +-
.../ROOT/pages/using-propertyplaceholder.adoc | 64 +-
.../modules/ROOT/pages/uuidgenerator.adoc | 12 +-
.../modules/ROOT/pages/validate-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/validator.adoc | 16 +-
.../modules/ROOT/pages/weighted-eip.adoc | 6 +-
docs/user-manual/modules/ROOT/pages/when-eip.adoc | 6 +-
.../modules/ROOT/pages/wireTap-eip.adoc | 22 +-
.../modules/ROOT/pages/writing-components.adoc | 14 +-
.../modules/ROOT/pages/xml-configuration.adoc | 4 +-
.../modules/ROOT/pages/xml-reference.adoc | 16 +-
examples/README.adoc | 6 +-
.../camel/example/NumberAggregationStrategy.java | 1 +
.../camel/example/cafe/CafeRouteBuilder.java | 1 +
.../org/apache/camel/example/cafe/OrderItem.java | 1 +
.../cafe/stuff/CafeAggregationStrategy.java | 1 +
.../camel/example/cafe/CafeRouteBuilderTest.java | 1 +
.../camel/example/cafe/test/TestDrinkRouter.java | 1 +
.../apache/camel/example/cafe/test/TestWaiter.java | 1 +
.../camel/example/cafe/CafeRouteBuilder.java | 1 +
.../org/apache/camel/example/cafe/Customer.java | 3 +
.../org/apache/camel/example/cafe/OrderItem.java | 1 +
.../cafe/stuff/CafeAggregationStrategy.java | 1 +
.../camel/example/cafe/CafeRouteBuilderTest.java | 1 +
.../camel/example/cafe/CafeRouteSpringTest.java | 3 +
.../camel/example/cafe/test/TestDrinkRouter.java | 1 +
.../apache/camel/example/cafe/test/TestWaiter.java | 1 +
.../camel/example/cdi/aws/s3/Application.java | 6 +-
.../camel/example/cdi/cassandraql/Application.java | 4 +-
.../camel/example/cdi/kubernetes/Application.java | 3 +-
.../camel/example/cdi/metrics/Application.java | 5 +-
.../camel/example/cdi/properties/Application.java | 3 +-
.../example/cdi/rest/servlet/Application.java | 4 +-
.../cdi/rest/servlet/CdiRestServletTest.java | 3 +-
.../apache/camel/example/cdi/test/Application.java | 6 +-
.../camel/example/cdi/test/CustomContextTest.java | 4 +-
.../reportincident/ReportIncidentRoutes.java | 1 +
examples/camel-example-cxf-proxy/pom.xml | 2 +-
.../camel/example/cxf/ws/HelloWorldImpl.java | 1 +
.../camel/example/cxf/ws/UserPasswordCallback.java | 1 +
.../camel/example/cxf/httptojms/JmsBroker.java | 1 +
.../example/cxf/jaxrs/CamelRouterBuilder.java | 2 +
.../camel/example/cxf/jaxrs/JAXRSClient.java | 1 +
.../camel/example/cxf/jaxrs/resources/Book.java | 1 +
.../example/cxf/jaxrs/resources/BookStoreImpl.java | 4 +-
.../example/cxf/provider/GreeterProvider.java | 1 +
.../example/cxf/jaxrs/JAXRSClientServerTest.java | 1 +
.../readme.adoc | 14 +-
.../camel-example-fhir-spring-boot/readme.adoc | 14 +-
.../org/apache/camel/example/fhir/Application.java | 4 +-
examples/camel-example-google-pubsub/README.adoc | 10 +-
examples/camel-example-grpc-kubernetes/README.adoc | 10 +-
examples/camel-example-hystrix/client/pom.xml | 2 +-
examples/camel-example-hystrix/service1/pom.xml | 2 +-
examples/camel-example-java8/readme.adoc | 4 +-
.../apache/camel/example/jdbc/RecordProcessor.java | 1 +
examples/camel-example-jira/README.adoc | 6 +-
.../apache/camel/example/jmx/MyRouteBuilder.java | 1 +
.../org/apache/camel/example/jmx/SimpleBean.java | 1 +
.../org/apache/camel/example/model/Report.java | 1 +
.../camel/loanbroker/CreditScoreProcessor.java | 1 +
.../org/apache/camel/loanbroker/bank/Bank.java | 2 +
.../apache/camel/loanbroker/bank/BankQuote.java | 1 +
.../camel/loanbroker/credit/CreditAgency.java | 2 +
.../camel/loanbroker/CreditAgencyProcessor.java | 1 +
.../apache/camel/loanbroker/LoanBrokerRoute.java | 1 +
.../apache/camel/loanbroker/ReplyProcessor.java | 1 +
.../camel/loanbroker/bank/BankProcessor.java | 1 +
examples/camel-example-main-artemis/readme.adoc | 6 +-
.../src/main/resources/application.properties | 3 +
examples/camel-example-main-tiny/readme.adoc | 6 +-
.../src/main/resources/application.properties | 3 +
examples/camel-example-main/readme.adoc | 8 +-
.../src/main/resources/application.properties | 7 +
.../example/management/ManagementExampleTest.java | 1 +
.../readme.adoc | 6 +-
.../camel/example/netty/cdi/NettyHttpRoute.java | 4 +-
examples/camel-example-opentracing/client/pom.xml | 2 +-
.../main/java/sample/camel/ClientApplication.java | 4 +-
.../src/main/java/sample/camel/ClientRoute.java | 3 +
.../camel-example-opentracing/service1/pom.xml | 2 +-
.../camel-example-opentracing/service2/pom.xml | 2 +-
.../camel/example/pojo/CamelContextTest.java | 1 +
.../readme.adoc | 6 +-
.../camel-example-reactive-streams/readme.adoc | 4 +-
examples/camel-example-rest-producer/pom.xml | 4 +-
examples/camel-example-rest-producer/readme.adoc | 10 +-
.../camel-example-spring-boot-activemq/readme.adoc | 8 +-
.../camel-example-spring-boot-amqp/readme.adoc | 8 +-
.../readme.adoc | 4 +-
.../camel-example-spring-boot-geocoder/README.adoc | 8 +-
.../camel-example-spring-boot-grpc/README.adoc | 8 +-
.../readme.adoc | 8 +-
.../README.adoc | 8 +-
.../camel-example-spring-boot-master/readme.adoc | 4 +-
.../camel-example-spring-boot-pojo/README.adoc | 8 +-
.../README.adoc | 10 +-
.../README.adoc | 12 +-
.../consumer/pom.xml | 2 +-
.../apache/camel/example/ServiceApplication.java | 2 +
.../readme.adoc | 4 +-
examples/camel-example-spring-boot-xml/readme.adoc | 10 +-
examples/camel-example-spring-boot/readme.adoc | 14 +-
.../README.adoc | 12 +-
.../apache/camel/example/ServiceApplication.java | 2 +
.../README.adoc | 12 +-
.../apache/camel/example/ServiceApplication.java | 1 +
.../org/apache/camel/example/server/Treble.java | 1 +
.../apache/camel/example/pulsar/server/Treble.java | 1 +
.../camel/example/server/IncrementRoute.java | 1 +
.../camel/example/spring/MyRouteBuilder.java | 1 +
.../apache/camel/example/cdi/UserRouteBuilder.java | 5 +-
examples/camel-example-telegram/README.adoc | 6 +-
.../example/telegram/usage/GetUpdatesUsage.java | 1 +
.../example/telegram/usage/LiveLocationUsage.java | 1 +
.../example/telegram/usage/SendMessageUsage.java | 1 +
.../example/telegram/usage/SendVenueUsage.java | 1 +
.../example/transformer/demo/OrderProcessor.java | 1 +
.../readme.adoc | 8 +-
examples/camel-example-webhook/readme.adoc | 8 +-
examples/camel-example-zipkin/README.md | 4 +-
examples/camel-example-zipkin/client/pom.xml | 2 +-
.../main/java/sample/camel/ClientApplication.java | 4 +-
.../src/main/java/sample/camel/ClientRoute.java | 3 +
examples/camel-example-zipkin/service1/pom.xml | 2 +-
parent/pom.xml | 76 +-
.../commands/AbstractLocalCamelController.java | 20 +
.../camel/commands/AbstractRouteCommand.java | 1 +
.../camel/karaf/commands/ContextInflight.java | 1 +
.../apache/camel/karaf/commands/EndpointList.java | 1 +
.../apache/camel/karaf/commands/EndpointStats.java | 1 +
.../apache/camel/karaf/commands/RestApiDoc.java | 1 +
.../camel/karaf/commands/RestRegistryList.java | 1 +
.../org/apache/camel/karaf/commands/RestShow.java | 1 +
.../org/apache/camel/karaf/commands/RouteInfo.java | 1 +
.../org/apache/camel/karaf/commands/RouteList.java | 1 +
.../org/apache/camel/karaf/commands/RouteShow.java | 1 +
.../commands/completers/CamelContextCompleter.java | 1 +
.../karaf/commands/completers/RouteCompleter.java | 1 +
.../karaf/features/src/main/resources/features.xml | 20 +-
.../spring-boot/components-starter/README.adoc | 1 -
.../components-starter/camel-boon-starter/pom.xml | 53 -
.../BoonDataFormatAutoConfiguration.java | 128 ---
.../springboot/BoonDataFormatConfiguration.java | 79 --
.../src/main/resources/META-INF/LICENSE.txt | 203 ----
.../src/main/resources/META-INF/NOTICE.txt | 11 -
.../additional-spring-configuration-metadata.json | 10 -
.../src/main/resources/META-INF/spring.factories | 18 -
.../src/main/resources/META-INF/spring.provides | 17 -
.../springboot/EhcacheComponentConfiguration.java | 13 +-
.../customizer/CacheConfigurationCustomizer.java | 2 +-
.../FhirJsonDataFormatConfiguration.java | 18 +-
.../springboot/FhirXmlDataFormatConfiguration.java | 18 +-
.../components-starter/camel-hdfs-starter/pom.xml | 61 ++
.../springboot/HdfsComponentAutoConfiguration.java | 128 +++
.../springboot/HdfsComponentConfiguration.java | 80 ++
.../src/main/resources/META-INF/LICENSE.txt | 0
.../src/main/resources/META-INF/NOTICE.txt | 0
.../src/main/resources/META-INF/spring.factories | 19 +
.../src/main/resources/META-INF/spring.provides | 17 +
.../components-starter/camel-hdfs2-starter/pom.xml | 61 --
.../springboot/HdfsComponentAutoConfiguration.java | 128 ---
.../springboot/HdfsComponentConfiguration.java | 80 --
.../src/main/resources/META-INF/LICENSE.txt | 203 ----
.../src/main/resources/META-INF/NOTICE.txt | 11 -
.../additional-spring-configuration-metadata.json | 10 -
.../src/main/resources/META-INF/spring.factories | 18 -
.../src/main/resources/META-INF/spring.provides | 17 -
.../components-starter/camel-http-starter/pom.xml | 61 ++
.../springboot/HttpComponentAutoConfiguration.java | 128 +++
.../springboot/HttpComponentConfiguration.java | 309 ++++++
.../src/main/resources/META-INF/LICENSE.txt | 0
.../src/main/resources/META-INF/NOTICE.txt | 0
.../src/main/resources/META-INF/spring.factories | 19 +
.../src/main/resources/META-INF/spring.provides | 17 +
.../components-starter/camel-http4-starter/pom.xml | 61 --
.../springboot/HttpComponentAutoConfiguration.java | 128 ---
.../springboot/HttpComponentConfiguration.java | 309 ------
.../src/main/resources/META-INF/LICENSE.txt | 203 ----
.../src/main/resources/META-INF/NOTICE.txt | 11 -
.../additional-spring-configuration-metadata.json | 10 -
.../src/main/resources/META-INF/spring.factories | 18 -
.../src/main/resources/META-INF/spring.provides | 17 -
.../JettyHttpComponentConfiguration9.java | 41 +-
.../MiloServerComponentConfiguration.java | 11 +-
.../camel-mongodb-starter/pom.xml | 53 +
.../MongoDbComponentAutoConfiguration.java | 128 +++
.../springboot/MongoDbComponentConfiguration.java | 81 ++
.../src/main/resources/META-INF/LICENSE.txt | 0
.../src/main/resources/META-INF/NOTICE.txt | 0
.../src/main/resources/META-INF/spring.factories | 19 +
.../src/main/resources/META-INF/spring.provides | 17 +
.../camel-mongodb3-starter/pom.xml | 53 -
.../MongoDbComponentAutoConfiguration.java | 128 ---
.../springboot/MongoDbComponentConfiguration.java | 81 --
.../src/main/resources/META-INF/LICENSE.txt | 203 ----
.../src/main/resources/META-INF/NOTICE.txt | 11 -
.../additional-spring-configuration-metadata.json | 10 -
.../src/main/resources/META-INF/spring.factories | 18 -
.../src/main/resources/META-INF/spring.provides | 17 -
.../camel-netty4-http-starter/pom.xml | 2 +-
.../QuickfixjComponentConfiguration.java | 12 +-
.../springboot/RabbitMQComponentConfiguration.java | 19 +-
.../camel-ribbon-starter/pom.xml | 2 +-
.../camel-rxjava-starter/pom.xml | 53 +
.../src/main/resources/META-INF/LICENSE.txt | 0
.../src/main/resources/META-INF/NOTICE.txt | 0
.../src/main/resources/META-INF/spring.provides | 17 +
.../camel-rxjava2-starter/pom.xml | 53 -
.../src/main/resources/META-INF/spring.provides | 17 -
.../SalesforceComponentConfiguration.java | 39 +-
.../springboot/SalesforceComponentTest.java | 52 +
.../springboot/XQueryComponentConfiguration.java | 11 +-
.../WebsocketComponentConfiguration.java | 11 +-
.../springboot/XsltComponentConfiguration.java | 10 +-
.../springboot/XStreamDataFormatConfiguration.java | 28 +-
platforms/spring-boot/components-starter/pom.xml | 9 +-
.../camel-spring-boot-dependencies/pom.xml | 75 +-
tests/camel-blueprint-cxf-test/pom.xml | 2 +-
.../test/cxf/blueprint/CxfConsumerSoap12Test.java | 1 +
.../test/cxf/blueprint/CxfConsumerWSRMTest.java | 1 +
.../camel/test/cxf/blueprint/MyProcessor.java | 1 +
.../java/org/apache/camel/itest/cdi/Constants.java | 30 -
.../java/org/apache/camel/itest/cdi/MyRoutes.java | 53 +
.../org/apache/camel/itest/cdi/RoutesContextA.java | 61 --
.../org/apache/camel/itest/cdi/RoutesContextB.java | 61 --
.../org/apache/camel/itest/cdi/RoutesContextC.java | 60 --
.../org/apache/camel/itest/cdi/RoutesContextD.java | 60 --
.../org/apache/camel/itest/cdi/CamelCdiTest.java | 104 +-
.../apache/camel/itest/karaf/CamelBoonTest.java | 33 -
.../apache/camel/itest/karaf/CamelHdfs2Test.java | 33 -
.../apache/camel/itest/karaf/CamelHdfsTest.java | 33 +
.../apache/camel/itest/karaf/CamelHttp4Test.java | 33 -
.../apache/camel/itest/karaf/CamelHttpTest.java | 33 +
.../camel/itest/karaf/CamelMongodb3Test.java | 34 -
.../apache/camel/itest/karaf/CamelMongodbTest.java | 34 +
.../camel/itest/springboot/CamelBoonTest.java | 48 -
.../camel/itest/springboot/CamelHdfs2Test.java | 48 -
.../camel/itest/springboot/CamelHdfsTest.java | 48 +
.../camel/itest/springboot/CamelHttp4Test.java | 48 -
.../camel/itest/springboot/CamelHttpTest.java | 48 +
.../camel/itest/springboot/CamelMongodb3Test.java | 50 -
.../camel/itest/springboot/CamelMongodbTest.java | 50 +
tests/camel-itest/pom.xml | 2 +-
.../apache/camel/itest/async/HttpAsyncDslTest.java | 12 +-
.../apache/camel/itest/async/MyAsyncEndpoint.java | 3 +
.../apache/camel/itest/async/MyAsyncProducer.java | 2 +
.../customerrelations/CustomerServicesTest.java | 1 +
...ipientListInterceptSendToEndpointIssueTest.java | 2 +
.../itest/ftp/FtpInitialConnectTimeoutTest.java | 7 +-
.../org/apache/camel/itest/ftp/FtpXQueryTest.java | 2 +
.../camel/itest/greeter/FilePrepareRequest.java | 1 +
.../camel/itest/greeter/JmsPrepareRequest.java | 1 +
.../camel/itest/greeter/JmsPrepareResponse.java | 1 +
.../apache/camel/itest/greeter/PrepareRequest.java | 1 +
.../camel/itest/greeter/PrepareResponse.java | 1 +
.../apache/camel/itest/http/Http4RouteTest.java | 6 +-
.../itest/idempotent/JdbcIdempotentRepository.java | 7 +
.../org/apache/camel/itest/issues/BaseClass.java | 1 +
.../itest/issues/BeanCallDerivedClassTest.java | 1 +
.../camel/itest/issues/DummyInterceptor.java | 1 +
.../itest/issues/IsUseAdviceWithJUnit4Test.java | 2 +-
.../camel/itest/issues/JettyHttpFileCacheTest.java | 1 +
.../jetty/JettyBridgeHostHeaderIssueTest.java | 12 +-
.../camel/itest/jetty/JettyRestRedirectTest.java | 4 +-
.../jetty/JettySimulateFailoverRoundRobinTest.java | 1 +
.../itest/jetty/SetExchangePatternProcessor.java | 1 +
.../camel/itest/jetty/SetResponseProcessor.java | 1 +
.../JMSTransactionIsTransactedRedeliveredTest.java | 3 +
.../apache/camel/itest/jms/JmsResequencerTest.java | 1 +
.../quartz/FtpCronScheduledRoutePolicyTest.java | 2 +
.../camel/itest/security/CXFMessageProcessor.java | 1 +
.../itest/security/KeystorePasswordCallback.java | 1 +
.../itest/security/MyAuthenticationAdapter.java | 1 +
.../apache/camel/itest/security/MyProcessor.java | 1 +
.../org/apache/camel/itest/tx/JmsToHttpRoute.java | 1 +
...ndNoTransactionErrorHandlerConfiguredRoute.java | 1 +
.../itest/tx/JmsToHttpWithOnExceptionRoute.java | 1 +
.../camel/itest/tx/JmsToHttpWithRollbackRoute.java | 1 +
.../camel/tests/partialclasspath/RouteTest.java | 1 +
tests/camel-performance/pom.xml | 2 +-
.../camel/tests/typeconverterscan/RouteTest.java | 1 +
.../tools/apt/EndpointAnnotationProcessor.java | 1 +
.../maven/bom/generator/BomGeneratorMojo.java | 8 -
.../camel/maven/ApiComponentGeneratorMojoTest.java | 1 +
.../maven/FileApiMethodGeneratorMojoTest.java | 1 +
.../java/org/apache/camel/maven/EmbeddedMojo.java | 1 +
.../main/java/org/apache/camel/maven/RunMojo.java | 3 +
.../apache/camel/maven/packaging/MvelHelper.java | 5 +-
.../packaging/PackageArchetypeCatalogMojo.java | 1 +
.../maven/packaging/PackageComponentMojo.java | 1 +
.../maven/packaging/PackageDataFormatMojo.java | 1 +
.../camel/maven/packaging/PackageJaxbMojo.java | 1 +
.../camel/maven/packaging/PackageLanguageMojo.java | 1 +
.../camel/maven/packaging/PackageLegalMojo.java | 1 +
.../camel/maven/packaging/PackageModelMojo.java | 1 +
.../camel/maven/packaging/PackageOtherMojo.java | 1 +
.../maven/packaging/PrepareCatalogKarafMojo.java | 1 +
.../camel/maven/packaging/PrepareCatalogMojo.java | 1 +
.../packaging/PrepareCatalogSpringBootMojo.java | 1 +
.../maven/packaging/PrepareComponentMojo.java | 1 +
.../camel/maven/packaging/PrepareExampleMojo.java | 1 +
.../maven/packaging/PrepareParentPomMojo.java | 1 +
.../camel/maven/packaging/PrepareReadmeMojo.java | 1 +
.../maven/packaging/PrepareReleasePomMojo.java | 1 +
.../maven/packaging/PrepareUserGuideMojo.java | 1 +
.../packaging/SpringBootAutoConfigurationMojo.java | 15 +-
.../maven/packaging/SpringBootStarterMojo.java | 2 +-
.../camel/maven/packaging/UpdateReadmeMojo.java | 6 +-
.../maven/packaging/ValidateComponentMojo.java | 1 +
.../generics/OwbGenericArrayTypeImpl.java | 1 +
.../generics/OwbParametrizedTypeImpl.java | 1 +
.../packaging/generics/OwbWildcardTypeImpl.java | 1 +
.../camel/maven/packaging/srcgen/GenericType.java | 1 +
.../camel/maven/packaging/srcgen/JavaClass.java | 1 +
.../src/main/resources/endpoint-options.mvel | 4 +-
.../spring-boot-auto-configure-options.mvel | 4 +-
.../camel/maven/packaging/MvelHelperTest.java | 15 +-
5860 files changed, 50118 insertions(+), 47697 deletions(-)
create mode 100644 archetypes/camel-archetype-component/src/main/resources/archetype-resources/src/main/java/EventBusHelper.java
delete mode 100644 components/camel-aws-xray/src/main/java/org/apache/camel/component/aws/xray/decorators/http/Http4SegmentDecorator.java
delete mode 100644 components/camel-boon/pom.xml
delete mode 100644 components/camel-boon/src/main/docs/boon-dataformat.adoc
delete mode 100644 components/camel-boon/src/main/java/org/apache/camel/component/boon/BoonDataFormat.java
delete mode 100644 components/camel-boon/src/test/java/org/apache/camel/component/boon/BoonConcurrentTest.java
delete mode 100644 components/camel-boon/src/test/java/org/apache/camel/component/boon/BoonDataFormatTest.java
delete mode 100644 components/camel-boon/src/test/java/org/apache/camel/component/boon/TestPojo.java
delete mode 100644 components/camel-boon/src/test/resources/log4j2.properties
delete mode 100644 components/camel-cdi/src/main/java/org/apache/camel/cdi/ContextName.java
delete mode 100644 components/camel-cdi/src/main/java/org/apache/camel/cdi/ContextNames.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/EndpointInjectWrongContextRoute.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/FirstCamelContextProduceTemplateBean.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/FirstCamelContextPropertyInjectBean.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextEndpointInjectRoute.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextProduceTemplateBean.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/bean/SecondCamelContextPropertyInjectBean.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/InjectedTypeConverterMultipleContextsTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiCamelContextProducerTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiCamelContextReusedRouteCdi20Test.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiCamelContextTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextConsumerTemplateTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEndpointInjectTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEventEndpointTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextEventNotifierTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextProduceTemplateTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextProducerTemplateTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/MultiContextPropertyInjectTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/QualifiedMultiCamelContextTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuilderWithContextNameTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuildersWithContextNamesTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/RouteBuildersWithSameContextNameTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/UnsatisfiedContextForEndpointInjectTest.java
delete mode 100644 components/camel-cdi/src/test/java/org/apache/camel/cdi/test/XmlMultiContextsTest.java
create mode 100644 components/camel-cmis/src/main/java/org/apache/camel/component/cmis/CamelCMISActions.java
create mode 100644 components/camel-cmis/src/main/java/org/apache/camel/component/cmis/exception/CamelCmisException.java
create mode 100644 components/camel-cmis/src/main/java/org/apache/camel/component/cmis/exception/CamelCmisObjectNotFoundException.java
create mode 100644 components/camel-cmis/src/main/java/org/apache/camel/component/cmis/exception/CamelCmisUnauthorizedException.java
delete mode 100644 components/camel-ejb/pom.xml
delete mode 100644 components/camel-ejb/src/main/docs/ejb-component.adoc
delete mode 100644 components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbComponent.java
delete mode 100644 components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbEndpoint.java
delete mode 100644 components/camel-ejb/src/main/java/org/apache/camel/component/ejb/EjbRegistryBean.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/GreaterCamelBeanTest.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/GreaterCamelEjbPropertiesTest.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/GreaterCamelEjbTest.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/GreaterImpl.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/GreaterLocal.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/GreaterTest.java
delete mode 100644 components/camel-ejb/src/test/java/org/apache/camel/component/ejb/SpringGreaterCamelEjbTest.java
delete mode 100644 components/camel-ejb/src/test/resources/META-INF/ejb-jar.xml
delete mode 100644 components/camel-ejb/src/test/resources/log4j2.properties
delete mode 100644 components/camel-ejb/src/test/resources/org/apache/camel/component/ejb/SpringGreaterCamelEjbTest.xml
create mode 100644 components/camel-hdfs/pom.xml
create mode 100644 components/camel-hdfs/src/main/docs/hdfs-component.adoc
create mode 100644 components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs2/HdfsComponent.java
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsCompressionCodec.java (100%)
create mode 100644 components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs2/HdfsConfiguration.java
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsConstants.java (100%)
create mode 100644 components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java
create mode 100644 components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs2/HdfsEndpoint.java
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsFileSystemType.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsFileType.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsHeader.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsInfo.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsInfoFactory.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsInputStream.java (100%)
create mode 100644 components/camel-hdfs/src/main/java/org/apache/camel/component/hdfs2/HdfsOsgiHelper.java
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsOutputStream.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsProducer.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/HdfsWritableFactories.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/Holder.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/WritableType.java (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/main/java/org/apache/camel/component/hdfs2/osgi/HdfsActivator.java (100%)
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/FromFileToHdfsTest.java
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/HdfsConsumerTest.java
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/HdfsProducerConsumerTest.java
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/HdfsProducerSplitTest.java
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/HdfsProducerTest.java
rename components/{camel-hdfs2 => camel-hdfs}/src/test/java/org/apache/camel/component/hdfs2/HdfsTestSupport.java (100%)
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/integration/HdfsAppendTest.java
create mode 100644 components/camel-hdfs/src/test/java/org/apache/camel/component/hdfs2/integration/HdfsProducerConsumerIntegrationTest.java
rename components/{camel-hdfs2 => camel-hdfs}/src/test/resources/hdfs-default.xml (100%)
rename components/{camel-hdfs2 => camel-hdfs}/src/test/resources/hdfs-test.xml (100%)
create mode 100644 components/camel-hdfs/src/test/resources/log4j2.properties
delete mode 100644 components/camel-hdfs2/pom.xml
delete mode 100644 components/camel-hdfs2/src/main/docs/hdfs2-component.adoc
delete mode 100644 components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsComponent.java
delete mode 100644 components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConfiguration.java
delete mode 100644 components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsConsumer.java
delete mode 100644 components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsEndpoint.java
delete mode 100644 components/camel-hdfs2/src/main/java/org/apache/camel/component/hdfs2/HdfsOsgiHelper.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/FromFileToHdfsTest.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/HdfsConsumerTest.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/HdfsProducerConsumerTest.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/HdfsProducerSplitTest.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/HdfsProducerTest.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/integration/HdfsAppendTest.java
delete mode 100644 components/camel-hdfs2/src/test/java/org/apache/camel/component/hdfs2/integration/HdfsProducerConsumerIntegrationTest.java
delete mode 100644 components/camel-hdfs2/src/test/resources/log4j2.properties
create mode 100644 components/camel-http/pom.xml
create mode 100644 components/camel-http/src/main/docs/http-component.adoc
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/HttpClientConfigurer.java (100%)
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpComponent.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpComponentVerifierExtension.java
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/HttpConstants.java (100%)
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpDeleteWithBodyMethod.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/HttpEntityConverter.java (100%)
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpMethods.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpMethodsConverter.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpPollingConsumer.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpProducer.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/HttpSendDynamicAware.java
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/HttpUtil.java (100%)
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/NoopCookieStore.java (100%)
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/PreemptiveAuthInterceptor.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/cloud/Http4ServiceExpression.java
create mode 100644 components/camel-http/src/main/java/org/apache/camel/component/http4/cloud/Http4ServiceExpressionFactory.java
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/helper/HttpMethodHelper.java (100%)
rename components/{camel-http4 => camel-http}/src/main/java/org/apache/camel/component/http4/package.html (100%)
rename components/{camel-http4 => camel-http}/src/test/data/logo.jpeg (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/BaseHttpTest.java (100%)
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/BaseHttpsTest.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/CamelComponentVerifierExtensionTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/CamelComponentVerifierTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/GoogleUrlRewrite.java (100%)
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/HeaderFilteringTest.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpBodyTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpBodyWithOtherProtocalNameTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpBridgeEndpointTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/HttpCamelHeadersNotCopiedTest.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpCamelHeadersTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpCharsetTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpClientConfigurerTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpConcurrentTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/HttpCustomComponentNameTest.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpDefaultPortNumberTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpDisableStreamCacheTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpInvalidConfigurationTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpInvalidHttpClientConfigurationTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpMethodsTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpNoCamelHeaderTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpNoConnectionRedeliveryTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpNoConnectionTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpPathTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpPollingConsumerTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerConnectionCloseTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerContentLengthTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeWithSemiColomnTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerExplicitConnectionCloseTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerSelectMethodTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerSessionTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerTwoHeadersWithSameKeyTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerTwoParametersWithSameKeyTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProducerWithSystemPropertiesTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpQueryTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/HttpSNIHostNameTest.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpSendDynamicAwareTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/HttpServerTestSupport.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpsGetTest.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/HttpsServerTestSupport.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpsSslContextParametersGetTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpsTwoComponentsSslContextParametersGetTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/ManagedHttpProducerPoolStatsTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/UrlRewriteTest.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/handler/AuthenticationValidationHandler.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/handler/BasicRawQueryValidationHandler.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/handler/BasicValidationHandler.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/handler/DelayValidationHandler.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/handler/DrinkValidationHandler.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/handler/HeaderValidationHandler.java
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/handler/ProxyAuthenticationValidationHandler.java
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/handler/SessionReflectionHandler.java (100%)
rename components/{camel-http4 => camel-http}/src/test/java/org/apache/camel/component/http4/helper/HttpHelperTest.java (100%)
create mode 100644 components/camel-http/src/test/java/org/apache/camel/component/http4/rest/RestCamelComponentVerifierTest.java
rename components/{camel-http4 => camel-http}/src/test/resources/localhost.ks (100%)
rename components/{camel-http4 => camel-http}/src/test/resources/log4j2.properties (100%)
rename components/{camel-http4 => camel-http}/src/test/resources/org/apache/camel/component/http4/CamelHttp4Context.xml (100%)
delete mode 100644 components/camel-http4/pom.xml
delete mode 100644 components/camel-http4/src/main/docs/http4-component.adoc
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/BasicAuthenticationHttpClientConfigurer.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/CompositeHttpConfigurer.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponent.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpComponentVerifierExtension.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpDeleteWithBodyMethod.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpMethods.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpMethodsConverter.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpPollingConsumer.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpSendDynamicAware.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/PreemptiveAuthInterceptor.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/ProxyHttpClientConfigurer.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/cloud/Http4ServiceExpression.java
delete mode 100644 components/camel-http4/src/main/java/org/apache/camel/component/http4/cloud/Http4ServiceExpressionFactory.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/AdviceAndInterceptHttp4IssueTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/CamelComponentVerifierExtensionTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/CamelComponentVerifierTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpAuthenticationTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpBodyTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpBodyWithOtherProtocalNameTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpBridgeEndpointTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCamelHeadersTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCharsetTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpClientConfigurerTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpCompressionTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpConcurrentTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpDefaultPortNumberTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpDisableStreamCacheTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointOptionsNotChangeComponentTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpEndpointURLTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpInvalidConfigurationTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpInvalidHttpClientConfigurationTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpMethodsTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpNoCamelHeaderTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpNoConnectionRedeliveryTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpNoConnectionTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpPathTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpPollingConsumerTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerConnectionCloseTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentLengthTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerContentTypeWithSemiColomnTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerExplicitConnectionCloseTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerSelectMethodTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerSessionTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerTwoHeadersWithSameKeyTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerTwoParametersWithSameKeyTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProducerWithSystemPropertiesTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpProxyServerTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpQueryTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpRedirectTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpReferenceParameterTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSOTimeoutTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpSendDynamicAwareTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpThrowExceptionOnFailureTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpWithHttpUriHeaderTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsAuthenticationTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsGetTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsSslContextParametersGetTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoComponentsSslContextParametersGetTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/HttpsTwoDifferentSslContextParametersGetTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/ManagedHttpProducerPoolStatsTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/UrlRewriteTest.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/handler/AuthenticationValidationHandler.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/handler/BasicRawQueryValidationHandler.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/handler/BasicValidationHandler.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/handler/DelayValidationHandler.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/handler/HeaderValidationHandler.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/handler/ProxyAuthenticationValidationHandler.java
delete mode 100644 components/camel-http4/src/test/java/org/apache/camel/component/http4/rest/RestCamelComponentVerifierTest.java
create mode 100644 components/camel-jms/src/test/java/org/apache/camel/component/jms/issues/JmsReplyToComponentEndlessLoopTest.java
create mode 100644 components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionClauseTask.java
create mode 100644 components/camel-mock/src/main/java/org/apache/camel/component/mock/AssertionTask.java
create mode 100644 components/camel-mongodb/pom.xml
create mode 100644 components/camel-mongodb/src/main/docs/mongodb-component.adoc
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/CamelMongoDbException.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoAbstractConsumerThread.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbChangeStreamsConsumer.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbChangeStreamsThread.java (100%)
create mode 100644 components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb3/MongoDbComponent.java
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbConstants.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbConsumerType.java (100%)
create mode 100644 components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb3/MongoDbEndpoint.java
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbOperation.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbOutputType.java (100%)
create mode 100644 components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb3/MongoDbProducer.java
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbTailTrackingConfig.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbTailTrackingManager.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbTailableCursorConsumer.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/MongoDbTailingThread.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/converters/MongoDbBasicConverters.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/converters/MongoDbFallbackConverter.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/main/java/org/apache/camel/component/mongodb3/processor/idempotent/MongoDbIdempotentRepository.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/test/java/org/apache/camel/component/mongodb3/AbstractMongoDbTest.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/test/java/org/apache/camel/component/mongodb3/EmbedMongoConfiguration.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/test/java/org/apache/camel/component/mongodb3/MongoBasicOperationsConfiguration.java (100%)
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbAggregateOperationTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbBigDecimalConverterTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbBulkWriteOperationTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbChangeStreamsConsumerTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbConnectionBeansTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbConversionsTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbDynamicityTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbExceptionHandlingTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbFindOperationTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbHeaderHandlingTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbIndexTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbOperationsTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbOutputTypeTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbReadPreferenceOptionTest.java
rename components/{camel-mongodb3 => camel-mongodb}/src/test/java/org/apache/camel/component/mongodb3/MongoDbSpringDslOperationsTest.java (100%)
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbStopEndpointTest.java
create mode 100644 components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb3/MongoDbTailableCursorConsumerTest.java
rename components/{camel-mongodb3 => camel-mongodb}/src/test/java/org/apache/camel/component/mongodb3/processor/idempotent/MongoDbIdempotentRepositoryTest.java (100%)
rename components/{camel-mongodb3 => camel-mongodb}/src/test/resources/log4j2.properties (100%)
copy components/{camel-mongodb-gridfs => camel-mongodb}/src/test/resources/mongodb.test.properties (100%)
create mode 100644 components/camel-mongodb/src/test/resources/org/apache/camel/component/mongodb3/mongoBasicOperationsTest.xml
delete mode 100644 components/camel-mongodb3/pom.xml
delete mode 100644 components/camel-mongodb3/src/main/docs/mongodb3-component.adoc
delete mode 100644 components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/MongoDbComponent.java
delete mode 100644 components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/MongoDbEndpoint.java
delete mode 100644 components/camel-mongodb3/src/main/java/org/apache/camel/component/mongodb3/MongoDbProducer.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbAggregateOperationTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbBigDecimalConverterTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbBulkWriteOperationTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbChangeStreamsConsumerTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbConnectionBeansTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbConversionsTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbDynamicityTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbExceptionHandlingTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbFindOperationTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbHeaderHandlingTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbIndexTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbOperationsTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbOutputTypeTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbReadPreferenceOptionTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbStopEndpointTest.java
delete mode 100644 components/camel-mongodb3/src/test/java/org/apache/camel/component/mongodb3/MongoDbTailableCursorConsumerTest.java
delete mode 100644 components/camel-mongodb3/src/test/resources/mongodb.test.properties
delete mode 100644 components/camel-mongodb3/src/test/resources/org/apache/camel/component/mongodb3/mongoBasicOperationsTest.xml
delete mode 100644 components/camel-opentracing/src/main/java/org/apache/camel/opentracing/decorators/Http4SpanDecorator.java
create mode 100644 components/camel-rxjava/pom.xml
create mode 100644 components/camel-rxjava/src/main/docs/rxjava.adoc
rename components/{camel-rxjava2 => camel-rxjava}/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaCamelProcessor.java (100%)
create mode 100644 components/camel-rxjava/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsConstants.java
create mode 100644 components/camel-rxjava/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsService.java
rename components/{camel-rxjava2 => camel-rxjava}/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceFactory.java (100%)
rename components/{camel-rxjava2/src/main/resources/META-INF/services/org/apache/camel/reactive-streams/rxjava2 => camel-rxjava/src/main/resources/META-INF/services/org/apache/camel/reactive-streams/rxjava} (100%)
rename components/{camel-rxjava2 => camel-rxjava}/src/test/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceBackpressureTest.java (100%)
rename components/{camel-rxjava2 => camel-rxjava}/src/test/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceEventTypeTest.java (100%)
rename components/{camel-rxjava2 => camel-rxjava}/src/test/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceSubscriberTest.java (100%)
create mode 100644 components/camel-rxjava/src/test/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceTest.java
rename components/{camel-rxjava2 => camel-rxjava}/src/test/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceTestSupport.java (100%)
rename components/{camel-rxjava2 => camel-rxjava}/src/test/java/org/apache/camel/component/rxjava2/engine/suport/TestSubscriber.java (100%)
create mode 100644 components/camel-rxjava/src/test/resources/log4j2.properties
delete mode 100644 components/camel-rxjava2/pom.xml
delete mode 100644 components/camel-rxjava2/src/main/docs/rxjava2.adoc
delete mode 100644 components/camel-rxjava2/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsConstants.java
delete mode 100644 components/camel-rxjava2/src/main/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsService.java
delete mode 100644 components/camel-rxjava2/src/test/java/org/apache/camel/component/rxjava2/engine/RxJavaStreamsServiceTest.java
delete mode 100644 components/camel-rxjava2/src/test/resources/log4j2.properties
delete mode 100644 components/camel-spring/src/test/java/org/apache/camel/spring/example/MyCamel1Consumer.java
delete mode 100644 components/camel-spring/src/test/java/org/apache/camel/spring/example/MyCamel2Consumer.java
delete mode 100644 components/camel-spring/src/test/java/org/apache/camel/spring/example/MyCamel2RecipientList.java
delete mode 100644 components/camel-spring/src/test/java/org/apache/camel/spring/example/PojoDualCamelContextConsumerTest.java
delete mode 100644 components/camel-spring/src/test/resources/org/apache/camel/spring/example/pojoDualCamelContextConsumer.xml
delete mode 100644 components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsAndSkipTest.java
delete mode 100644 components/camel-test-spring/src/test/java/org/apache/camel/test/spring/CamelSpringRunnerMockEndpointsTest.java
create mode 100644 components/camel-test/src/test/java/org/apache/camel/test/patterns/GetMockEndpointTest.java
delete mode 100644 core/camel-api/src/main/java/org/apache/camel/InvokeOnHeader.java
delete mode 100644 core/camel-api/src/main/java/org/apache/camel/InvokeOnHeaders.java
create mode 100644 core/camel-api/src/main/java/org/apache/camel/NamedRoute.java
delete mode 100644 core/camel-api/src/main/java/org/apache/camel/OutHeaders.java
create mode 100644 core/camel-api/src/main/java/org/apache/camel/spi/InvokeOnHeader.java
create mode 100644 core/camel-api/src/main/java/org/apache/camel/spi/InvokeOnHeaders.java
delete mode 100644 core/camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWork.java
delete mode 100644 core/camel-api/src/main/java/org/apache/camel/spi/SubUnitOfWorkCallback.java
create mode 100644 core/camel-api/src/main/java/org/apache/camel/spi/Tracer.java
delete mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultSubUnitOfWork.java
create mode 100644 core/camel-base/src/main/java/org/apache/camel/impl/engine/DefaultTracer.java
create mode 100644 core/camel-core/src/main/java/org/apache/camel/model/AdviceWithDefinition.java
delete mode 100644 core/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java
delete mode 100644 core/camel-core/src/main/java/org/apache/camel/reifier/dataformat/BoonDataFormatReifier.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithErrorHandlerRemoveTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInterceptFromRemoveTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInterceptRemoveTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithInterceptSendToEndpointRemoveTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/AdviceWithOnCompletionRemoveTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/MulticastMixOriginalMessageBodyAndEnrichedHeadersClaimCheckTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/MulticastMixOriginalMessageBodyAndEnrichedHeadersTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/issues/MulticastMixOriginalMessageBodyAndEnrichedHeadersUseOriginalBodyTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/language/TokenXMLPairNamespaceSplitChildNamespaceTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregateDiscardOnFailureTest.java
delete mode 100644 core/camel-core/src/test/java/org/apache/camel/processor/intercept/DualInterceptSimpleRouteTest.java
create mode 100644 core/camel-core/src/test/java/org/apache/camel/processor/intercept/InterceptSendToEndpointAfterTest.java
delete mode 100644 core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/EjbEndpointBuilderFactory.java
create mode 100644 core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedTracerMBean.java
create mode 100644 core/camel-management-impl/src/main/java/org/apache/camel/management/mbean/ManagedTracer.java
create mode 100644 core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedStartupFailedTest.java
create mode 100644 core/camel-management-impl/src/test/java/org/apache/camel/management/ManagedTracerTest.java
delete mode 100644 core/camel-support/src/main/java/org/apache/camel/converter/stream/OutputStreamBuilder.java
create mode 100644 core/camel-support/src/main/java/org/apache/camel/support/builder/OutputStreamBuilder.java
delete mode 100644 docs/components/modules/ROOT/pages/boon-dataformat.adoc
delete mode 100644 docs/components/modules/ROOT/pages/ejb-component.adoc
create mode 100644 docs/components/modules/ROOT/pages/hdfs-component.adoc
delete mode 100644 docs/components/modules/ROOT/pages/hdfs2-component.adoc
create mode 100644 docs/components/modules/ROOT/pages/http-component.adoc
delete mode 100644 docs/components/modules/ROOT/pages/http4-component.adoc
create mode 100644 docs/components/modules/ROOT/pages/mongodb-component.adoc
delete mode 100644 docs/components/modules/ROOT/pages/mongodb3-component.adoc
create mode 100644 docs/components/modules/ROOT/pages/rxjava.adoc
delete mode 100644 docs/components/modules/ROOT/pages/rxjava2.adoc
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/pom.xml
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/java/org/apache/camel/component/boon/springboot/BoonDataFormatAutoConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/java/org/apache/camel/component/boon/springboot/BoonDataFormatConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/resources/META-INF/LICENSE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/resources/META-INF/NOTICE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/resources/META-INF/spring.factories
delete mode 100644 platforms/spring-boot/components-starter/camel-boon-starter/src/main/resources/META-INF/spring.provides
create mode 100644 platforms/spring-boot/components-starter/camel-hdfs-starter/pom.xml
create mode 100644 platforms/spring-boot/components-starter/camel-hdfs-starter/src/main/java/org/apache/camel/component/hdfs2/springboot/HdfsComponentAutoConfiguration.java
create mode 100644 platforms/spring-boot/components-starter/camel-hdfs-starter/src/main/java/org/apache/camel/component/hdfs2/springboot/HdfsComponentConfiguration.java
rename platforms/spring-boot/components-starter/{camel-rxjava2-starter => camel-hdfs-starter}/src/main/resources/META-INF/LICENSE.txt (100%)
rename platforms/spring-boot/components-starter/{camel-rxjava2-starter => camel-hdfs-starter}/src/main/resources/META-INF/NOTICE.txt (100%)
create mode 100644 platforms/spring-boot/components-starter/camel-hdfs-starter/src/main/resources/META-INF/spring.factories
create mode 100644 platforms/spring-boot/components-starter/camel-hdfs-starter/src/main/resources/META-INF/spring.provides
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/pom.xml
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/java/org/apache/camel/component/hdfs2/springboot/HdfsComponentAutoConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/java/org/apache/camel/component/hdfs2/springboot/HdfsComponentConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/resources/META-INF/LICENSE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/resources/META-INF/NOTICE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/resources/META-INF/spring.factories
delete mode 100644 platforms/spring-boot/components-starter/camel-hdfs2-starter/src/main/resources/META-INF/spring.provides
create mode 100644 platforms/spring-boot/components-starter/camel-http-starter/pom.xml
create mode 100644 platforms/spring-boot/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentAutoConfiguration.java
create mode 100644 platforms/spring-boot/components-starter/camel-http-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java
copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-http-starter}/src/main/resources/META-INF/LICENSE.txt (100%)
copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-http-starter}/src/main/resources/META-INF/NOTICE.txt (100%)
create mode 100644 platforms/spring-boot/components-starter/camel-http-starter/src/main/resources/META-INF/spring.factories
create mode 100644 platforms/spring-boot/components-starter/camel-http-starter/src/main/resources/META-INF/spring.provides
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/pom.xml
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentAutoConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/java/org/apache/camel/component/http4/springboot/HttpComponentConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/resources/META-INF/LICENSE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/resources/META-INF/NOTICE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/resources/META-INF/spring.factories
delete mode 100644 platforms/spring-boot/components-starter/camel-http4-starter/src/main/resources/META-INF/spring.provides
create mode 100644 platforms/spring-boot/components-starter/camel-mongodb-starter/pom.xml
create mode 100644 platforms/spring-boot/components-starter/camel-mongodb-starter/src/main/java/org/apache/camel/component/mongodb3/springboot/MongoDbComponentAutoConfiguration.java
create mode 100644 platforms/spring-boot/components-starter/camel-mongodb-starter/src/main/java/org/apache/camel/component/mongodb3/springboot/MongoDbComponentConfiguration.java
copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-mongodb-starter}/src/main/resources/META-INF/LICENSE.txt (100%)
copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-mongodb-starter}/src/main/resources/META-INF/NOTICE.txt (100%)
create mode 100644 platforms/spring-boot/components-starter/camel-mongodb-starter/src/main/resources/META-INF/spring.factories
create mode 100644 platforms/spring-boot/components-starter/camel-mongodb-starter/src/main/resources/META-INF/spring.provides
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/pom.xml
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/java/org/apache/camel/component/mongodb3/springboot/MongoDbComponentAutoConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/java/org/apache/camel/component/mongodb3/springboot/MongoDbComponentConfiguration.java
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/resources/META-INF/LICENSE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/resources/META-INF/NOTICE.txt
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/resources/META-INF/spring.factories
delete mode 100644 platforms/spring-boot/components-starter/camel-mongodb3-starter/src/main/resources/META-INF/spring.provides
create mode 100644 platforms/spring-boot/components-starter/camel-rxjava-starter/pom.xml
copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-rxjava-starter}/src/main/resources/META-INF/LICENSE.txt (100%)
copy {tooling/maven/camel-package-maven-plugin => platforms/spring-boot/components-starter/camel-rxjava-starter}/src/main/resources/META-INF/NOTICE.txt (100%)
create mode 100644 platforms/spring-boot/components-starter/camel-rxjava-starter/src/main/resources/META-INF/spring.provides
delete mode 100644 platforms/spring-boot/components-starter/camel-rxjava2-starter/pom.xml
delete mode 100644 platforms/spring-boot/components-starter/camel-rxjava2-starter/src/main/resources/META-INF/spring.provides
create mode 100644 platforms/spring-boot/components-starter/camel-salesforce-starter/src/test/java/org/apache/camel/component/salesforce/springboot/SalesforceComponentTest.java
delete mode 100644 tests/camel-itest-cdi/src/main/java/org/apache/camel/itest/cdi/Constants.java
create mode 100644 tests/camel-itest-cdi/src/main/java/org/apache/camel/itest/cdi/MyRoutes.java
delete mode 100644 tests/camel-itest-cdi/src/main/java/org/apache/camel/itest/cdi/RoutesContextA.java
delete mode 100644 tests/camel-itest-cdi/src/main/java/org/apache/camel/itest/cdi/RoutesContextB.java
delete mode 100644 tests/camel-itest-cdi/src/main/java/org/apache/camel/itest/cdi/RoutesContextC.java
delete mode 100644 tests/camel-itest-cdi/src/main/java/org/apache/camel/itest/cdi/RoutesContextD.java
delete mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelBoonTest.java
delete mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHdfs2Test.java
create mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHdfsTest.java
delete mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHttp4Test.java
create mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelHttpTest.java
delete mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelMongodb3Test.java
create mode 100644 tests/camel-itest-karaf/src/test/java/org/apache/camel/itest/karaf/CamelMongodbTest.java
delete mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelBoonTest.java
delete mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelHdfs2Test.java
create mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelHdfsTest.java
delete mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelHttp4Test.java
create mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelHttpTest.java
delete mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelMongodb3Test.java
create mode 100644 tests/camel-itest-spring-boot/src/test/java/org/apache/camel/itest/springboot/CamelMongodbTest.java
[camel] 04/09: CAMEL-13342: Implemented a first version of a
proof-of-concept for camel-cdi-test in junit 5
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit cdefa5ca0c3dc1bc040dd89ab23a70da5189ace4
Author: aldettinger <al...@gmail.com>
AuthorDate: Wed Jun 26 19:10:13 2019 +0200
CAMEL-13342: Implemented a first version of a proof-of-concept for camel-cdi-test in junit 5
---
components/camel-test-cdi/pom.xml | 15 +++++
.../apache/camel/test/cdi/junit5/AnyLiteral.java | 30 +++++++++
.../test/cdi/junit5/CamelCdiJUnit5Extension.java | 71 ++++++++++++++++++++
.../cdi/junit5/CamelCdiJUnit5ExtensionStore.java | 52 +++++++++++++++
.../apache/camel/test/cdi/junit5/CamelCdiTest.java | 31 +++++++++
.../apache/camel/test/cdi/junit5/FilterTest.java | 75 ++++++++++++++++++++++
6 files changed, 274 insertions(+)
diff --git a/components/camel-test-cdi/pom.xml b/components/camel-test-cdi/pom.xml
index 7cc65da..bb4db09 100644
--- a/components/camel-test-cdi/pom.xml
+++ b/components/camel-test-cdi/pom.xml
@@ -57,6 +57,21 @@
<artifactId>weld-se-core</artifactId>
<version>${weld3-version}</version>
</dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <version>5.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <version>5.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ <version>5.4.2</version>
+ </dependency>
<!-- test dependencies -->
<dependency>
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/AnyLiteral.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/AnyLiteral.java
new file mode 100644
index 0000000..b71ecd3
--- /dev/null
+++ b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/AnyLiteral.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.cdi.junit5;
+
+import javax.enterprise.inject.Any;
+import javax.enterprise.util.AnnotationLiteral;
+
+final class AnyLiteral extends AnnotationLiteral<Any> implements Any {
+
+ static final Any INSTANCE = new AnyLiteral();
+
+ private static final long serialVersionUID = 1L;
+
+ private AnyLiteral() {
+ }
+}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiJUnit5Extension.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiJUnit5Extension.java
new file mode 100644
index 0000000..0da533c
--- /dev/null
+++ b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiJUnit5Extension.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.cdi.junit5;
+
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+
+import org.apache.camel.cdi.CdiCamelExtension;
+import org.jboss.weld.config.ConfigurationKey;
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.TestInstanceFactory;
+import org.junit.jupiter.api.extension.TestInstanceFactoryContext;
+import org.junit.jupiter.api.extension.TestInstantiationException;
+
+import static org.apache.camel.test.cdi.junit5.CamelCdiJUnit5ExtensionStore.getWeldBuilderFromStore;
+import static org.apache.camel.test.cdi.junit5.CamelCdiJUnit5ExtensionStore.getWeldContainerFromStore;
+import static org.apache.camel.test.cdi.junit5.CamelCdiJUnit5ExtensionStore.putWeldBuilderInStore;
+import static org.apache.camel.test.cdi.junit5.CamelCdiJUnit5ExtensionStore.putWeldContainerInStore;
+
+public class CamelCdiJUnit5Extension implements BeforeAllCallback, AfterEachCallback, TestInstanceFactory {
+
+ @Override
+ public void beforeAll(ExtensionContext eCtx) throws Exception {
+ Class<?> testClass = eCtx.getRequiredTestClass();
+ Weld weld = new Weld()
+ // TODO: check parallel execution
+ .containerId("camel-context-cdi").property(ConfigurationKey.RELAXED_CONSTRUCTION.get(), true).property(Weld.SHUTDOWN_HOOK_SYSTEM_PROPERTY, false).enableDiscovery()
+ .beanClasses(testClass.getDeclaredClasses()).addBeanClass(testClass).addExtension(new CdiCamelExtension());
+
+ putWeldBuilderInStore(eCtx, weld);
+ }
+
+ @Override
+ public void afterEach(ExtensionContext eCtx) throws Exception {
+ WeldContainer container = getWeldContainerFromStore(eCtx, eCtx.getRequiredTestInstance());
+ container.shutdown();
+ }
+
+ @Override
+ public Object createTestInstance(TestInstanceFactoryContext factoryContext, ExtensionContext eCtx) throws TestInstantiationException {
+ WeldContainer container = getWeldBuilderFromStore(eCtx).initialize();
+ BeanManager manager = container.getBeanManager();
+ Set<Bean<?>> beans = manager.getBeans(eCtx.getRequiredTestClass(), AnyLiteral.INSTANCE);
+ Bean<?> bean = beans.iterator().next();
+ Object testInstance = manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean));
+
+ putWeldContainerInStore(eCtx, testInstance, container);
+
+ return testInstance;
+ }
+}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiJUnit5ExtensionStore.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiJUnit5ExtensionStore.java
new file mode 100644
index 0000000..9f0c8ad
--- /dev/null
+++ b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiJUnit5ExtensionStore.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.cdi.junit5;
+
+import org.jboss.weld.environment.se.Weld;
+import org.jboss.weld.environment.se.WeldContainer;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+
+public final class CamelCdiJUnit5ExtensionStore {
+
+ private static final String TEST_CLASS_WELD_BUILDER_STORE_KEY = "TEST_CLASS_WELD_BUILDER_STORE_KEY";
+ private static final String TEST_INSTANCE_WELD_CONTAINER_STORE_KEY = "TEST_INSTANCE_WELD_CONTAINER_STORE_KEY";
+
+ private CamelCdiJUnit5ExtensionStore() {
+ }
+
+ static void putWeldBuilderInStore(ExtensionContext eCtx, Weld weld) {
+ Namespace ns = Namespace.create(CamelCdiJUnit5ExtensionStore.class, eCtx.getRequiredTestClass());
+ eCtx.getStore(ns).put(TEST_CLASS_WELD_BUILDER_STORE_KEY, weld);
+ }
+
+ static Weld getWeldBuilderFromStore(ExtensionContext eCtx) {
+ Namespace ns = Namespace.create(CamelCdiJUnit5ExtensionStore.class, eCtx.getRequiredTestClass());
+ return eCtx.getStore(ns).get(TEST_CLASS_WELD_BUILDER_STORE_KEY, Weld.class);
+ }
+
+ static void putWeldContainerInStore(ExtensionContext eCtx, Object testInstance, WeldContainer container) {
+ Namespace ns = Namespace.create(CamelCdiJUnit5ExtensionStore.class, testInstance);
+ eCtx.getStore(ns).put(TEST_INSTANCE_WELD_CONTAINER_STORE_KEY, container);
+ }
+
+ static WeldContainer getWeldContainerFromStore(ExtensionContext eCtx, Object testInstance) {
+ Namespace ns = Namespace.create(CamelCdiJUnit5ExtensionStore.class, testInstance);
+ return eCtx.getStore(ns).get(TEST_INSTANCE_WELD_CONTAINER_STORE_KEY, WeldContainer.class);
+ }
+
+}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiTest.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiTest.java
new file mode 100644
index 0000000..b1f3fee
--- /dev/null
+++ b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/junit5/CamelCdiTest.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.cdi.junit5;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@ExtendWith(CamelCdiJUnit5Extension.class)
+public @interface CamelCdiTest {
+
+}
diff --git a/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/junit5/FilterTest.java b/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/junit5/FilterTest.java
new file mode 100644
index 0000000..e7fe510
--- /dev/null
+++ b/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/junit5/FilterTest.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.cdi.junit5;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInfo;
+
+@CamelCdiTest
+public class FilterTest {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint resultEndpoint;
+
+ @Produce("direct:start")
+ protected ProducerTemplate template;
+
+ @BeforeEach
+ public void before() {
+ resultEndpoint.reset();
+ }
+
+ @Test
+ public void testSendMatchingMessage() throws Exception {
+ String expectedBody = "<matched/>";
+
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+
+ template.sendBodyAndHeader(expectedBody, "foo", "bar");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testSendNotMatchingMessage() throws Exception {
+ resultEndpoint.expectedMessageCount(0);
+
+ template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testInfoParamShouldBeResolved(TestInfo testInfo) throws Exception {
+ Assertions.assertNotNull(testInfo);
+ }
+
+ static class ContextConfig extends RouteBuilder {
+
+ @Override
+ public void configure() {
+ from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
+ }
+ }
+}
[camel] 02/09: CAMEL-13342: Setup SimpleMockTest with junit
extension and parameter resolver
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 637c0d60717708d492f93e2eb4f93113490d88b8
Author: aldettinger <al...@gmail.com>
AuthorDate: Wed Jun 5 16:50:19 2019 +0200
CAMEL-13342: Setup SimpleMockTest with junit extension and parameter resolver
---
components/camel-test/pom.xml | 12 +++-
.../org/apache/camel/test/junit5/CamelTest.java | 4 ++
.../camel/test/junit5/CamelTestExtension.java | 82 ++++++++++++++++++++++
.../test/junit5/CamelTestParameterResolver.java | 39 ++++++++++
.../apache/camel/test/junit5/SimpleMockTest.java | 53 ++++++++++++++
5 files changed, 189 insertions(+), 1 deletion(-)
diff --git a/components/camel-test/pom.xml b/components/camel-test/pom.xml
index c3485f4..ebe758a 100644
--- a/components/camel-test/pom.xml
+++ b/components/camel-test/pom.xml
@@ -57,7 +57,17 @@
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
- <version>5.5.0-M1</version>
+ <version>5.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-engine</artifactId>
+ <version>5.4.2</version>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.vintage</groupId>
+ <artifactId>junit-vintage-engine</artifactId>
+ <version>5.4.2</version>
</dependency>
<dependency>
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java
index 05ed250..2732d2a 100644
--- a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java
@@ -21,8 +21,12 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
+import org.junit.jupiter.api.extension.ExtendWith;
+
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
+@ExtendWith(CamelTestExtension.class)
+@ExtendWith(CamelTestParameterResolver.class)
public @interface CamelTest {
}
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestExtension.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestExtension.java
new file mode 100644
index 0000000..3e26d80
--- /dev/null
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestExtension.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5;
+
+import java.lang.reflect.Method;
+import java.util.Optional;
+
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
+import org.apache.camel.model.ModelCamelContext;
+import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+import org.junit.platform.commons.util.ReflectionUtils;
+
+public class CamelTestExtension implements BeforeEachCallback, AfterEachCallback {
+
+ private ModelCamelContext context;
+ private ProducerTemplate producerTemplate;
+ private ConsumerTemplate consumerTemplate;
+
+ @Override
+ public void afterEach(ExtensionContext eCtx) throws Exception {
+ if (producerTemplate != null) {
+ producerTemplate.stop();
+ }
+ if (consumerTemplate != null) {
+ consumerTemplate.stop();
+ }
+ if (context != null) {
+ context.stop();
+ }
+ }
+
+ @Override
+ public void beforeEach(ExtensionContext eCtx) throws Exception {
+ context = new DefaultCamelContext();
+
+ Optional<Method> method = ReflectionUtils.findMethod(eCtx.getTestClass().get(), "createRouteBuilder");
+
+ Object ret = ReflectionUtils.invokeMethod(method.get(), eCtx.getTestInstance().get());
+ if (ret instanceof RoutesBuilder) {
+ ((RoutesBuilder)ret).addRoutesToCamelContext(context);
+ }
+ producerTemplate = context.createProducerTemplate();
+ consumerTemplate = context.createConsumerTemplate();
+
+ DefaultCamelBeanPostProcessor processor = new DefaultCamelBeanPostProcessor(context);
+ processor.postProcessBeforeInitialization(this, getClass().getName());
+ processor.postProcessAfterInitialization(this, getClass().getName());
+
+ context.start();
+ producerTemplate.start();
+ consumerTemplate.start();
+
+ // @TODO: Do we really use a namespace with key
+ // CamelTestParameterResolver.class
+ // We may reuse those values in test also
+ eCtx.getStore(Namespace.create(CamelTestParameterResolver.class)).put(ModelCamelContext.class, context);
+ eCtx.getStore(Namespace.create(CamelTestParameterResolver.class)).put(ProducerTemplate.class, producerTemplate);
+ eCtx.getStore(Namespace.create(CamelTestParameterResolver.class)).put(ConsumerTemplate.class, consumerTemplate);
+ }
+
+}
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java
new file mode 100644
index 0000000..ce58940
--- /dev/null
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java
@@ -0,0 +1,39 @@
+package org.apache.camel.test.junit5;
+
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.model.ModelCamelContext;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+import org.junit.jupiter.api.extension.ParameterContext;
+import org.junit.jupiter.api.extension.ParameterResolutionException;
+import org.junit.jupiter.api.extension.ParameterResolver;
+
+// @TODO: Is it really the same treatment for all types ?
+// @TODO: Can't we get more than one object of type ProducerTemplate ? like threadTemplate ?
+public class CamelTestParameterResolver implements ParameterResolver {
+
+ @Override
+ public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
+ // @TODO: clearer is better
+ Class<?> paramClass = parameterContext.getParameter().getType();
+ return paramClass == ProducerTemplate.class || paramClass == ConsumerTemplate.class || paramClass == ModelCamelContext.class;
+ }
+
+ @Override
+ public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
+ final Class<?> paramClass = parameterContext.getParameter().getType();
+ if (paramClass == ProducerTemplate.class) {
+ // @TODO: Is it safe to use class as store keys
+ return extensionContext.getStore(Namespace.create(CamelTestParameterResolver.class)).get(ProducerTemplate.class);
+ } else if (paramClass == ConsumerTemplate.class) {
+ // @TODO: Is it safe to use class as store keys
+ return extensionContext.getStore(Namespace.create(CamelTestParameterResolver.class)).get(ConsumerTemplate.class);
+ } else if (paramClass == ModelCamelContext.class) {
+ // @TODO: Is it safe to use class as store keys
+ return extensionContext.getStore(Namespace.create(CamelTestParameterResolver.class)).get(ModelCamelContext.class);
+ }
+ final String msgFormat = "Test %s can't receive a parameter of type %s. Expecting Context, ProduderTempate or ConsumerTemplate}";
+ throw new ParameterResolutionException(String.format(msgFormat, extensionContext.getDisplayName(), paramClass.getName()));
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
new file mode 100644
index 0000000..33987ac
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5;
+
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.ModelCamelContext;
+import org.junit.jupiter.api.Test;
+
+@CamelTest
+public class SimpleMockTest {
+
+ @Test
+ public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
+ MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
+ mockResult.expectedBodiesReceived("Hello World");
+ template.sendBody("direct:start", "Hello World");
+ MockEndpoint.assertIsSatisfied(ctx);
+ }
+
+ /* Same test is shorter with junit4
+ @Test
+ public void testMock() throws Exception {
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ template.sendBody("direct:start", "Hello World");
+ assertMockEndpointsSatisfied();
+ }*/
+
+ protected RoutesBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").to("mock:result");
+ }
+ };
+ }
+}
[camel] 07/09: CAMEL-13342: Moved further the proof-of-concept for
camel-test-spring/CamelSpringTestSupport
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 15933f8438612eeefd3d276664c26f19e3658cd7
Author: aldettinger <al...@gmail.com>
AuthorDate: Tue Jul 16 18:04:00 2019 +0200
CAMEL-13342: Moved further the proof-of-concept for camel-test-spring/CamelSpringTestSupport
---
components/camel-csv/pom.xml | 12 +-
.../csv/CsvDataFormatCustomFactoryTest.java | 12 +-
.../CsvDataFormatCustomRecordConverterTest.java | 7 +-
.../csv/CsvDataFormatResourceFactoryTest.java | 12 +-
.../camel/dataformat/csv/CsvDataFormatTest.java | 16 +--
...svMarshalAutogenColumnsSpringQuoteModeTest.java | 6 +-
.../csv/CsvMarshalAutogenColumnsSpringTest.java | 6 +-
.../dataformat/csv/CsvMarshalCharsetTest.java | 5 +-
.../camel/dataformat/csv/CsvMarshalHeaderTest.java | 16 +--
...MarshalHeaderWithCustomMarshallFactoryTest.java | 16 +--
.../csv/CsvMarshalPipeDelimiterSpringTest.java | 6 +-
.../csv/CsvMarshalPipeDelimiterTest.java | 6 +-
.../camel/dataformat/csv/CsvMarshalTest.java | 6 +-
.../dataformat/csv/CsvRecordConvertersTest.java | 10 +-
.../camel/dataformat/csv/CsvRouteCharsetTest.java | 6 +-
.../apache/camel/dataformat/csv/CsvRouteTest.java | 29 +++--
.../csv/CsvUnmarshalMapLineSpringTest.java | 6 +-
.../csv/CsvUnmarshalPipeDelimiterSpringTest.java | 6 +-
.../csv/CsvUnmarshalPipeDelimiterTest.java | 6 +-
.../csv/CsvUnmarshalSkipFirstLineSpringTest.java | 6 +-
.../csv/CsvUnmarshalStreamSpringTest.java | 6 +-
.../dataformat/csv/CsvUnmarshalStreamTest.java | 6 +-
.../csv/CsvUnmarshalTabDelimiterSpringTest.java | 6 +-
.../csv/CsvUnmarshalTabDelimiterTest.java | 6 +-
.../camel/dataformat/csv/CsvUnmarshalTest.java | 5 +-
...CsvUnmarshalTwoCsvDataFormatConcurrentTest.java | 6 +-
.../spring/CamelSpringBootJUnit4ClassRunner.java | 33 -----
.../CamelSpringDelegatingTestContextLoader.java | 138 ---------------------
.../spring/CamelSpringTestContextLoader.java | 1 -
.../test/junit5/spring/CamelSpringTestSupport.java | 1 -
.../junit5/spring/RouteCoverageEventNotifier.java | 1 -
...nterceptSendToEndpointWithLoadbalancerTest.java | 4 +-
.../test/issues/AdviceWithOnCompletionTest.java | 4 +-
.../AdviceWithOnExceptionMultipleIssueTest.java | 4 +-
.../test/issues/MockEndpointsAndSkipTest.java | 4 +-
35 files changed, 146 insertions(+), 274 deletions(-)
diff --git a/components/camel-csv/pom.xml b/components/camel-csv/pom.xml
index 05f2a94..ffd4ece 100644
--- a/components/camel-csv/pom.xml
+++ b/components/camel-csv/pom.xml
@@ -55,6 +55,13 @@
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-spring</artifactId>
+ <exclusions>
+ <!-- proof that junit is no more needed once tests have been migrated -->
+ <exclusion>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </exclusion>
+ </exclusions>
<scope>test</scope>
</dependency>
<dependency>
@@ -73,8 +80,9 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-core</artifactId>
+ <version>2.1</version>
<scope>test</scope>
</dependency>
</dependencies>
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomFactoryTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomFactoryTest.java
index 89c29eb..733deea 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomFactoryTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomFactoryTest.java
@@ -20,9 +20,9 @@ import java.util.Arrays;
import java.util.List;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Assert;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CsvDataFormatCustomFactoryTest extends CamelSpringTestSupport {
@@ -38,9 +38,9 @@ public class CsvDataFormatCustomFactoryTest extends CamelSpringTestSupport {
String body = mock.getReceivedExchanges().get(0).getIn().getBody(String.class);
String[] lines = body.split("\r\n");
- Assert.assertEquals(2, lines.length);
- Assert.assertEquals("A1:B1:C1", lines[0].trim());
- Assert.assertEquals("A2:B2:C2", lines[1].trim());
+ Assertions.assertEquals(2, lines.length);
+ Assertions.assertEquals("A1:B1:C1", lines[0].trim());
+ Assertions.assertEquals("A2:B2:C2", lines[1].trim());
}
private List<List<String>> getData() {
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomRecordConverterTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomRecordConverterTest.java
index 5c80dde..3874828 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomRecordConverterTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatCustomRecordConverterTest.java
@@ -22,11 +22,14 @@ import java.util.stream.Stream;
import org.apache.camel.Message;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
import org.apache.camel.util.CastUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
/**
* Test cases for {@link CsvRecordConverter}.
*/
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatResourceFactoryTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatResourceFactoryTest.java
index c0cce86..0eea8f3 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatResourceFactoryTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatResourceFactoryTest.java
@@ -20,9 +20,9 @@ import java.util.Arrays;
import java.util.List;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Assert;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class CsvDataFormatResourceFactoryTest extends CamelSpringTestSupport {
@@ -38,9 +38,9 @@ public class CsvDataFormatResourceFactoryTest extends CamelSpringTestSupport {
String body = mock.getReceivedExchanges().get(0).getIn().getBody(String.class);
String[] lines = body.split("\r\n");
- Assert.assertEquals(2, lines.length);
- Assert.assertEquals("A1,B1,C1", lines[0].trim());
- Assert.assertEquals("A2,B2,C2", lines[1].trim());
+ Assertions.assertEquals(2, lines.length);
+ Assertions.assertEquals("A1,B1,C1", lines[0].trim());
+ Assertions.assertEquals("A2,B2,C2", lines[1].trim());
}
private List<List<String>> getData() {
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
index 3312a72..bf42048 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvDataFormatTest.java
@@ -19,14 +19,14 @@ package org.apache.camel.dataformat.csv;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVRecord;
import org.apache.commons.csv.QuoteMode;
-import org.junit.Test;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* This class tests the creation of the proper {@link org.apache.commons.csv.CSVFormat} based on the properties of
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringQuoteModeTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringQuoteModeTest.java
index 0207696..07d6486 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringQuoteModeTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringQuoteModeTest.java
@@ -23,10 +23,12 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Spring based integration test for the <code>CsvDataFormat</code> demonstrating the usage of
* the <tt>autogenColumns</tt>, <tt>configRef</tt> and <tt>strategyRef</tt> options.
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringTest.java
index e7f870a..de0000e 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalAutogenColumnsSpringTest.java
@@ -23,10 +23,12 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Spring based integration test for the <code>CsvDataFormat</code> demonstrating the usage of
* the <tt>autogenColumns</tt>, <tt>configRef</tt> and <tt>strategyRef</tt> options.
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalCharsetTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalCharsetTest.java
index f305173..2317398 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalCharsetTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalCharsetTest.java
@@ -22,9 +22,10 @@ import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.StringStartsWith.startsWith;
public class CsvMarshalCharsetTest extends CamelTestSupport {
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderTest.java
index a5a4e92..04d60c2 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.dataformat.csv;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Collections;
@@ -32,18 +33,19 @@ import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* <b>Camel</b> based test cases for {@link org.apache.camel.dataformat.csv.CsvDataFormat}.
*/
public class CsvMarshalHeaderTest extends CamelTestSupport {
- @Rule
- public TemporaryFolder folder = new TemporaryFolder();
+ @TempDir
+ public Path folder;
@Produce("direct:start")
private ProducerTemplate producerTemplate;
@@ -52,7 +54,7 @@ public class CsvMarshalHeaderTest extends CamelTestSupport {
@Override
protected void doPreSetup() throws Exception {
- outputFile = new File(folder.newFolder(), "output.csv");
+ outputFile = new File(folder.toFile(), "output.csv");
}
@Test
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderWithCustomMarshallFactoryTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderWithCustomMarshallFactoryTest.java
index dc30032..66963c2 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderWithCustomMarshallFactoryTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalHeaderWithCustomMarshallFactoryTest.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
+import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
@@ -36,20 +37,21 @@ import org.apache.camel.RoutesBuilder;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.support.ObjectHelper;
-import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.camel.test.junit5.CamelTestSupport;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* <b>Camel</b> based test cases for {@link CsvDataFormat}.
*/
public class CsvMarshalHeaderWithCustomMarshallFactoryTest extends CamelTestSupport {
- @Rule
- public TemporaryFolder folder = new TemporaryFolder();
+ @TempDir
+ public Path folder;
@Produce("direct:start")
private ProducerTemplate producerTemplate;
@@ -58,7 +60,7 @@ public class CsvMarshalHeaderWithCustomMarshallFactoryTest extends CamelTestSupp
@Override
protected void doPreSetup() throws Exception {
- outputFile = new File(folder.newFolder(), "output.csv");
+ outputFile = new File(folder.toFile(), "output.csv");
}
@Test
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterSpringTest.java
index 70204d8..449dd13 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterSpringTest.java
@@ -23,10 +23,12 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Spring based integration test for the <code>CsvDataFormat</code>
*/
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterTest.java
index 31f6015..5e75410 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalPipeDelimiterTest.java
@@ -24,8 +24,10 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class CsvMarshalPipeDelimiterTest extends CamelTestSupport {
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java
index 613bc49..f474d13 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvMarshalTest.java
@@ -23,8 +23,10 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
/**
* This class tests standard marshalling
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRecordConvertersTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRecordConvertersTest.java
index 8b1d052..e7d385e 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRecordConvertersTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRecordConvertersTest.java
@@ -23,11 +23,11 @@ import java.util.Map;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
/**
* This class tests the common {@link CsvRecordConverter} implementations of
@@ -36,7 +36,7 @@ import static org.junit.Assert.assertNotNull;
public class CsvRecordConvertersTest {
private CSVRecord record;
- @Before
+ @BeforeEach
public void setUp() throws Exception {
CSVFormat format = CSVFormat.DEFAULT.withHeader("A", "B", "C");
CSVParser parser = new CSVParser(new StringReader("1,2,3"), format);
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteCharsetTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteCharsetTest.java
index 488e0b0..99fcfee 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteCharsetTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteCharsetTest.java
@@ -21,8 +21,10 @@ import java.util.List;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class CsvRouteCharsetTest extends CamelTestSupport {
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteTest.java
index 84f7316..29d277f 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvRouteTest.java
@@ -25,11 +25,15 @@ import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public class CsvRouteTest extends CamelTestSupport {
private static final Logger LOG = LoggerFactory.getLogger(CsvRouteTest.class);
@@ -52,12 +56,12 @@ public class CsvRouteTest extends CamelTestSupport {
String text = in.getBody(String.class);
log.debug("Received " + text);
- assertNotNull("Should be able to convert received body to a string", text);
+ assertNotNull(text, "Should be able to convert received body to a string");
// order is not guaranteed with a Map (which was passed in before)
// so we need to check for both combinations
- assertTrue("Text body has wrong value.", "abc,123".equals(text.trim())
- || "123,abc".equals(text.trim()));
+ assertTrue("abc,123".equals(text.trim())
+ || "123,abc".equals(text.trim()), "Text body has wrong value.");
}
}
@@ -84,8 +88,7 @@ public class CsvRouteTest extends CamelTestSupport {
String text1 = in1.getBody(String.class);
log.debug("Received " + text1);
- assertTrue("First CSV body has wrong value",
- Pattern.matches("(abc,123)|(123,abc)", text1.trim()));
+ assertTrue(Pattern.matches("(abc,123)|(123,abc)", text1.trim()), "First CSV body has wrong value");
Message in2 = list.get(1).getIn();
String text2 = in2.getBody(String.class);
@@ -94,11 +97,9 @@ public class CsvRouteTest extends CamelTestSupport {
// fields should keep the same order from one call to the other
if (text1.trim().equals("abc,123")) {
- assertEquals("Second CSV body has wrong value",
- "def,456,789", text2.trim());
+ assertEquals("def,456,789", text2.trim(), "Second CSV body has wrong value");
} else {
- assertEquals("Second CSV body has wrong value",
- "456,def,789", text2.trim());
+ assertEquals("456,def,789", text2.trim(), "Second CSV body has wrong value");
}
}
@@ -125,15 +126,13 @@ public class CsvRouteTest extends CamelTestSupport {
String text1 = in1.getBody(String.class);
log.debug("Received " + text1);
- assertEquals("First CSV body has wrong value",
- "abc;;123", text1.trim());
+ assertEquals("abc;;123", text1.trim(), "First CSV body has wrong value");
Message in2 = list.get(1).getIn();
String text2 = in2.getBody(String.class);
log.debug("Received " + text2);
- assertEquals("Second CSV body has wrong value",
- "def;789;456", text2.trim());
+ assertEquals("def;789;456", text2.trim(), "Second CSV body has wrong value");
}
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalMapLineSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalMapLineSpringTest.java
index c917e9a..19e3f70 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalMapLineSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalMapLineSpringTest.java
@@ -21,10 +21,12 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Spring based test for the <code>CsvDataFormat</code> demonstrating the usage of
* the <tt>useMaps</tt> option.
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterSpringTest.java
index 1e3fe43..519e6a5 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterSpringTest.java
@@ -20,10 +20,12 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Spring based integration test for the <code>CsvDataFormat</code>
*/
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterTest.java
index 9d32149..33a4653 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalPipeDelimiterTest.java
@@ -21,8 +21,10 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Spring based integration test for the <code>CsvDataFormat</code>
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalSkipFirstLineSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalSkipFirstLineSpringTest.java
index 6cb9a32..bbbb8c7 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalSkipFirstLineSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalSkipFirstLineSpringTest.java
@@ -20,10 +20,12 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Spring based test for the <code>CsvDataFormat</code> demonstrating the usage of
* the <tt>skipFirstLine</tt> option.
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamSpringTest.java
index 05ee4e3..29fdd43 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamSpringTest.java
@@ -21,11 +21,13 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
public class CsvUnmarshalStreamSpringTest extends CamelSpringTestSupport {
private static final String CSV_SAMPLE = "A,B,C\r1,2,3\rone,two,three";
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamTest.java
index a18c806..f78ff20 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalStreamTest.java
@@ -25,8 +25,10 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* Spring based integration test for the <code>CsvDataFormat</code>
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterSpringTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterSpringTest.java
index 61de960..1e971fc 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterSpringTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterSpringTest.java
@@ -20,10 +20,12 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
public class CsvUnmarshalTabDelimiterSpringTest extends CamelSpringTestSupport {
@EndpointInject("mock:result")
private MockEndpoint result;
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterTest.java
index 3f848f6..4ff804f 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTabDelimiterTest.java
@@ -21,8 +21,10 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class CsvUnmarshalTabDelimiterTest extends CamelTestSupport {
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTest.java
index 63616cb..d099c64 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTest.java
@@ -26,10 +26,11 @@ import java.util.Map;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
import static org.apache.camel.dataformat.csv.TestUtils.asMap;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* This class tests standard unmarshalling
diff --git a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTwoCsvDataFormatConcurrentTest.java b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTwoCsvDataFormatConcurrentTest.java
index 044cd41..6f45b74 100644
--- a/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTwoCsvDataFormatConcurrentTest.java
+++ b/components/camel-csv/src/test/java/org/apache/camel/dataformat/csv/CsvUnmarshalTwoCsvDataFormatConcurrentTest.java
@@ -21,8 +21,10 @@ import java.util.List;
import org.apache.camel.EndpointInject;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class CsvUnmarshalTwoCsvDataFormatConcurrentTest extends CamelTestSupport {
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootJUnit4ClassRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootJUnit4ClassRunner.java
deleted file mode 100644
index d96c903..0000000
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootJUnit4ClassRunner.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.test.junit5.spring;
-
-import org.junit.runners.model.InitializationError;
-
-/**
- * The class {@link CamelSpringBootJUnit4ClassRunner} has been renamed to {@link CamelSpringBootRunner}
- * which is a shorter and easier to remember name.
- *
- * @deprecated use {@link CamelSpringBootRunner}
- */
-@Deprecated
-public class CamelSpringBootJUnit4ClassRunner extends CamelSpringBootRunner {
-
- public CamelSpringBootJUnit4ClassRunner(Class<?> clazz) throws InitializationError {
- super(clazz);
- }
-}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringDelegatingTestContextLoader.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringDelegatingTestContextLoader.java
deleted file mode 100644
index ce486e5..0000000
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringDelegatingTestContextLoader.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.test.junit5.spring;
-
-import java.lang.reflect.Method;
-
-import org.apache.camel.api.management.JmxSystemPropertyKeys;
-import org.apache.camel.spring.SpringCamelContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.support.BeanDefinitionRegistry;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.AnnotationConfigUtils;
-import org.springframework.test.context.MergedContextConfiguration;
-import org.springframework.test.context.support.DelegatingSmartContextLoader;
-
-/**
- * CamelSpringDelegatingTestContextLoader which fixes issues in Camel's JavaConfigContextLoader. (adds support for Camel's test annotations)
- * <br>
- * <em>This loader can handle either classes or locations for configuring the context.</em>
- * <br>
- * NOTE: This TestContextLoader doesn't support the annotation of ExcludeRoutes now.
- *
- * @deprecated use {@link CamelSpringRunner} or {@link CamelSpringBootRunner} instead.
- */
-@Deprecated
-public class CamelSpringDelegatingTestContextLoader extends DelegatingSmartContextLoader {
-
- protected final Logger logger = LoggerFactory.getLogger(getClass());
-
- @Override
- public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception {
-
- Class<?> testClass = getTestClass();
-
- if (logger.isDebugEnabled()) {
- logger.debug("Loading ApplicationContext for merged context configuration [{}].", mergedConfig);
- }
-
- // Pre CamelContext(s) instantiation setup
- CamelAnnotationsHandler.handleDisableJmx(null, testClass);
-
- try {
- SpringCamelContext.setNoStart(true);
- System.setProperty("skipStartingCamelContext", "true");
- ConfigurableApplicationContext context = (ConfigurableApplicationContext) super.loadContext(mergedConfig);
- SpringCamelContext.setNoStart(false);
- System.clearProperty("skipStartingCamelContext");
- return loadContext(context, testClass);
- } finally {
- cleanup(testClass);
- }
- }
-
- /**
- * Performs the bulk of the Spring application context loading/customization.
- *
- * @param context the partially configured context. The context should have the bean definitions loaded, but nothing else.
- * @param testClass the test class being executed
- * @return the initialized (refreshed) Spring application context
- *
- * @throws Exception if there is an error during initialization/customization
- */
- public ApplicationContext loadContext(ConfigurableApplicationContext context, Class<?> testClass)
- throws Exception {
-
- AnnotationConfigUtils.registerAnnotationConfigProcessors((BeanDefinitionRegistry) context);
-
- // Post CamelContext(s) instantiation but pre CamelContext(s) start setup
- CamelAnnotationsHandler.handleRouteCoverage(context, testClass, s -> getTestMethod().getName());
- CamelAnnotationsHandler.handleProvidesBreakpoint(context, testClass);
- CamelAnnotationsHandler.handleShutdownTimeout(context, testClass);
- CamelAnnotationsHandler.handleMockEndpoints(context, testClass);
- CamelAnnotationsHandler.handleMockEndpointsAndSkip(context, testClass);
- CamelAnnotationsHandler.handleUseOverridePropertiesWithPropertiesComponent(context, testClass);
-
- // CamelContext(s) startup
- CamelAnnotationsHandler.handleCamelContextStartup(context, testClass);
-
- return context;
- }
-
- /**
- * Cleanup/restore global state to defaults / pre-test values after the test setup
- * is complete.
- *
- * @param testClass the test class being executed
- */
- protected void cleanup(Class<?> testClass) {
- SpringCamelContext.setNoStart(false);
-
- if (testClass.isAnnotationPresent(DisableJmx.class)) {
- if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
- System.clearProperty(JmxSystemPropertyKeys.DISABLED);
- } else {
- System.setProperty(JmxSystemPropertyKeys.DISABLED,
- CamelSpringTestHelper.getOriginalJmxDisabled());
- }
- }
- }
-
- /**
- * Returns the class under test in order to enable inspection of annotations while the
- * Spring context is being created.
- *
- * @return the test class that is being executed
- * @see CamelSpringTestHelper
- */
- protected Class<?> getTestClass() {
- return CamelSpringTestHelper.getTestClass();
- }
-
- /**
- * Returns the test method under test.
- *
- * @return the method that is being executed
- * @see CamelSpringTestHelper
- */
- protected Method getTestMethod() {
- return CamelSpringTestHelper.getTestMethod();
- }
-
-}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java
index 99e52e0..43829e1 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java
@@ -25,7 +25,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
-
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.api.management.JmxSystemPropertyKeys;
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java
index 839f675..0f89812 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java
@@ -21,7 +21,6 @@ import java.util.HashSet;
import java.util.List;
import org.apache.camel.CamelContext;
-import org.apache.camel.ExtendedCamelContext;
import org.apache.camel.spring.SpringCamelContext;
import org.apache.camel.test.ExcludingPackageScanClassResolver;
import org.apache.camel.test.junit5.CamelTestSupport;
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java
index 7d7df3d..47c137c 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java
@@ -20,7 +20,6 @@ import java.util.function.Function;
import org.apache.camel.CamelContext;
import org.apache.camel.spi.CamelEvent;
-import org.apache.camel.spi.CamelEvent.CamelContextEvent;
import org.apache.camel.spi.CamelEvent.CamelContextStoppingEvent;
import org.apache.camel.support.EventNotifierSupport;
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.java
index 1456d1d..928849f 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.test.issues;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.reifier.RouteReifier;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnCompletionTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnCompletionTest.java
index eeae215..3d9e94b 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnCompletionTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnCompletionTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.test.issues;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.reifier.RouteReifier;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnExceptionMultipleIssueTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnExceptionMultipleIssueTest.java
index a9c7007..9c56e77 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnExceptionMultipleIssueTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/AdviceWithOnExceptionMultipleIssueTest.java
@@ -20,8 +20,8 @@ import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.reifier.RouteReifier;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/MockEndpointsAndSkipTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/MockEndpointsAndSkipTest.java
index b2dcbff..132b100 100644
--- a/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/MockEndpointsAndSkipTest.java
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/issues/MockEndpointsAndSkipTest.java
@@ -16,8 +16,8 @@
*/
package org.apache.camel.test.issues;
-import org.apache.camel.test.spring.CamelSpringTestSupport;
-import org.junit.Test;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
[camel] 03/09: CAMEL-13342: Added a JUnit 5 version of JUnit 4 test
patterns
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 4ca3f50b3ab671279208c4fc3c1279a8d4ef9833
Author: aldettinger <al...@gmail.com>
AuthorDate: Thu Jun 6 15:27:20 2019 +0200
CAMEL-13342: Added a JUnit 5 version of JUnit 4 test patterns
---
.../test/junit5/CamelTestParameterResolver.java | 16 +
.../apache/camel/test/junit5/CamelTestSupport.java | 1214 ++++++++++++++++++++
.../org/apache/camel/test/junit5/TestSupport.java | 553 +++++++++
.../junit5/patterns/AdviceWithNotStartedTest.java | 74 ++
.../test/junit5/patterns/AsyncSendMockTest.java | 47 +
.../test/junit5/patterns/DebugJUnit5Test.java | 86 ++
.../patterns/DebugNoLazyTypeConverterTest.java | 91 ++
.../camel/test/junit5/patterns/DebugTest.java | 86 ++
.../FilterCreateCamelContextPerClassTest.java | 65 ++
.../junit5/patterns/FilterFluentTemplateTest.java | 75 ++
.../test/junit5/patterns/FilterJUnit5Test.java | 69 ++
.../camel/test/junit5/patterns/FilterTest.java | 75 ++
.../patterns/IsMockEndpointsAndSkipJUnit5Test.java | 65 ++
.../junit5/patterns/IsMockEndpointsFileTest.java | 68 ++
.../junit5/patterns/IsMockEndpointsJUnit5Test.java | 72 ++
.../test/junit5/patterns/IsMockEndpointsTest.java | 65 ++
.../patterns/MockEndpointFailNoHeaderTest.java | 63 +
.../camel/test/junit5/patterns/MyProduceBean.java | 32 +
.../camel/test/junit5/patterns/MySender.java | 25 +
.../ProduceBeanTest.java} | 34 +-
.../RouteBuilderConfigureExceptionTest.java | 54 +
.../RouteProcessorDumpRouteCoverageTest.java} | 44 +-
.../SimpleMockEndpointsTest.java} | 35 +-
.../test/junit5/{ => patterns}/SimpleMockTest.java | 27 +-
.../SimpleMockUsingExtensionTest.java} | 13 +-
.../SimpleNotifyBuilderTest.java} | 46 +-
.../SimpleWeaveAddMockLastTest.java} | 44 +-
...rridePropertiesWithPropertiesComponentTest.java | 78 ++
28 files changed, 3094 insertions(+), 122 deletions(-)
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java
index ce58940..21a8d7b 100644
--- a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestParameterResolver.java
@@ -1,3 +1,19 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.apache.camel.test.junit5;
import org.apache.camel.ConsumerTemplate;
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
new file mode 100644
index 0000000..0ff4509
--- /dev/null
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
@@ -0,0 +1,1214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import javax.management.AttributeNotFoundException;
+import javax.management.InstanceNotFoundException;
+import javax.management.MBeanException;
+import javax.management.MBeanServer;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.management.ReflectionException;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.FluentProducerTemplate;
+import org.apache.camel.Message;
+import org.apache.camel.NamedNode;
+import org.apache.camel.NoSuchEndpointException;
+import org.apache.camel.Predicate;
+import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.Route;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.Service;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.apache.camel.api.management.ManagedCamelContext;
+import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
+import org.apache.camel.api.management.mbean.ManagedProcessorMBean;
+import org.apache.camel.api.management.mbean.ManagedRouteMBean;
+import org.apache.camel.builder.AdviceWithRouteBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.impl.engine.DefaultCamelBeanPostProcessor;
+import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
+import org.apache.camel.model.Model;
+import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.processor.interceptor.BreakpointSupport;
+import org.apache.camel.processor.interceptor.DefaultDebugger;
+import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.spi.Language;
+import org.apache.camel.spi.Registry;
+import org.apache.camel.support.EndpointHelper;
+import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.StopWatch;
+import org.apache.camel.util.StringHelper;
+import org.apache.camel.util.TimeUtils;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * A useful base class which creates a {@link org.apache.camel.CamelContext}
+ * with some routes along with a {@link org.apache.camel.ProducerTemplate} for
+ * use in the test case Do <tt>not</tt> use this class for Spring Boot testing,
+ * instead use <code>@RunWith(CamelSpringBootRunner.class)</code>.
+ */
+public class CamelTestSupport extends TestSupport implements BeforeEachCallback, BeforeTestExecutionCallback, AfterTestExecutionCallback {
+
+ /**
+ * JVM system property which can be set to true to turn on dumping route
+ * coverage statistics.
+ */
+ public static final String ROUTE_COVERAGE_ENABLED = "CamelTestRouteCoverage";
+
+ private static final Logger LOG = LoggerFactory.getLogger(CamelTestSupport.class);
+ private static ThreadLocal<ModelCamelContext> threadCamelContext = new ThreadLocal<>();
+ private static ThreadLocal<ProducerTemplate> threadTemplate = new ThreadLocal<>();
+ private static ThreadLocal<FluentProducerTemplate> threadFluentTemplate = new ThreadLocal<>();
+ private static ThreadLocal<ConsumerTemplate> threadConsumer = new ThreadLocal<>();
+ private static ThreadLocal<Service> threadService = new ThreadLocal<>();
+ protected volatile ModelCamelContext context;
+ protected volatile ProducerTemplate template;
+ protected volatile FluentProducerTemplate fluentTemplate;
+ protected volatile ConsumerTemplate consumer;
+ protected volatile Service camelContextService;
+ protected boolean dumpRouteStats;
+ @RegisterExtension
+ protected CamelTestSupport camelTestSupportExtension = this;
+ private boolean useRouteBuilder = true;
+ private final DebugBreakpoint breakpoint = new DebugBreakpoint();
+ private final StopWatch watch = new StopWatch();
+ private final Map<String, String> fromEndpoints = new HashMap<>();
+ private final AtomicInteger tests = new AtomicInteger(0);
+ private String currentTestName;
+
+ @Override
+ public void afterTestExecution(ExtensionContext context) throws Exception {
+ watch.taken();
+ }
+
+ @Override
+ public void beforeTestExecution(ExtensionContext context) throws Exception {
+ watch.restart();
+ }
+
+ public long timeTaken() {
+ return watch.taken();
+ }
+
+ @Override
+ public void beforeEach(ExtensionContext context) throws Exception {
+ currentTestName = context.getDisplayName();
+ }
+
+ /**
+ * Use the RouteBuilder or not
+ *
+ * @return <tt>true</tt> then {@link CamelContext} will be auto started,
+ * <tt>false</tt> then {@link CamelContext} will <b>not</b> be auto
+ * started (you will have to start it manually)
+ */
+ public boolean isUseRouteBuilder() {
+ return useRouteBuilder;
+ }
+
+ public void setUseRouteBuilder(boolean useRouteBuilder) {
+ this.useRouteBuilder = useRouteBuilder;
+ }
+
+ /**
+ * Whether to dump route coverage stats at the end of the test.
+ * <p/>
+ * This allows tooling or manual inspection of the stats, so you can
+ * generate a route trace diagram of which EIPs have been in use and which
+ * have not. Similar concepts as a code coverage report.
+ * <p/>
+ * You can also turn on route coverage globally via setting JVM system
+ * property <tt>CamelTestRouteCoverage=true</tt>.
+ *
+ * @return <tt>true</tt> to write route coverage status in an xml file in
+ * the <tt>target/camel-route-coverage</tt> directory after the test
+ * has finished.
+ */
+ public boolean isDumpRouteCoverage() {
+ return false;
+ }
+
+ /**
+ * Override when using
+ * <a href="http://camel.apache.org/advicewith.html">advice with</a> and
+ * return <tt>true</tt>. This helps knowing advice with is to be used, and
+ * {@link CamelContext} will not be started before the advice with takes
+ * place. This helps by ensuring the advice with has been property setup
+ * before the {@link CamelContext} is started
+ * <p/>
+ * <b>Important:</b> Its important to start {@link CamelContext} manually
+ * from the unit test after you are done doing all the advice with.
+ *
+ * @return <tt>true</tt> if you use advice with in your unit tests.
+ */
+ public boolean isUseAdviceWith() {
+ return false;
+ }
+
+ /**
+ * Override to control whether {@link CamelContext} should be setup per test
+ * or per class.
+ * <p/>
+ * By default it will be setup/teardown per test (per test method). If you
+ * want to re-use {@link CamelContext} between test methods you can override
+ * this method and return <tt>true</tt>
+ * <p/>
+ * <b>Important:</b> Use this with care as the {@link CamelContext} will
+ * carry over state from previous tests, such as endpoints, components etc.
+ * So you cannot use this in all your tests.
+ * <p/>
+ * Setting up {@link CamelContext} uses the {@link #doPreSetup()},
+ * {@link #doSetUp()}, and {@link #doPostSetup()} methods in that given
+ * order.
+ *
+ * @return <tt>true</tt> per class, <tt>false</tt> per test.
+ */
+ public boolean isCreateCamelContextPerClass() {
+ return false;
+ }
+
+ /**
+ * Override to enable auto mocking endpoints based on the pattern.
+ * <p/>
+ * Return <tt>*</tt> to mock all endpoints.
+ *
+ * @see EndpointHelper#matchEndpoint(CamelContext, String, String)
+ */
+ public String isMockEndpoints() {
+ return null;
+ }
+
+ /**
+ * Override to enable auto mocking endpoints based on the pattern, and
+ * <b>skip</b> sending to original endpoint.
+ * <p/>
+ * Return <tt>*</tt> to mock all endpoints.
+ *
+ * @see EndpointHelper#matchEndpoint(CamelContext, String, String)
+ */
+ public String isMockEndpointsAndSkip() {
+ return null;
+ }
+
+ public void replaceRouteFromWith(String routeId, String fromEndpoint) {
+ fromEndpoints.put(routeId, fromEndpoint);
+ }
+
+ /**
+ * Used for filtering routes routes matching the given pattern, which
+ * follows the following rules: - Match by route id - Match by route input
+ * endpoint uri The matching is using exact match, by wildcard and regular
+ * expression. For example to only include routes which starts with foo in
+ * their route id's, use: include=foo* And to exclude routes which
+ * starts from JMS endpoints, use: exclude=jms:* Multiple patterns can
+ * be separated by comma, for example to exclude both foo and bar routes,
+ * use: exclude=foo*,bar* Exclude takes precedence over include.
+ */
+ public String getRouteFilterIncludePattern() {
+ return null;
+ }
+
+ /**
+ * Used for filtering routes routes matching the given pattern, which
+ * follows the following rules: - Match by route id - Match by route input
+ * endpoint uri The matching is using exact match, by wildcard and regular
+ * expression. For example to only include routes which starts with foo in
+ * their route id's, use: include=foo* And to exclude routes which
+ * starts from JMS endpoints, use: exclude=jms:* Multiple patterns can
+ * be separated by comma, for example to exclude both foo and bar routes,
+ * use: exclude=foo*,bar* Exclude takes precedence over include.
+ */
+ public String getRouteFilterExcludePattern() {
+ return null;
+ }
+
+ /**
+ * Override to enable debugger
+ * <p/>
+ * Is default <tt>false</tt>
+ */
+ public boolean isUseDebugger() {
+ return false;
+ }
+
+ public Service getCamelContextService() {
+ return camelContextService;
+ }
+
+ public Service camelContextService() {
+ return camelContextService;
+ }
+
+ public CamelContext context() {
+ return context;
+ }
+
+ public ProducerTemplate template() {
+ return template;
+ }
+
+ public FluentProducerTemplate fluentTemplate() {
+ return fluentTemplate;
+ }
+
+ public ConsumerTemplate consumer() {
+ return consumer;
+ }
+
+ /**
+ * Allows a service to be registered a separate lifecycle service to start
+ * and stop the context; such as for Spring when the ApplicationContext is
+ * started and stopped, rather than directly stopping the CamelContext
+ */
+ public void setCamelContextService(Service service) {
+ camelContextService = service;
+ threadService.set(camelContextService);
+ }
+
+ @BeforeEach
+ public void setUp() throws Exception {
+ log.info("********************************************************************************");
+ log.info("Testing: " + currentTestName + "(" + getClass().getName() + ")");
+ log.info("********************************************************************************");
+
+ if (isCreateCamelContextPerClass()) {
+ while (true) {
+ int v = tests.get();
+ if (tests.compareAndSet(v, v + 1)) {
+ if (v == 0) {
+ // test is per class, so only setup once (the first
+ // time)
+ doSpringBootCheck();
+ setupResources();
+ doPreSetup();
+ doSetUp();
+ doPostSetup();
+ } else {
+ // and in between tests we must do IoC and reset mocks
+ postProcessTest();
+ resetMocks();
+ }
+
+ break;
+ }
+ }
+ } else {
+ // test is per test so always setup
+ doSpringBootCheck();
+ setupResources();
+ doPreSetup();
+ doSetUp();
+ doPostSetup();
+ }
+
+ // only start timing after all the setup
+ watch.restart();
+ }
+
+ /**
+ * Strategy to perform any pre setup, before {@link CamelContext} is created
+ */
+ protected void doPreSetup() throws Exception {
+ // noop
+ }
+
+ /**
+ * Strategy to perform any post setup after {@link CamelContext} is created
+ */
+ protected void doPostSetup() throws Exception {
+ // noop
+ }
+
+ /**
+ * Detects if this is a Spring-Boot test and throws an exception, as these
+ * base classes is not intended for testing Camel on Spring Boot.
+ */
+ protected void doSpringBootCheck() {
+ boolean springBoot = hasClassAnnotation("org.springframework.boot.test.context.SpringBootTest");
+ if (springBoot) {
+ throw new RuntimeException("Spring Boot detected: The CamelTestSupport/CamelSpringTestSupport class is not intended for Camel testing with Spring Boot."
+ + " Prefer to not extend this class, but use @RunWith(CamelSpringBootRunner.class) instead.");
+ }
+ }
+
+ private void doSetUp() throws Exception {
+ log.debug("setUp test");
+ // jmx is enabled if we have configured to use it, or if dump route
+ // coverage is enabled (it requires JMX)
+ boolean jmx = useJmx() || isRouteCoverageEnabled();
+ if (jmx) {
+ enableJMX();
+ } else {
+ disableJMX();
+ }
+
+ context = (ModelCamelContext)createCamelContext();
+ threadCamelContext.set(context);
+
+ assertNotNull(context, "No context found!");
+
+ // add custom beans
+ bindToRegistry(context.getRegistry());
+
+ // reduce default shutdown timeout to avoid waiting for 300 seconds
+ context.getShutdownStrategy().setTimeout(getShutdownTimeout());
+
+ // set debugger if enabled
+ if (isUseDebugger()) {
+ if (context.getStatus().equals(ServiceStatus.Started)) {
+ log.info("Cannot setting the Debugger to the starting CamelContext, stop the CamelContext now.");
+ // we need to stop the context first to setup the debugger
+ context.stop();
+ }
+ context.setDebugger(new DefaultDebugger());
+ context.getDebugger().addBreakpoint(breakpoint);
+ // note: when stopping CamelContext it will automatic remove the
+ // breakpoint
+ }
+
+ template = context.createProducerTemplate();
+ template.start();
+ fluentTemplate = context.createFluentProducerTemplate();
+ fluentTemplate.start();
+ consumer = context.createConsumerTemplate();
+ consumer.start();
+
+ threadTemplate.set(template);
+ threadFluentTemplate.set(fluentTemplate);
+ threadConsumer.set(consumer);
+
+ // enable auto mocking if enabled
+ String pattern = isMockEndpoints();
+ if (pattern != null) {
+ context.adapt(ExtendedCamelContext.class).registerEndpointCallback(new InterceptSendToMockEndpointStrategy(pattern));
+ }
+ pattern = isMockEndpointsAndSkip();
+ if (pattern != null) {
+ context.adapt(ExtendedCamelContext.class).registerEndpointCallback(new InterceptSendToMockEndpointStrategy(pattern, true));
+ }
+
+ // configure properties component (mandatory for testing)
+ PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
+ Properties extra = useOverridePropertiesWithPropertiesComponent();
+ if (extra != null && !extra.isEmpty()) {
+ pc.setOverrideProperties(extra);
+ }
+ Boolean ignore = ignoreMissingLocationWithPropertiesComponent();
+ if (ignore != null) {
+ pc.setIgnoreMissingLocation(ignore);
+ }
+
+ String include = getRouteFilterIncludePattern();
+ String exclude = getRouteFilterExcludePattern();
+ if (include != null || exclude != null) {
+ log.info("Route filtering pattern: include={}, exclude={}", include, exclude);
+ context.getExtension(Model.class).setRouteFilterPattern(include, exclude);
+ }
+
+ // prepare for in-between tests
+ postProcessTest();
+
+ if (isUseRouteBuilder()) {
+ RoutesBuilder[] builders = createRouteBuilders();
+ for (RoutesBuilder builder : builders) {
+ log.debug("Using created route builder: " + builder);
+ context.addRoutes(builder);
+ }
+ replaceFromEndpoints();
+ boolean skip = "true".equalsIgnoreCase(System.getProperty("skipStartingCamelContext"));
+ if (skip) {
+ log.info("Skipping starting CamelContext as system property skipStartingCamelContext is set to be true.");
+ } else if (isUseAdviceWith()) {
+ log.info("Skipping starting CamelContext as isUseAdviceWith is set to true.");
+ } else {
+ startCamelContext();
+ }
+ } else {
+ replaceFromEndpoints();
+ log.debug("Using route builder from the created context: " + context);
+ }
+ log.debug("Routing Rules are: " + context.getRoutes());
+
+ assertValidContext(context);
+ }
+
+ private void replaceFromEndpoints() throws Exception {
+ for (final Map.Entry<String, String> entry : fromEndpoints.entrySet()) {
+ RouteReifier.adviceWith(context.getRouteDefinition(entry.getKey()), context, new AdviceWithRouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ replaceFromWith(entry.getValue());
+ }
+ });
+ }
+ }
+
+ private boolean isRouteCoverageEnabled() {
+ return System.getProperty(ROUTE_COVERAGE_ENABLED, "false").equalsIgnoreCase("true") || isDumpRouteCoverage();
+ }
+
+ @AfterEach
+ public void tearDown() throws Exception {
+ long time = watch.taken();
+
+ log.info("********************************************************************************");
+ log.info("Testing done: " + currentTestName + "(" + getClass().getName() + ")");
+ log.info("Took: " + TimeUtils.printDuration(time) + " (" + time + " millis)");
+
+ // if we should dump route stats, then write that to a file
+ if (isRouteCoverageEnabled()) {
+ String className = this.getClass().getSimpleName();
+ String dir = "target/camel-route-coverage";
+ String name = className + "-" + StringHelper.before(currentTestName, "(") + ".xml";
+
+ ManagedCamelContext mc = context != null ? context.getExtension(ManagedCamelContext.class) : null;
+ ManagedCamelContextMBean managedCamelContext = mc != null ? mc.getManagedCamelContext() : null;
+ if (managedCamelContext == null) {
+ log.warn("Cannot dump route coverage to file as JMX is not enabled. "
+ + "Add camel-management-impl JAR as dependency and/or override useJmx() method to enable JMX in the unit test classes.");
+ } else {
+ logCoverageSummary(managedCamelContext);
+
+ String xml = managedCamelContext.dumpRoutesCoverageAsXml();
+ String combined = "<camelRouteCoverage>\n" + gatherTestDetailsAsXml() + xml + "\n</camelRouteCoverage>";
+
+ File file = new File(dir);
+ // ensure dir exists
+ file.mkdirs();
+ file = new File(dir, name);
+
+ log.info("Dumping route coverage to file: {}", file);
+ InputStream is = new ByteArrayInputStream(combined.getBytes());
+ OutputStream os = new FileOutputStream(file, false);
+ IOHelper.copyAndCloseInput(is, os);
+ IOHelper.close(os);
+ }
+ }
+ log.info("********************************************************************************");
+
+ if (isCreateCamelContextPerClass()) {
+ while (true) {
+ int v = tests.get();
+ if (v <= 0) {
+ LOG.warn("Test already teared down");
+ break;
+ }
+
+ if (tests.compareAndSet(v, v - 1)) {
+ if (v == 1) {
+ LOG.debug("tearDown test");
+ doStopTemplates(threadConsumer.get(), threadTemplate.get(), threadFluentTemplate.get());
+ doStopCamelContext(threadCamelContext.get(), threadService.get());
+ doPostTearDown();
+ cleanupResources();
+ }
+
+ break;
+ }
+ }
+ } else {
+ LOG.debug("tearDown test");
+ doStopTemplates(consumer, template, fluentTemplate);
+ doStopCamelContext(context, camelContextService);
+ doPostTearDown();
+ cleanupResources();
+ }
+ }
+
+ /**
+ * Strategy to perform any post action, after {@link CamelContext} is
+ * stopped
+ */
+ protected void doPostTearDown() throws Exception {
+ // noop
+ }
+
+ /**
+ * Strategy to perform resources setup, before {@link CamelContext} is
+ * created
+ */
+ protected void setupResources() throws Exception {
+ // noop
+ }
+
+ /**
+ * Strategy to perform resources cleanup, after {@link CamelContext} is
+ * stopped
+ */
+ protected void cleanupResources() throws Exception {
+ // noop
+ }
+
+ /**
+ * Logs route coverage summary: - which routes are uncovered - what is the
+ * coverage of each processor in each route
+ */
+ private void logCoverageSummary(ManagedCamelContextMBean managedCamelContext) throws Exception {
+ StringBuilder builder = new StringBuilder("\nCoverage summary\n");
+
+ int routes = managedCamelContext.getTotalRoutes();
+
+ long contextExchangesTotal = managedCamelContext.getExchangesTotal();
+
+ List<String> uncoveredRoutes = new ArrayList<>();
+
+ StringBuilder routesSummary = new StringBuilder();
+ routesSummary.append("\tProcessor coverage\n");
+
+ MBeanServer server = context.getManagementStrategy().getManagementAgent().getMBeanServer();
+
+ Map<String, List<ManagedProcessorMBean>> processorsForRoute = findProcessorsForEachRoute(server);
+
+ // log processor coverage for each route
+ for (Route route : context.getRoutes()) {
+ ManagedRouteMBean managedRoute = context.getExtension(ManagedCamelContext.class).getManagedRoute(route.getId());
+ if (managedRoute.getExchangesTotal() == 0) {
+ uncoveredRoutes.add(route.getId());
+ }
+
+ long routeCoveragePercentage = Math.round((double)managedRoute.getExchangesTotal() / contextExchangesTotal * 100);
+ routesSummary.append("\t\tRoute ").append(route.getId()).append(" total: ").append(managedRoute.getExchangesTotal()).append(" (").append(routeCoveragePercentage)
+ .append("%)\n");
+
+ if (server != null) {
+ List<ManagedProcessorMBean> processors = processorsForRoute.get(route.getId());
+ if (processors != null) {
+ for (ManagedProcessorMBean managedProcessor : processors) {
+ String processorId = managedProcessor.getProcessorId();
+ long processorExchangesTotal = managedProcessor.getExchangesTotal();
+ long processorCoveragePercentage = Math.round((double)processorExchangesTotal / contextExchangesTotal * 100);
+ routesSummary.append("\t\t\tProcessor ").append(processorId).append(" total: ").append(processorExchangesTotal).append(" (")
+ .append(processorCoveragePercentage).append("%)\n");
+ }
+ }
+ }
+ }
+
+ int used = routes - uncoveredRoutes.size();
+
+ long contextPercentage = Math.round((double)used / routes * 100);
+ builder.append("\tRoute coverage: ").append(used).append(" out of ").append(routes).append(" routes used (").append(contextPercentage).append("%)\n");
+ builder.append("\t\tCamelContext (").append(managedCamelContext.getCamelId()).append(") total: ").append(contextExchangesTotal).append("\n");
+
+ if (uncoveredRoutes.size() > 0) {
+ builder.append("\t\tUncovered routes: ").append(uncoveredRoutes.stream().collect(Collectors.joining(", "))).append("\n");
+ }
+
+ builder.append(routesSummary);
+ log.info(builder.toString());
+ }
+
+ /**
+ * Groups all processors from Camel context by route id
+ */
+ private Map<String, List<ManagedProcessorMBean>> findProcessorsForEachRoute(MBeanServer server)
+ throws MalformedObjectNameException, MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException {
+ String domain = context.getManagementStrategy().getManagementAgent().getMBeanServerDefaultDomain();
+
+ Map<String, List<ManagedProcessorMBean>> processorsForRoute = new HashMap<>();
+
+ ObjectName processorsObjectName = new ObjectName(domain + ":context=" + context.getManagementName() + ",type=processors,name=*");
+ Set<ObjectName> objectNames = server.queryNames(processorsObjectName, null);
+
+ for (ObjectName objectName : objectNames) {
+ String routeId = server.getAttribute(objectName, "RouteId").toString();
+ String name = objectName.getKeyProperty("name");
+ name = ObjectName.unquote(name);
+
+ ManagedProcessorMBean managedProcessor = context.getExtension(ManagedCamelContext.class).getManagedProcessor(name);
+
+ if (managedProcessor != null) {
+ if (processorsForRoute.get(routeId) == null) {
+ List<ManagedProcessorMBean> processorsList = new ArrayList<>();
+ processorsList.add(managedProcessor);
+
+ processorsForRoute.put(routeId, processorsList);
+ } else {
+ processorsForRoute.get(routeId).add(managedProcessor);
+ }
+ }
+ }
+
+ // sort processors by position in route definition
+ for (Map.Entry<String, List<ManagedProcessorMBean>> entry : processorsForRoute.entrySet()) {
+ Collections.sort(entry.getValue(), Comparator.comparing(ManagedProcessorMBean::getIndex));
+ }
+
+ return processorsForRoute;
+ }
+
+ /**
+ * Gathers test details as xml
+ */
+ private String gatherTestDetailsAsXml() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<test>\n");
+ sb.append(" <class>").append(getClass().getName()).append("</class>\n");
+ sb.append(" <method>").append(currentTestName).append("</method>\n");
+ sb.append(" <time>").append(timeTaken()).append("</time>\n");
+ sb.append("</test>\n");
+ return sb.toString();
+ }
+
+ /**
+ * Returns the timeout to use when shutting down (unit in seconds).
+ * <p/>
+ * Will default use 10 seconds.
+ *
+ * @return the timeout to use
+ */
+ protected int getShutdownTimeout() {
+ return 10;
+ }
+
+ /**
+ * Whether or not JMX should be used during testing.
+ *
+ * @return <tt>false</tt> by default.
+ */
+ protected boolean useJmx() {
+ return false;
+ }
+
+ /**
+ * Whether or not type converters should be lazy loaded (notice core
+ * converters is always loaded)
+ *
+ * @return <tt>false</tt> by default.
+ */
+ @Deprecated
+ protected boolean isLazyLoadingTypeConverter() {
+ return false;
+ }
+
+ /**
+ * Override this method to include and override properties with the Camel
+ * {@link PropertiesComponent}.
+ *
+ * @return additional properties to add/override.
+ */
+ protected Properties useOverridePropertiesWithPropertiesComponent() {
+ return null;
+ }
+
+ /**
+ * Whether to ignore missing locations with the {@link PropertiesComponent}.
+ * For example when unit testing you may want to ignore locations that are
+ * not available in the environment you use for testing.
+ *
+ * @return <tt>true</tt> to ignore, <tt>false</tt> to not ignore, and
+ * <tt>null</tt> to leave as configured on the
+ * {@link PropertiesComponent}
+ */
+ protected Boolean ignoreMissingLocationWithPropertiesComponent() {
+ return null;
+ }
+
+ protected void postProcessTest() throws Exception {
+ context = threadCamelContext.get();
+ template = threadTemplate.get();
+ fluentTemplate = threadFluentTemplate.get();
+ consumer = threadConsumer.get();
+ camelContextService = threadService.get();
+ applyCamelPostProcessor();
+ }
+
+ /**
+ * Applies the {@link DefaultCamelBeanPostProcessor} to this instance.
+ * Derived classes using IoC / DI frameworks may wish to turn this into a
+ * NoOp such as for CDI we would just use CDI to inject this
+ */
+ protected void applyCamelPostProcessor() throws Exception {
+ // use the default bean post processor from camel-core if the test class
+ // is not dependency injected already by Spring
+ boolean spring = hasClassAnnotation("org.springframework.boot.test.context.SpringBootTest", "org.springframework.context.annotation.ComponentScan");
+ if (!spring) {
+ DefaultCamelBeanPostProcessor processor = new DefaultCamelBeanPostProcessor(context);
+ processor.postProcessBeforeInitialization(this, getClass().getName());
+ processor.postProcessAfterInitialization(this, getClass().getName());
+ }
+ }
+
+ /**
+ * Does this test class have any of the following annotations on the
+ * class-level.
+ */
+ protected boolean hasClassAnnotation(String... names) {
+ for (String name : names) {
+ for (Annotation ann : getClass().getAnnotations()) {
+ String annName = ann.annotationType().getName();
+ if (annName.equals(name)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ protected void stopCamelContext() throws Exception {
+ doStopCamelContext(context, camelContextService);
+ }
+
+ private static void doStopCamelContext(CamelContext context, Service camelContextService) throws Exception {
+ if (camelContextService != null) {
+ if (camelContextService == threadService.get()) {
+ threadService.remove();
+ }
+ camelContextService.stop();
+ } else {
+ if (context != null) {
+ if (context == threadCamelContext.get()) {
+ threadCamelContext.remove();
+ }
+ context.stop();
+ }
+ }
+ }
+
+ private static void doStopTemplates(ConsumerTemplate consumer, ProducerTemplate template, FluentProducerTemplate fluentTemplate) throws Exception {
+ if (consumer != null) {
+ if (consumer == threadConsumer.get()) {
+ threadConsumer.remove();
+ }
+ consumer.stop();
+ }
+ if (template != null) {
+ if (template == threadTemplate.get()) {
+ threadTemplate.remove();
+ }
+ template.stop();
+ }
+ if (fluentTemplate != null) {
+ if (fluentTemplate == threadFluentTemplate.get()) {
+ threadFluentTemplate.remove();
+ }
+ fluentTemplate.stop();
+ }
+ }
+
+ protected void startCamelContext() throws Exception {
+ if (camelContextService != null) {
+ camelContextService.start();
+ } else {
+ if (context instanceof DefaultCamelContext) {
+ DefaultCamelContext defaultCamelContext = (DefaultCamelContext)context;
+ if (!defaultCamelContext.isStarted()) {
+ defaultCamelContext.start();
+ }
+ } else {
+ context.start();
+ }
+ }
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ // for backwards compatibility
+ Registry registry = createRegistry();
+ if (registry instanceof FakeJndiRegistry) {
+ boolean inUse = ((FakeJndiRegistry)registry).isInUse();
+ if (!inUse) {
+ registry = null;
+ }
+ }
+ if (registry != null) {
+ String msg = "createRegistry() from camel-test is deprecated. Use createCamelRegistry if you want to control which registry to use, however"
+ + " if you need to bind beans to the registry then this is possible already with the bind method on registry,"
+ + " and there is no need to override this method.";
+ LOG.warn(msg);
+ } else {
+ registry = createCamelRegistry();
+ }
+
+ CamelContext context;
+ if (registry != null) {
+ context = new DefaultCamelContext(registry);
+ } else {
+ context = new DefaultCamelContext();
+ }
+ return context;
+ }
+
+ /**
+ * Allows to bind custom beans to the Camel {@link Registry}.
+ */
+ protected void bindToRegistry(Registry registry) throws Exception {
+ // noop
+ }
+
+ /**
+ * Override to use a custom {@link Registry}. However if you need to bind
+ * beans to the registry then this is possible already with the bind method
+ * on registry," and there is no need to override this method.
+ */
+ protected Registry createCamelRegistry() throws Exception {
+ return null;
+ }
+
+ /**
+ * @deprecated use createCamelRegistry if you want to control which registry
+ * to use, however if you need to bind beans to the registry
+ * then this is possible already with the bind method on
+ * registry, and there is no need to override this method.
+ */
+ @Deprecated
+ protected JndiRegistry createRegistry() throws Exception {
+ return new FakeJndiRegistry(createJndiContext());
+ }
+
+ /**
+ * @deprecated use createCamelRegistry if you want to control which registry
+ * to use, however if you need to bind beans to the registry
+ * then this is possible already with the bind method on
+ * registry, and there is no need to use JndiRegistry and
+ * override this method.
+ */
+ @Deprecated
+ protected Context createJndiContext() throws Exception {
+ LOG.warn("The method createJndiContext() in camel-test is deprecated. You can bind beans directly from Camel Registry instead");
+ Properties properties = new Properties();
+
+ // jndi.properties is optional
+ InputStream in = getClass().getClassLoader().getResourceAsStream("jndi.properties");
+ if (in != null) {
+ log.debug("Using jndi.properties from classpath root");
+ properties.load(in);
+ } else {
+ properties.put("java.naming.factory.initial", "org.apache.camel.support.jndi.CamelInitialContextFactory");
+ }
+ return new InitialContext(new Hashtable<>(properties));
+ }
+
+ private class FakeJndiRegistry extends JndiRegistry {
+
+ private boolean inUse;
+
+ public FakeJndiRegistry(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void bind(String name, Object object) {
+ super.bind(name, object);
+ inUse = true;
+ }
+
+ public boolean isInUse() {
+ // only if the end user bind beans then its in use
+ return inUse;
+ }
+ }
+
+ /**
+ * Factory method which derived classes can use to create a
+ * {@link RouteBuilder} to define the routes for testing
+ */
+ protected RoutesBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() {
+ // no routes added by default
+ }
+ };
+ }
+
+ /**
+ * Factory method which derived classes can use to create an array of
+ * {@link org.apache.camel.builder.RouteBuilder}s to define the routes for
+ * testing
+ *
+ * @see #createRouteBuilder()
+ */
+ protected RoutesBuilder[] createRouteBuilders() throws Exception {
+ return new RoutesBuilder[] {createRouteBuilder()};
+ }
+
+ /**
+ * Resolves a mandatory endpoint for the given URI or an exception is thrown
+ *
+ * @param uri the Camel <a href="">URI</a> to use to create or resolve an
+ * endpoint
+ * @return the endpoint
+ */
+ protected Endpoint resolveMandatoryEndpoint(String uri) {
+ return resolveMandatoryEndpoint(context, uri);
+ }
+
+ /**
+ * Resolves a mandatory endpoint for the given URI and expected type or an
+ * exception is thrown
+ *
+ * @param uri the Camel <a href="">URI</a> to use to create or resolve an
+ * endpoint
+ * @return the endpoint
+ */
+ protected <T extends Endpoint> T resolveMandatoryEndpoint(String uri, Class<T> endpointType) {
+ return resolveMandatoryEndpoint(context, uri, endpointType);
+ }
+
+ /**
+ * Resolves the mandatory Mock endpoint using a URI of the form
+ * <code>mock:someName</code>
+ *
+ * @param uri the URI which typically starts with "mock:" and has some name
+ * @return the mandatory mock endpoint or an exception is thrown if it could
+ * not be resolved
+ */
+ protected MockEndpoint getMockEndpoint(String uri) {
+ return getMockEndpoint(uri, true);
+ }
+
+ /**
+ * Resolves the {@link MockEndpoint} using a URI of the form
+ * <code>mock:someName</code>, optionally creating it if it does not exist.
+ *
+ * @param uri the URI which typically starts with "mock:" and has some name
+ * @param create whether or not to allow the endpoint to be created if it
+ * doesn't exist
+ * @return the mock endpoint or an {@link NoSuchEndpointException} is thrown
+ * if it could not be resolved
+ * @throws NoSuchEndpointException is the mock endpoint does not exists
+ */
+ protected MockEndpoint getMockEndpoint(String uri, boolean create) throws NoSuchEndpointException {
+ if (create) {
+ return resolveMandatoryEndpoint(uri, MockEndpoint.class);
+ } else {
+ Endpoint endpoint = context.hasEndpoint(uri);
+ if (endpoint instanceof MockEndpoint) {
+ return (MockEndpoint)endpoint;
+ }
+ throw new NoSuchEndpointException(String.format("MockEndpoint %s does not exist.", uri));
+ }
+ }
+
+ /**
+ * Sends a message to the given endpoint URI with the body value
+ *
+ * @param endpointUri the URI of the endpoint to send to
+ * @param body the body for the message
+ */
+ protected void sendBody(String endpointUri, final Object body) {
+ template.send(endpointUri, new Processor() {
+ public void process(Exchange exchange) {
+ Message in = exchange.getIn();
+ in.setBody(body);
+ }
+ });
+ }
+
+ /**
+ * Sends a message to the given endpoint URI with the body value and
+ * specified headers
+ *
+ * @param endpointUri the URI of the endpoint to send to
+ * @param body the body for the message
+ * @param headers any headers to set on the message
+ */
+ protected void sendBody(String endpointUri, final Object body, final Map<String, Object> headers) {
+ template.send(endpointUri, new Processor() {
+ public void process(Exchange exchange) {
+ Message in = exchange.getIn();
+ in.setBody(body);
+ for (Map.Entry<String, Object> entry : headers.entrySet()) {
+ in.setHeader(entry.getKey(), entry.getValue());
+ }
+ }
+ });
+ }
+
+ /**
+ * Sends messages to the given endpoint for each of the specified bodies
+ *
+ * @param endpointUri the endpoint URI to send to
+ * @param bodies the bodies to send, one per message
+ */
+ protected void sendBodies(String endpointUri, Object... bodies) {
+ for (Object body : bodies) {
+ sendBody(endpointUri, body);
+ }
+ }
+
+ /**
+ * Creates an exchange with the given body
+ */
+ protected Exchange createExchangeWithBody(Object body) {
+ return createExchangeWithBody(context, body);
+ }
+
+ /**
+ * Asserts that the given language name and expression evaluates to the
+ * given value on a specific exchange
+ */
+ protected void assertExpression(Exchange exchange, String languageName, String expressionText, Object expectedValue) {
+ Language language = assertResolveLanguage(languageName);
+
+ Expression expression = language.createExpression(expressionText);
+ assertNotNull(expression, "No Expression could be created for text: " + expressionText + " language: " + language);
+
+ assertExpression(expression, exchange, expectedValue);
+ }
+
+ /**
+ * Asserts that the given language name and predicate expression evaluates
+ * to the expected value on the message exchange
+ */
+ protected void assertPredicate(String languageName, String expressionText, Exchange exchange, boolean expected) {
+ Language language = assertResolveLanguage(languageName);
+
+ Predicate predicate = language.createPredicate(expressionText);
+ assertNotNull(predicate, "No Predicate could be created for text: " + expressionText + " language: " + language);
+
+ assertPredicate(predicate, exchange, expected);
+ }
+
+ /**
+ * Asserts that the language name can be resolved
+ */
+ protected Language assertResolveLanguage(String languageName) {
+ Language language = context.resolveLanguage(languageName);
+ assertNotNull(language, "No language found for name: " + languageName);
+ return language;
+ }
+
+ /**
+ * Asserts that all the expectations of the Mock endpoints are valid
+ */
+ protected void assertMockEndpointsSatisfied() throws InterruptedException {
+ MockEndpoint.assertIsSatisfied(context);
+ }
+
+ /**
+ * Asserts that all the expectations of the Mock endpoints are valid
+ */
+ protected void assertMockEndpointsSatisfied(long timeout, TimeUnit unit) throws InterruptedException {
+ MockEndpoint.assertIsSatisfied(context, timeout, unit);
+ }
+
+ /**
+ * Reset all Mock endpoints.
+ */
+ protected void resetMocks() {
+ MockEndpoint.resetMocks(context);
+ }
+
+ protected void assertValidContext(CamelContext context) {
+ assertNotNull(context, "No context found!");
+ }
+
+ protected <T extends Endpoint> T getMandatoryEndpoint(String uri, Class<T> type) {
+ T endpoint = context.getEndpoint(uri, type);
+ assertNotNull(endpoint, "No endpoint found for uri: " + uri);
+ return endpoint;
+ }
+
+ protected Endpoint getMandatoryEndpoint(String uri) {
+ Endpoint endpoint = context.getEndpoint(uri);
+ assertNotNull(endpoint, "No endpoint found for uri: " + uri);
+ return endpoint;
+ }
+
+ /**
+ * Disables the JMX agent. Must be called before the {@link #setUp()}
+ * method.
+ */
+ protected void disableJMX() {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+ }
+
+ /**
+ * Enables the JMX agent. Must be called before the {@link #setUp()} method.
+ */
+ protected void enableJMX() {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "false");
+ }
+
+ /**
+ * Single step debugs and Camel invokes this method before entering the
+ * given processor
+ */
+ protected void debugBefore(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, String id, String label) {
+ }
+
+ /**
+ * Single step debugs and Camel invokes this method after processing the
+ * given processor
+ */
+ protected void debugAfter(Exchange exchange, Processor processor, ProcessorDefinition<?> definition, String id, String label, long timeTaken) {
+ }
+
+ /**
+ * To easily debug by overriding the <tt>debugBefore</tt> and
+ * <tt>debugAfter</tt> methods.
+ */
+ private class DebugBreakpoint extends BreakpointSupport {
+
+ @Override
+ public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
+ CamelTestSupport.this.debugBefore(exchange, processor, (ProcessorDefinition)definition, definition.getId(), definition.getLabel());
+ }
+
+ @Override
+ public void afterProcess(Exchange exchange, Processor processor, NamedNode definition, long timeTaken) {
+ CamelTestSupport.this.debugAfter(exchange, processor, (ProcessorDefinition)definition, definition.getId(), definition.getLabel(), timeTaken);
+ }
+ }
+
+}
diff --git a/components/camel-test/src/main/java/org/apache/camel/test/junit5/TestSupport.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/TestSupport.java
new file mode 100644
index 0000000..a24ca42
--- /dev/null
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/TestSupport.java
@@ -0,0 +1,553 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Endpoint;
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.InvalidPayloadException;
+import org.apache.camel.Message;
+import org.apache.camel.Predicate;
+import org.apache.camel.Route;
+import org.apache.camel.builder.Builder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.ValueBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.support.DefaultExchange;
+import org.apache.camel.support.PredicateAssertHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+/**
+ * A bunch of useful testing methods
+ */
+public abstract class TestSupport {
+
+ protected static final String LS = System.lineSeparator();
+ private static final Logger LOG = LoggerFactory.getLogger(TestSupport.class);
+ protected Logger log = LoggerFactory.getLogger(getClass());
+
+ // Builder methods for expressions used when testing
+ // -------------------------------------------------------------------------
+
+ /**
+ * Returns a value builder for the given header
+ */
+ public static ValueBuilder header(String name) {
+ return Builder.header(name);
+ }
+
+ /**
+ * Returns a value builder for the given property
+ *
+ * @deprecated use {@link #exchangeProperty(String)}
+ */
+ @Deprecated
+ public static ValueBuilder property(String name) {
+ return Builder.exchangeProperty(name);
+ }
+
+ /**
+ * Returns a value builder for the given exchange property
+ */
+ public static ValueBuilder exchangeProperty(String name) {
+ return Builder.exchangeProperty(name);
+ }
+
+ /**
+ * Returns a predicate and value builder for the inbound body on an exchange
+ */
+ public static ValueBuilder body() {
+ return Builder.body();
+ }
+
+ /**
+ * Returns a predicate and value builder for the inbound message body as a
+ * specific type
+ */
+ public static <T> ValueBuilder bodyAs(Class<T> type) {
+ return Builder.bodyAs(type);
+ }
+
+ /**
+ * Returns a value builder for the given system property
+ */
+ public static ValueBuilder systemProperty(String name) {
+ return Builder.systemProperty(name);
+ }
+
+ /**
+ * Returns a value builder for the given system property
+ */
+ public static ValueBuilder systemProperty(String name, String defaultValue) {
+ return Builder.systemProperty(name, defaultValue);
+ }
+
+ // Assertions
+ // -----------------------------------------------------------------------
+
+ public static <T> T assertIsInstanceOf(Class<T> expectedType, Object value) {
+ assertNotNull(value, "Expected an instance of type: " + expectedType.getName() + " but was null");
+ assertTrue(expectedType.isInstance(value), "Object should be of type " + expectedType.getName() + " but was: " + value + " with the type: " + value.getClass().getName());
+ return expectedType.cast(value);
+ }
+
+ public static void assertEndpointUri(Endpoint endpoint, String uri) {
+ assertNotNull(endpoint, "Endpoint is null when expecting endpoint for: " + uri);
+ assertEquals(uri, endpoint.getEndpointUri(), "Endpoint uri for: " + endpoint);
+ }
+
+ /**
+ * Asserts the In message on the exchange contains the expected value
+ */
+ public static Object assertInMessageHeader(Exchange exchange, String name, Object expected) {
+ return assertMessageHeader(exchange.getIn(), name, expected);
+ }
+
+ /**
+ * Asserts the Out message on the exchange contains the expected value
+ */
+ public static Object assertOutMessageHeader(Exchange exchange, String name, Object expected) {
+ return assertMessageHeader(exchange.getOut(), name, expected);
+ }
+
+ /**
+ * Asserts that the given exchange has an OUT message of the given body
+ * value
+ *
+ * @param exchange the exchange which should have an OUT message
+ * @param expected the expected value of the OUT message
+ * @throws InvalidPayloadException is thrown if the payload is not the
+ * expected class type
+ */
+ public static void assertInMessageBodyEquals(Exchange exchange, Object expected) throws InvalidPayloadException {
+ assertNotNull(exchange, "Should have a response exchange!");
+
+ Object actual;
+ if (expected == null) {
+ actual = exchange.getIn().getMandatoryBody();
+ assertEquals(expected, actual, "in body of: " + exchange);
+ } else {
+ actual = exchange.getIn().getMandatoryBody(expected.getClass());
+ }
+ assertEquals(expected, actual, "in body of: " + exchange);
+
+ LOG.debug("Received response: " + exchange + " with in: " + exchange.getIn());
+ }
+
+ /**
+ * Asserts that the given exchange has an OUT message of the given body
+ * value
+ *
+ * @param exchange the exchange which should have an OUT message
+ * @param expected the expected value of the OUT message
+ * @throws InvalidPayloadException is thrown if the payload is not the
+ * expected class type
+ */
+ public static void assertOutMessageBodyEquals(Exchange exchange, Object expected) throws InvalidPayloadException {
+ assertNotNull(exchange, "Should have a response exchange!");
+
+ Object actual;
+ if (expected == null) {
+ actual = exchange.getOut().getMandatoryBody();
+ assertEquals(expected, actual, "output body of: " + exchange);
+ } else {
+ actual = exchange.getOut().getMandatoryBody(expected.getClass());
+ }
+ assertEquals(expected, actual, "output body of: " + exchange);
+
+ LOG.debug("Received response: " + exchange + " with out: " + exchange.getOut());
+ }
+
+ public static Object assertMessageHeader(Message message, String name, Object expected) {
+ Object value = message.getHeader(name);
+ assertEquals(expected, value, "Header: " + name + " on Message: " + message);
+ return value;
+ }
+
+ /**
+ * Asserts that the given expression when evaluated returns the given answer
+ */
+ public static Object assertExpression(Expression expression, Exchange exchange, Object expected) {
+ Object value;
+ if (expected != null) {
+ value = expression.evaluate(exchange, expected.getClass());
+ } else {
+ value = expression.evaluate(exchange, Object.class);
+ }
+
+ LOG.debug("Evaluated expression: " + expression + " on exchange: " + exchange + " result: " + value);
+
+ assertEquals(expected, value, "Expression: " + expression + " on Exchange: " + exchange);
+ return value;
+ }
+
+ /**
+ * Asserts that the predicate returns the expected value on the exchange
+ */
+ public static void assertPredicateMatches(Predicate predicate, Exchange exchange) {
+ assertPredicate(predicate, exchange, true);
+ }
+
+ /**
+ * Asserts that the predicate returns the expected value on the exchange
+ */
+ public static void assertPredicateDoesNotMatch(Predicate predicate, Exchange exchange) {
+ try {
+ PredicateAssertHelper.assertMatches(predicate, "Predicate should match: ", exchange);
+ } catch (AssertionError e) {
+ LOG.debug("Caught expected assertion error: " + e);
+ }
+ assertPredicate(predicate, exchange, false);
+ }
+
+ /**
+ * Asserts that the predicate returns the expected value on the exchange
+ */
+ public static boolean assertPredicate(final Predicate predicate, Exchange exchange, boolean expected) {
+ if (expected) {
+ PredicateAssertHelper.assertMatches(predicate, "Predicate failed: ", exchange);
+ }
+ boolean value = predicate.matches(exchange);
+
+ LOG.debug("Evaluated predicate: " + predicate + " on exchange: " + exchange + " result: " + value);
+
+ assertEquals(expected, value, "Predicate: " + predicate + " on Exchange: " + exchange);
+ return value;
+ }
+
+ /**
+ * Resolves an endpoint and asserts that it is found
+ */
+ public static Endpoint resolveMandatoryEndpoint(CamelContext context, String uri) {
+ Endpoint endpoint = context.getEndpoint(uri);
+
+ assertNotNull(endpoint, "No endpoint found for URI: " + uri);
+
+ return endpoint;
+ }
+
+ /**
+ * Resolves an endpoint and asserts that it is found
+ */
+ public static <T extends Endpoint> T resolveMandatoryEndpoint(CamelContext context, String uri, Class<T> endpointType) {
+ T endpoint = context.getEndpoint(uri, endpointType);
+
+ assertNotNull(endpoint, "No endpoint found for URI: " + uri);
+
+ return endpoint;
+ }
+
+ /**
+ * Creates an exchange with the given body
+ */
+ protected Exchange createExchangeWithBody(CamelContext camelContext, Object body) {
+ Exchange exchange = new DefaultExchange(camelContext);
+ Message message = exchange.getIn();
+ message.setHeader("testClass", getClass().getName());
+ message.setBody(body);
+ return exchange;
+ }
+
+ public static <T> T assertOneElement(List<T> list) {
+ assertEquals(1, list.size(), "Size of list should be 1: " + list);
+ return list.get(0);
+ }
+
+ /**
+ * Asserts that a list is of the given size
+ */
+ public static <T> List<T> assertListSize(List<T> list, int size) {
+ return assertListSize("List", list, size);
+ }
+
+ /**
+ * Asserts that a list is of the given size
+ */
+ public static <T> List<T> assertListSize(String message, List<T> list, int size) {
+ assertEquals(size, list.size(), message + " should be of size: " + size + " but is: " + list);
+ return list;
+ }
+
+ /**
+ * Asserts that a list is of the given size
+ */
+ public static <T> Collection<T> assertCollectionSize(Collection<T> list, int size) {
+ return assertCollectionSize("List", list, size);
+ }
+
+ /**
+ * Asserts that a list is of the given size
+ */
+ public static <T> Collection<T> assertCollectionSize(String message, Collection<T> list, int size) {
+ assertEquals(size, list.size(), message + " should be of size: " + size + " but is: " + list);
+ return list;
+ }
+
+ /**
+ * A helper method to create a list of Route objects for a given route
+ * builder
+ */
+ public static List<Route> getRouteList(RouteBuilder builder) throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ context.addRoutes(builder);
+ context.start();
+ List<Route> answer = context.getRoutes();
+ context.stop();
+ return answer;
+ }
+
+ /**
+ * Asserts that the text contains the given string
+ *
+ * @param text the text to compare
+ * @param containedText the text which must be contained inside the other
+ * text parameter
+ */
+ public static void assertStringContains(String text, String containedText) {
+ assertNotNull("Text should not be null!", text);
+ assertTrue(text.contains(containedText), "Text: " + text + " does not contain: " + containedText);
+ }
+
+ /**
+ * Recursively delete a directory, useful to zapping test data
+ *
+ * @param file the directory to be deleted
+ * @return <tt>false</tt> if error deleting directory
+ */
+ public static boolean deleteDirectory(String file) {
+ return deleteDirectory(new File(file));
+ }
+
+ /**
+ * Recursively delete a directory, useful to zapping test data
+ *
+ * @param file the directory to be deleted
+ * @return <tt>false</tt> if error deleting directory
+ */
+ public static boolean deleteDirectory(File file) {
+ int tries = 0;
+ int maxTries = 5;
+ boolean exists = true;
+ while (exists && (tries < maxTries)) {
+ recursivelyDeleteDirectory(file);
+ tries++;
+ exists = file.exists();
+ if (exists) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+ }
+ return !exists;
+ }
+
+ private static void recursivelyDeleteDirectory(File file) {
+ if (!file.exists()) {
+ return;
+ }
+
+ if (file.isDirectory()) {
+ File[] files = file.listFiles();
+ for (File child : files) {
+ recursivelyDeleteDirectory(child);
+ }
+ }
+ boolean success = file.delete();
+ if (!success) {
+ LOG.warn("Deletion of file: " + file.getAbsolutePath() + " failed");
+ }
+ }
+
+ /**
+ * create the directory
+ *
+ * @param file the directory to be created
+ */
+ public static void createDirectory(String file) {
+ File dir = new File(file);
+ dir.mkdirs();
+ }
+
+ /**
+ * To be used for folder/directory comparison that works across different
+ * platforms such as Window, Mac and Linux.
+ */
+ public static void assertDirectoryEquals(String expected, String actual) {
+ assertDirectoryEquals(null, expected, actual);
+ }
+
+ /**
+ * To be used for folder/directory comparison that works across different
+ * platforms such as Window, Mac and Linux.
+ */
+ public static void assertDirectoryEquals(String message, String expected, String actual) {
+ // must use single / as path separators
+ String expectedPath = expected.replace('\\', '/');
+ String actualPath = actual.replace('\\', '/');
+
+ if (message != null) {
+ assertEquals(message, expectedPath, actualPath);
+ } else {
+ assertEquals(expectedPath, actualPath);
+ }
+ }
+
+ /**
+ * To be used to check is a directory is found in the file system
+ */
+ public static void assertDirectoryExists(String filename) {
+ File file = new File(filename);
+ assertTrue(file.exists(), "Directory " + filename + " should exist");
+ assertTrue(file.isDirectory(), "Directory " + filename + " should be a directory");
+ }
+
+ /**
+ * To be used to check is a file is found in the file system
+ */
+ public static void assertFileExists(String filename) {
+ File file = new File(filename);
+ assertTrue(file.exists(), "File " + filename + " should exist");
+ assertTrue(file.isFile(), "File " + filename + " should be a file");
+ }
+
+ /**
+ * To be used to check is a file is <b>not</b> found in the file system
+ */
+ public static void assertFileNotExists(String filename) {
+ File file = new File(filename);
+ assertFalse(file.exists(), "File " + filename + " should not exist");
+ }
+
+ /**
+ * Is this OS the given platform.
+ * <p/>
+ * Uses <tt>os.name</tt> from the system properties to determine the OS.
+ *
+ * @param platform such as Windows
+ * @return <tt>true</tt> if its that platform.
+ */
+ public static boolean isPlatform(String platform) {
+ String osName = System.getProperty("os.name").toLowerCase(Locale.US);
+ return osName.contains(platform.toLowerCase(Locale.US));
+ }
+
+ /**
+ * Is this Java by the given vendor.
+ * <p/>
+ * Uses <tt>java.vendor</tt> from the system properties to determine the
+ * vendor.
+ *
+ * @param vendor such as IBM
+ * @return <tt>true</tt> if its that vendor.
+ */
+ public static boolean isJavaVendor(String vendor) {
+ String javaVendor = System.getProperty("java.vendor").toLowerCase(Locale.US);
+ return javaVendor.contains(vendor.toLowerCase(Locale.US));
+ }
+
+ /**
+ * Is this Java 1.5
+ *
+ * @return <tt>true</tt> if its Java 1.5, <tt>false</tt> if its not (for
+ * example Java 1.6 or better)
+ * @deprecated will be removed in the future as Camel requires JDK1.8+
+ */
+ @Deprecated
+ public static boolean isJava15() {
+ return getJavaMajorVersion() == 5;
+ }
+
+ /**
+ * Is this Java 1.6
+ *
+ * @return <tt>true</tt> if its Java 1.6, <tt>false</tt> if its not (for
+ * example Java 1.7 or better)
+ * @deprecated will be removed in the future as Camel requires JDK1.8+
+ */
+ @Deprecated
+ public static boolean isJava16() {
+ return getJavaMajorVersion() == 6;
+
+ }
+
+ /**
+ * Is this Java 1.7
+ *
+ * @return <tt>true</tt> if its Java 1.7, <tt>false</tt> if its not (for
+ * example Java 1.6 or older)
+ * @deprecated will be removed in the future as Camel requires JDK1.8+
+ */
+ @Deprecated
+ public static boolean isJava17() {
+ return getJavaMajorVersion() == 7;
+
+ }
+
+ /**
+ * Is this Java 1.8
+ *
+ * @return <tt>true</tt> if its Java 1.8, <tt>false</tt> if its not (for
+ * example Java 1.7 or older)
+ */
+ public static boolean isJava18() {
+ return getJavaMajorVersion() == 8;
+
+ }
+
+ /**
+ * Is this Java 1.9
+ *
+ * @return <tt>true</tt> if its Java 1.9, <tt>false</tt> if its not (for
+ * example Java 1.8 or older)
+ */
+ public static boolean isJava19() {
+ return getJavaMajorVersion() == 9;
+
+ }
+
+ /**
+ * Returns the current major Java version e.g 8.
+ * <p/>
+ * Uses <tt>java.specification.version</tt> from the system properties to
+ * determine the major version.
+ *
+ * @return the current major Java version.
+ */
+ public static int getJavaMajorVersion() {
+ String javaSpecVersion = System.getProperty("java.specification.version");
+ if (javaSpecVersion.contains(".")) { // before jdk 9
+ return Integer.parseInt(javaSpecVersion.split("\\.")[1]);
+ } else {
+ return Integer.parseInt(javaSpecVersion);
+ }
+ }
+
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithNotStartedTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithNotStartedTest.java
new file mode 100644
index 0000000..55e0a54
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithNotStartedTest.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import java.util.concurrent.RejectedExecutionException;
+
+import org.apache.camel.CamelExecutionException;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.AdviceWithRouteBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+public class AdviceWithNotStartedTest extends CamelTestSupport {
+
+ @Override
+ public boolean isUseAdviceWith() {
+ return true;
+ }
+
+ @Test
+ public void testNotStarted() throws Exception {
+ RouteReifier.adviceWith(context.getRouteDefinition("foo"), context, new AdviceWithRouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ weaveAddLast().to("mock:result");
+ }
+ });
+
+ getMockEndpoint("mock:result").expectedMessageCount(1);
+
+ try {
+ template.sendBody("direct:start", "Hello World");
+ fail("Should throw exception");
+ } catch (CamelExecutionException e) {
+ assertIsInstanceOf(RejectedExecutionException.class, e.getCause());
+ }
+
+ // start Camel
+ context.start();
+
+ template.sendBody("direct:start", "Bye World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RoutesBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").routeId("foo")
+ .to("log:foo");
+ }
+ };
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/AsyncSendMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/AsyncSendMockTest.java
new file mode 100644
index 0000000..f1f8ca9
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/AsyncSendMockTest.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.support.DefaultExchange;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class AsyncSendMockTest extends CamelTestSupport {
+ @Override
+ public String isMockEndpoints() {
+ return "seda*";
+ }
+
+ @Test
+ public void testmakeAsyncApiCall() {
+ try {
+ getMockEndpoint("mock:seda:start").expectedHeaderReceived("username", "admin123");
+ getMockEndpoint("mock:seda:start").expectedBodiesReceived("Hello");
+ DefaultExchange dfex = new DefaultExchange(context);
+ dfex.getIn().setHeader("username", "admin123");
+ dfex.getIn().setHeader("password", "admin");
+ dfex.getIn().setBody("Hello");
+ template.asyncSend("seda:start", dfex);
+ assertMockEndpointsSatisfied();
+ } catch (Exception e) {
+ e.printStackTrace();
+ assertTrue(false, "Failed to make async call to api");
+ }
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugJUnit5Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugJUnit5Test.java
new file mode 100644
index 0000000..0d6c600
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugJUnit5Test.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+public class DebugJUnit5Test extends CamelTestSupport {
+
+ // START SNIPPET: e1
+ @Override
+ public boolean isUseDebugger() {
+ // must enable debugger
+ return true;
+ }
+
+ @Override
+ protected void debugBefore(Exchange exchange, Processor processor,
+ ProcessorDefinition<?> definition, String id, String shortName) {
+ // this method is invoked before we are about to enter the given processor
+ // from your Java editor you can just add a breakpoint in the code line below
+ log.info("Before " + definition + " with body " + exchange.getIn().getBody());
+ }
+ // END SNIPPET: e1
+
+ @Test
+ public void testDebugger() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(1);
+ getMockEndpoint("mock:b").expectedMessageCount(1);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testTwo() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(2);
+ getMockEndpoint("mock:b").expectedMessageCount(2);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+ template.sendBody("direct:start", "Camel");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ }
+
+ // START SNIPPET: e2
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // this is the route we want to debug
+ from("direct:start")
+ .to("mock:a")
+ .transform(body().prepend("Hello "))
+ .to("mock:b");
+ }
+ };
+ }
+ // END SNIPPET: e2
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugNoLazyTypeConverterTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugNoLazyTypeConverterTest.java
new file mode 100644
index 0000000..0aac087
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugNoLazyTypeConverterTest.java
@@ -0,0 +1,91 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+public class DebugNoLazyTypeConverterTest extends CamelTestSupport {
+
+ @Override
+ protected boolean isLazyLoadingTypeConverter() {
+ return false;
+ }
+
+ // START SNIPPET: e1
+ @Override
+ public boolean isUseDebugger() {
+ // must enable debugger
+ return true;
+ }
+
+ @Override
+ protected void debugBefore(Exchange exchange, Processor processor,
+ ProcessorDefinition<?> definition, String id, String shortName) {
+ // this method is invoked before we are about to enter the given processor
+ // from your Java editor you can just add a breakpoint in the code line below
+ log.info("Before " + definition + " with body " + exchange.getIn().getBody());
+ }
+ // END SNIPPET: e1
+
+ @Test
+ public void testDebugger() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(1);
+ getMockEndpoint("mock:b").expectedMessageCount(1);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testTwo() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(2);
+ getMockEndpoint("mock:b").expectedMessageCount(2);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+ template.sendBody("direct:start", "Camel");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ }
+
+ // START SNIPPET: e2
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // this is the route we want to debug
+ from("direct:start")
+ .to("mock:a")
+ .transform(body().prepend("Hello "))
+ .to("mock:b");
+ }
+ };
+ }
+ // END SNIPPET: e2
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugTest.java
new file mode 100644
index 0000000..401bdac
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/DebugTest.java
@@ -0,0 +1,86 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+public class DebugTest extends CamelTestSupport {
+
+ // START SNIPPET: e1
+ @Override
+ public boolean isUseDebugger() {
+ // must enable debugger
+ return true;
+ }
+
+ @Override
+ protected void debugBefore(Exchange exchange, Processor processor,
+ ProcessorDefinition<?> definition, String id, String shortName) {
+ // this method is invoked before we are about to enter the given processor
+ // from your Java editor you can just add a breakpoint in the code line below
+ log.info("Before " + definition + " with body " + exchange.getIn().getBody());
+ }
+ // END SNIPPET: e1
+
+ @Test
+ public void testDebugger() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(1);
+ getMockEndpoint("mock:b").expectedMessageCount(1);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testTwo() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(2);
+ getMockEndpoint("mock:b").expectedMessageCount(2);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+ template.sendBody("direct:start", "Camel");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ }
+
+ // START SNIPPET: e2
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // this is the route we want to debug
+ from("direct:start")
+ .to("mock:a")
+ .transform(body().prepend("Hello "))
+ .to("mock:b");
+ }
+ };
+ }
+ // END SNIPPET: e2
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterCreateCamelContextPerClassTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterCreateCamelContextPerClassTest.java
new file mode 100644
index 0000000..37144bc
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterCreateCamelContextPerClassTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests filtering using Camel Test
+ */
+// START SNIPPET: example
+public class FilterCreateCamelContextPerClassTest extends CamelTestSupport {
+
+ @Override
+ public boolean isCreateCamelContextPerClass() {
+ // we override this method and return true, to tell Camel test-kit that
+ // it should only create CamelContext once (per class), so we will
+ // re-use the CamelContext between each test method in this class
+ return true;
+ }
+
+ @Test
+ public void testSendMatchingMessage() throws Exception {
+ String expectedBody = "<matched/>";
+
+ getMockEndpoint("mock:result").expectedBodiesReceived(expectedBody);
+
+ template.sendBodyAndHeader("direct:start", expectedBody, "foo", "bar");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Test
+ public void testSendNotMatchingMessage() throws Exception {
+ getMockEndpoint("mock:result").expectedMessageCount(0);
+
+ template.sendBodyAndHeader("direct:start", "<notMatched/>", "foo", "notMatchedHeaderValue");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
+ }
+ };
+ }
+}
\ No newline at end of file
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterFluentTemplateTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterFluentTemplateTest.java
new file mode 100644
index 0000000..e4cef04
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterFluentTemplateTest.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.FluentProducerTemplate;
+import org.apache.camel.Produce;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests filtering using Camel Test
+ */
+// START SNIPPET: example
+// tag::example[]
+public class FilterFluentTemplateTest extends CamelTestSupport {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint resultEndpoint;
+
+ @Produce("direct:start")
+ protected FluentProducerTemplate fluentTemplate;
+
+ @Override
+ public boolean isDumpRouteCoverage() {
+ return true;
+ }
+
+ @Test
+ public void testSendMatchingMessage() throws Exception {
+ String expectedBody = "<matched/>";
+
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+
+ fluentTemplate.withBody(expectedBody).withHeader("foo", "bar").send();
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testSendNotMatchingMessage() throws Exception {
+ resultEndpoint.expectedMessageCount(0);
+
+ fluentTemplate.withBody("<notMatched/>").withHeader("foo", "notMatchedHeaderValue").send();
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
+ }
+ };
+ }
+}
+// end::example[]
+// END SNIPPET: example
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterJUnit5Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterJUnit5Test.java
new file mode 100644
index 0000000..e946d6b
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterJUnit5Test.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests filtering using Camel Test
+ */
+// START SNIPPET: example
+public class FilterJUnit5Test extends CamelTestSupport {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint resultEndpoint;
+
+ @Produce("direct:start")
+ protected ProducerTemplate template;
+
+ @Test
+ public void testSendMatchingMessage() throws Exception {
+ String expectedBody = "<matched/>";
+
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+
+ template.sendBodyAndHeader(expectedBody, "foo", "bar");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testSendNotMatchingMessage() throws Exception {
+ resultEndpoint.expectedMessageCount(0);
+
+ template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
+ }
+ };
+ }
+
+}
+// END SNIPPET: example
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterTest.java
new file mode 100644
index 0000000..a2455ce
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/FilterTest.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Tests filtering using Camel Test
+ */
+// START SNIPPET: example
+// tag::example[]
+public class FilterTest extends CamelTestSupport {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint resultEndpoint;
+
+ @Produce("direct:start")
+ protected ProducerTemplate template;
+
+ @Override
+ public boolean isDumpRouteCoverage() {
+ return true;
+ }
+
+ @Test
+ public void testSendMatchingMessage() throws Exception {
+ String expectedBody = "<matched/>";
+
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+
+ template.sendBodyAndHeader(expectedBody, "foo", "bar");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testSendNotMatchingMessage() throws Exception {
+ resultEndpoint.expectedMessageCount(0);
+
+ template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
+ }
+ };
+ }
+}
+// end::example[]
+// END SNIPPET: example
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsAndSkipJUnit5Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsAndSkipJUnit5Test.java
new file mode 100644
index 0000000..11c4bea
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsAndSkipJUnit5Test.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.seda.SedaEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+// START SNIPPET: e1
+// tag::e1[]
+public class IsMockEndpointsAndSkipJUnit5Test extends CamelTestSupport {
+
+ @Override
+ public String isMockEndpointsAndSkip() {
+ // override this method and return the pattern for which endpoints to mock,
+ // and skip sending to the original endpoint.
+ return "direct:foo";
+ }
+
+ @Test
+ public void testMockEndpointAndSkip() throws Exception {
+ // notice we have automatic mocked the direct:foo endpoints and the name of the endpoints is "mock:uri"
+ getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:direct:foo").expectedMessageCount(1);
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+
+ // the message was not send to the direct:foo route and thus not sent to the seda endpoint
+ SedaEndpoint seda = context.getEndpoint("seda:foo", SedaEndpoint.class);
+ assertEquals(0, seda.getCurrentQueueSize());
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").to("direct:foo").to("mock:result");
+
+ from("direct:foo").transform(constant("Bye World")).to("seda:foo");
+ }
+ };
+ }
+}
+// end::e1[]
+// END SNIPPET: e1
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsFileTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsFileTest.java
new file mode 100644
index 0000000..6bedaa2
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsFileTest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+import org.apache.camel.Exchange;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class IsMockEndpointsFileTest extends CamelTestSupport {
+
+ @Override
+ @BeforeEach
+ public void setUp() throws Exception {
+ deleteDirectory("target/input");
+ deleteDirectory("target/messages");
+ super.setUp();
+ }
+
+ @Override
+ public String isMockEndpoints() {
+ // override this method and return the pattern for which endpoints to mock.
+ return "file:target*";
+ }
+
+ @Test
+ public void testMockFileEndpoints() throws Exception {
+ // notice we have automatic mocked all endpoints and the name of the endpoints is "mock:uri"
+ MockEndpoint camel = getMockEndpoint("mock:file:target/messages/camel");
+ camel.expectedMessageCount(1);
+
+ MockEndpoint other = getMockEndpoint("mock:file:target/messages/others");
+ other.expectedMessageCount(1);
+
+ template.sendBodyAndHeader("file:target/input", "Hello Camel", Exchange.FILE_NAME, "camel.txt");
+ template.sendBodyAndHeader("file:target/input", "Hello World", Exchange.FILE_NAME, "world.txt");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("file:target/input")
+ .choice()
+ .when(bodyAs(String.class).contains("Camel")).to("file:target/messages/camel")
+ .otherwise().to("file:target/messages/others");
+ }
+ };
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsJUnit5Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsJUnit5Test.java
new file mode 100644
index 0000000..e8a9e27
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsJUnit5Test.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+// START SNIPPET: e1
+// tag::e1[]
+public class IsMockEndpointsJUnit5Test extends CamelTestSupport {
+
+ @Override
+ public String isMockEndpoints() {
+ // override this method and return the pattern for which endpoints to mock.
+ // use * to indicate all
+ return "*";
+ }
+
+ @Test
+ public void testMockAllEndpoints() throws Exception {
+ // notice we have automatic mocked all endpoints and the name of the endpoints is "mock:uri"
+ getMockEndpoint("mock:direct:start").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:direct:foo").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:log:foo").expectedBodiesReceived("Bye World");
+ getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+
+ // additional test to ensure correct endpoints in registry
+ assertNotNull(context.hasEndpoint("direct:start"));
+ assertNotNull(context.hasEndpoint("direct:foo"));
+ assertNotNull(context.hasEndpoint("log:foo"));
+ assertNotNull(context.hasEndpoint("mock:result"));
+ // all the endpoints was mocked
+ assertNotNull(context.hasEndpoint("mock:direct:start"));
+ assertNotNull(context.hasEndpoint("mock:direct:foo"));
+ assertNotNull(context.hasEndpoint("mock:log:foo"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").to("direct:foo").to("log:foo").to("mock:result");
+
+ from("direct:foo").transform(constant("Bye World"));
+ }
+ };
+ }
+}
+// end::e1[]
+// END SNIPPET: e1
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsTest.java
new file mode 100644
index 0000000..9bc4707
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsTest.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+public class IsMockEndpointsTest extends CamelTestSupport {
+
+ @Override
+ public String isMockEndpoints() {
+ return "*";
+ }
+
+ @Test
+ public void testMockAllEndpoints() throws Exception {
+ getMockEndpoint("mock:direct:start").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:direct:foo").expectedBodiesReceived("Hello World");
+ getMockEndpoint("mock:log:foo").expectedBodiesReceived("Bye World");
+ getMockEndpoint("mock:result").expectedBodiesReceived("Bye World");
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+
+ // additional test to ensure correct endpoints in registry
+ assertNotNull(context.hasEndpoint("direct:start"));
+ assertNotNull(context.hasEndpoint("direct:foo"));
+ assertNotNull(context.hasEndpoint("log:foo"));
+ assertNotNull(context.hasEndpoint("mock:result"));
+ // all the endpoints was mocked
+ assertNotNull(context.hasEndpoint("mock:direct:start"));
+ assertNotNull(context.hasEndpoint("mock:direct:foo"));
+ assertNotNull(context.hasEndpoint("mock:log:foo"));
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:start").to("direct:foo").to("log:foo").to("mock:result");
+
+ from("direct:foo").transform(constant("Bye World"));
+ }
+ };
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MockEndpointFailNoHeaderTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MockEndpointFailNoHeaderTest.java
new file mode 100644
index 0000000..8746df2
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MockEndpointFailNoHeaderTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.Test;
+
+public class MockEndpointFailNoHeaderTest extends CamelTestSupport {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint resultEndpoint;
+
+ @Produce("direct:start")
+ protected ProducerTemplate template;
+
+ @Override
+ public boolean isDumpRouteCoverage() {
+ return true;
+ }
+
+ @Test
+ public void withHeaderTestCase() throws InterruptedException {
+ String expectedBody = "<matched/>";
+ resultEndpoint.expectedHeaderReceived("foo", "bar");
+ template.sendBodyAndHeader(expectedBody, "foo", "bar");
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void noHeaderTestCase() throws InterruptedException {
+ resultEndpoint.expectedHeaderReceived("foo", "bar");
+ resultEndpoint.setResultWaitTime(1); // speedup test
+ resultEndpoint.assertIsNotSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").filter(header("foo").isEqualTo("bar")).to("mock:result");
+ }
+ };
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java
new file mode 100644
index 0000000..95d7263
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.Produce;
+
+/**
+ *
+ */
+public class MyProduceBean {
+
+ @Produce("mock:result")
+ MySender sender;
+
+ public void doSomething(String body) {
+ sender.send(body);
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java
new file mode 100644
index 0000000..0188296
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+/**
+ *
+ */
+public interface MySender {
+
+ void send(String body);
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
similarity index 55%
copy from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
copy to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
index 33987ac..0b7969b 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
@@ -14,39 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-@CamelTest
-public class SimpleMockTest {
+/**
+ *
+ */
+public class ProduceBeanTest extends CamelTestSupport {
@Test
- public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
- MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
- mockResult.expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- MockEndpoint.assertIsSatisfied(ctx);
- }
+ public void testProduceBean() throws Exception {
+ getMockEndpoint("mock:result").expectedMessageCount(1);
- /* Same test is shorter with junit4
- @Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
template.sendBody("direct:start", "Hello World");
+
assertMockEndpointsSatisfied();
- }*/
+ }
- protected RoutesBuilder createRouteBuilder() throws Exception {
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("mock:result");
+ from("direct:start")
+ .bean(MyProduceBean.class, "doSomething");
}
};
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/RouteBuilderConfigureExceptionTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/RouteBuilderConfigureExceptionTest.java
new file mode 100644
index 0000000..46954b6
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/RouteBuilderConfigureExceptionTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.Predicate;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+public class RouteBuilderConfigureExceptionTest extends CamelTestSupport {
+
+ private Predicate iAmNull;
+
+ @Override
+ @BeforeEach
+ public void setUp() throws Exception {
+ try {
+ super.setUp();
+ fail("Should have thrown exception");
+ } catch (Exception e) {
+ // expected
+ }
+ }
+
+ @Test
+ public void testFoo() throws Exception {
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("direct:start").choice().when(iAmNull).to("mock:dead");
+ }
+ };
+ }
+}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/RouteProcessorDumpRouteCoverageTest.java
similarity index 54%
copy from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
copy to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/RouteProcessorDumpRouteCoverageTest.java
index 33987ac..53150c0 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/RouteProcessorDumpRouteCoverageTest.java
@@ -14,40 +14,46 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
-import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
-@CamelTest
-public class SimpleMockTest {
+import static org.junit.jupiter.api.Assertions.assertEquals;
- @Test
- public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
- MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
- mockResult.expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- MockEndpoint.assertIsSatisfied(ctx);
+public class RouteProcessorDumpRouteCoverageTest extends CamelTestSupport {
+
+ @Override
+ public boolean isDumpRouteCoverage() {
+ return true;
}
- /* Same test is shorter with junit4
@Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- assertMockEndpointsSatisfied();
- }*/
+ public void testProcessorJunit5() throws Exception {
+ String out = template.requestBody("direct:start", "Hello World", String.class);
+ assertEquals("Bye World", out);
+ }
+ @Override
+ @AfterEach
+ public void tearDown() throws Exception {
+ super.tearDown();
+ // should create that file when test is done
+ assertFileExists("target/camel-route-coverage/RouteProcessorDumpRouteCoverageTest-testProcessorJunit5.xml");
+ }
+
+ @Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("mock:result");
+ from("direct:start")
+ .process(exchange -> exchange.getOut().setBody("Bye World"));
}
};
}
+
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockEndpointsTest.java
similarity index 58%
copy from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
copy to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockEndpointsTest.java
index 33987ac..6f32ff8 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockEndpointsTest.java
@@ -14,40 +14,39 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
-import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-@CamelTest
-public class SimpleMockTest {
+public class SimpleMockEndpointsTest extends CamelTestSupport {
- @Test
- public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
- MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
- mockResult.expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- MockEndpoint.assertIsSatisfied(ctx);
+ @Override
+ public String isMockEndpointsAndSkip() {
+ return "seda:queue";
}
- /* Same test is shorter with junit4
@Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
+ public void testMockAndSkip() throws Exception {
+ getMockEndpoint("mock:seda:queue").expectedBodiesReceived("Bye Camel");
+
+ template.sendBody("seda:start", "Camel");
+
assertMockEndpointsSatisfied();
- }*/
+ }
+ @Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("mock:result");
+ from("seda:start")
+ .transform(simple("Bye ${body}"))
+ .to("seda:queue");
}
};
}
+
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
similarity index 67%
copy from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
copy to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
index 33987ac..beaa4c9 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
@@ -14,40 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
-import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-@CamelTest
-public class SimpleMockTest {
+public class SimpleMockTest extends CamelTestSupport {
@Test
- public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
- MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
- mockResult.expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- MockEndpoint.assertIsSatisfied(ctx);
- }
-
- /* Same test is shorter with junit4
- @Test
public void testMock() throws Exception {
getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
+
template.sendBody("direct:start", "Hello World");
+
assertMockEndpointsSatisfied();
- }*/
+ }
+ @Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("mock:result");
+ from("direct:start")
+ .to("mock:result");
}
};
}
+
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockUsingExtensionTest.java
similarity index 83%
copy from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
copy to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockUsingExtensionTest.java
index 33987ac..9b8d2d2 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockUsingExtensionTest.java
@@ -14,17 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.test.junit5.CamelTest;
import org.junit.jupiter.api.Test;
@CamelTest
-public class SimpleMockTest {
+public class SimpleMockUsingExtensionTest {
@Test
public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
@@ -34,14 +35,6 @@ public class SimpleMockTest {
MockEndpoint.assertIsSatisfied(ctx);
}
- /* Same test is shorter with junit4
- @Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- assertMockEndpointsSatisfied();
- }*/
-
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleNotifyBuilderTest.java
similarity index 56%
copy from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
copy to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleNotifyBuilderTest.java
index 33987ac..ba91a1a 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleNotifyBuilderTest.java
@@ -14,40 +14,46 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
+
+import java.util.concurrent.TimeUnit;
-import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.NotifyBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-@CamelTest
-public class SimpleMockTest {
+import static org.junit.jupiter.api.Assertions.assertTrue;
- @Test
- public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
- MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
- mockResult.expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- MockEndpoint.assertIsSatisfied(ctx);
- }
+public class SimpleNotifyBuilderTest extends CamelTestSupport {
- /* Same test is shorter with junit4
@Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- assertMockEndpointsSatisfied();
- }*/
+ public void testNotifyBuilder() throws Exception {
+ NotifyBuilder notify = new NotifyBuilder(context)
+ .from("seda:start")
+ .wereSentTo("seda:queue")
+ .whenDone(10)
+ .create();
+
+ for (int i = 0; i < 10; i++) {
+ template.sendBody("seda:start", "Camel" + i);
+ }
+ boolean matches = notify.matches(10, TimeUnit.SECONDS);
+ assertTrue(matches);
+ }
+
+ @Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("mock:result");
+ from("seda:start")
+ .transform(simple("Bye ${body}"))
+ .to("seda:queue");
}
};
}
+
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleWeaveAddMockLastTest.java
similarity index 55%
rename from components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleWeaveAddMockLastTest.java
index 33987ac..aaf8800 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/junit5/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/SimpleWeaveAddMockLastTest.java
@@ -14,40 +14,48 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.junit5;
+package org.apache.camel.test.junit5.patterns;
-import org.apache.camel.ProducerTemplate;
import org.apache.camel.RoutesBuilder;
+import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.model.ModelCamelContext;
+import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.test.junit5.CamelTestSupport;
import org.junit.jupiter.api.Test;
-@CamelTest
-public class SimpleMockTest {
+public class SimpleWeaveAddMockLastTest extends CamelTestSupport {
- @Test
- public void testMock(ProducerTemplate template, ModelCamelContext ctx) throws Exception {
- MockEndpoint mockResult = ctx.getEndpoint("mock:result", MockEndpoint.class);
- mockResult.expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
- MockEndpoint.assertIsSatisfied(ctx);
+ public boolean isUseAdviceWith() {
+ return true;
}
- /* Same test is shorter with junit4
@Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
- template.sendBody("direct:start", "Hello World");
+ public void testWeaveAddMockLast() throws Exception {
+ RouteReifier.adviceWith(context.getRouteDefinitions().get(0), context, new AdviceWithRouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ weaveAddLast().to("mock:result");
+ }
+ });
+ context.start();
+
+ getMockEndpoint("mock:result").expectedBodiesReceived("Bye Camel");
+
+ template.sendBody("seda:start", "Camel");
+
assertMockEndpointsSatisfied();
- }*/
+ }
+ @Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start").to("mock:result");
+ from("seda:start")
+ .transform(simple("Bye ${body}"))
+ .to("seda:queue");
}
};
}
+
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/UseOverridePropertiesWithPropertiesComponentTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
new file mode 100644
index 0000000..d4a4719
--- /dev/null
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit5/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import java.util.Properties;
+
+import org.apache.camel.builder.AdviceWithRouteBuilder;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.reifier.RouteReifier;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class UseOverridePropertiesWithPropertiesComponentTest extends CamelTestSupport {
+
+ @Override
+ public boolean isUseAdviceWith() {
+ return true;
+ }
+
+ @BeforeEach
+ public void doSomethingBefore() throws Exception {
+ AdviceWithRouteBuilder mocker = new AdviceWithRouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ replaceFromWith("direct:sftp");
+
+ interceptSendToEndpoint("file:*")
+ .skipSendToOriginalEndpoint()
+ .to("mock:file");
+ }
+ };
+ RouteReifier.adviceWith(context.getRouteDefinition("myRoute"), context, mocker);
+ }
+
+ @Override
+ protected Properties useOverridePropertiesWithPropertiesComponent() {
+ Properties pc = new Properties();
+ pc.put("ftp.username", "scott");
+ pc.put("ftp.password", "tiger");
+ return pc;
+ }
+
+ @Test
+ public void testOverride() throws Exception {
+ context.start();
+
+ getMockEndpoint("mock:file").expectedMessageCount(1);
+
+ template.sendBody("direct:sftp", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() {
+ return new RouteBuilder() {
+ public void configure() {
+ from("ftp:somepath?username={{ftp.username}}&password={{ftp.password}}").routeId("myRoute")
+ .to("file:target/out");
+ }
+ };
+ }
+}
[camel] 01/09: CAMEL-13342: Created CamelTest annotation and move
existing tests to **test/junit4**
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit afced8d2ef32a4d9c009bad9d6685fdde6b2e7d9
Author: aldettinger <al...@gmail.com>
AuthorDate: Wed Jun 5 14:11:35 2019 +0200
CAMEL-13342: Created CamelTest annotation and move existing tests to **test/junit4**
---
components/camel-test/pom.xml | 5 +++++
.../org/apache/camel/test/junit5/CamelTest.java} | 20 ++++++++------------
.../patterns/AdviceWithNotStartedTest.java | 2 +-
.../{ => junit4}/patterns/AsyncSendMockTest.java | 2 +-
.../test/{ => junit4}/patterns/DebugJUnit4Test.java | 2 +-
.../patterns/DebugNoLazyTypeConverterTest.java | 2 +-
.../camel/test/{ => junit4}/patterns/DebugTest.java | 2 +-
.../FilterCreateCamelContextPerClassTest.java | 2 +-
.../patterns/FilterFluentTemplateTest.java | 2 +-
.../test/{ => junit4}/patterns/FilterJUnit4Test.java | 2 +-
.../camel/test/{ => junit4}/patterns/FilterTest.java | 2 +-
.../patterns/IsMockEndpointsAndSkipJUnit4Test.java | 2 +-
.../patterns/IsMockEndpointsFileTest.java | 2 +-
.../patterns/IsMockEndpointsJUnit4Test.java | 2 +-
.../{ => junit4}/patterns/IsMockEndpointsTest.java | 2 +-
.../patterns/MockEndpointFailNoHeaderTest.java | 2 +-
.../test/{ => junit4}/patterns/MyProduceBean.java | 2 +-
.../camel/test/{ => junit4}/patterns/MySender.java | 2 +-
.../test/{ => junit4}/patterns/ProduceBeanTest.java | 2 +-
.../patterns/RouteBuilderConfigureExceptionTest.java | 2 +-
.../RouteProcessorDumpRouteCoverageTest.java | 2 +-
.../patterns/SimpleMockEndpointsTest.java | 2 +-
.../test/{ => junit4}/patterns/SimpleMockTest.java | 2 +-
.../patterns/SimpleNotifyBuilderTest.java | 2 +-
.../patterns/SimpleWeaveAddMockLastTest.java | 2 +-
...verridePropertiesWithPropertiesComponentTest.java | 2 +-
26 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/components/camel-test/pom.xml b/components/camel-test/pom.xml
index 2e70437..c3485f4 100644
--- a/components/camel-test/pom.xml
+++ b/components/camel-test/pom.xml
@@ -54,6 +54,11 @@
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <version>5.5.0-M1</version>
+ </dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MyProduceBean.java b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java
similarity index 73%
copy from components/camel-test/src/test/java/org/apache/camel/test/patterns/MyProduceBean.java
copy to components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java
index d8864c9..05ed250 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MyProduceBean.java
+++ b/components/camel-test/src/main/java/org/apache/camel/test/junit5/CamelTest.java
@@ -14,19 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit5;
-import org.apache.camel.Produce;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
-/**
- *
- */
-public class MyProduceBean {
-
- @Produce("mock:result")
- MySender sender;
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface CamelTest {
- public void doSomething(String body) {
- sender.send(body);
- }
}
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/AdviceWithNotStartedTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/AdviceWithNotStartedTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/AdviceWithNotStartedTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/AdviceWithNotStartedTest.java
index bcbc0e4..2d792c4 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/AdviceWithNotStartedTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/AdviceWithNotStartedTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import java.util.concurrent.RejectedExecutionException;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/AsyncSendMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/AsyncSendMockTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/AsyncSendMockTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/AsyncSendMockTest.java
index 48d818d..4e37d70 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/AsyncSendMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/AsyncSendMockTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.support.DefaultExchange;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugJUnit4Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugJUnit4Test.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugJUnit4Test.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugJUnit4Test.java
index 6aa7524..7b28a24 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugJUnit4Test.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugJUnit4Test.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugNoLazyTypeConverterTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugNoLazyTypeConverterTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugNoLazyTypeConverterTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugNoLazyTypeConverterTest.java
index 31e8938..763123d 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugNoLazyTypeConverterTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugNoLazyTypeConverterTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugTest.java
index c7b7466..9e31817 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/DebugTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/DebugTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterCreateCamelContextPerClassTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterCreateCamelContextPerClassTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterCreateCamelContextPerClassTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterCreateCamelContextPerClassTest.java
index 0392f0f..d9ce4a2 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterCreateCamelContextPerClassTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterCreateCamelContextPerClassTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterFluentTemplateTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterFluentTemplateTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterFluentTemplateTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterFluentTemplateTest.java
index 913ecbe..72df15d 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterFluentTemplateTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterFluentTemplateTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.EndpointInject;
import org.apache.camel.FluentProducerTemplate;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterJUnit4Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterJUnit4Test.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterJUnit4Test.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterJUnit4Test.java
index 9213e5b..54386b9 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterJUnit4Test.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterJUnit4Test.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterTest.java
index 8ad2636..aa13656 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/FilterTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/FilterTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsAndSkipJUnit4Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsAndSkipJUnit4Test.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsAndSkipJUnit4Test.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsAndSkipJUnit4Test.java
index da82ca0..8e2a91a 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsAndSkipJUnit4Test.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsAndSkipJUnit4Test.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.seda.SedaEndpoint;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsFileTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsFileTest.java
index 9df144b..82b08c9 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsFileTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsFileTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsJUnit4Test.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsJUnit4Test.java
index d8cf4c0..d8cfbaa 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsJUnit4Test.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsJUnit4Test.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsTest.java
index e3bcb9e..ed3288b 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/IsMockEndpointsTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/IsMockEndpointsTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MockEndpointFailNoHeaderTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MockEndpointFailNoHeaderTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/MockEndpointFailNoHeaderTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MockEndpointFailNoHeaderTest.java
index c878091..9b341eb 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MockEndpointFailNoHeaderTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MockEndpointFailNoHeaderTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.EndpointInject;
import org.apache.camel.Produce;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MyProduceBean.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MyProduceBean.java
similarity index 95%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/MyProduceBean.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MyProduceBean.java
index d8864c9..696b6ea 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MyProduceBean.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MyProduceBean.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.Produce;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MySender.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MySender.java
similarity index 94%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/MySender.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MySender.java
index 0319c98..c68a1c6 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/MySender.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/MySender.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
/**
*
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/ProduceBeanTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/ProduceBeanTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/ProduceBeanTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/ProduceBeanTest.java
index 2050e6c..bb49119 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/ProduceBeanTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/ProduceBeanTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/RouteBuilderConfigureExceptionTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/RouteBuilderConfigureExceptionTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/RouteBuilderConfigureExceptionTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/RouteBuilderConfigureExceptionTest.java
index 033d64c..7d2c456 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/RouteBuilderConfigureExceptionTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/RouteBuilderConfigureExceptionTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.Predicate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/RouteProcessorDumpRouteCoverageTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/RouteProcessorDumpRouteCoverageTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/RouteProcessorDumpRouteCoverageTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/RouteProcessorDumpRouteCoverageTest.java
index 675c14e..6bfbd6a 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/RouteProcessorDumpRouteCoverageTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/RouteProcessorDumpRouteCoverageTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.test.junit4.CamelTestSupport;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleMockEndpointsTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleMockEndpointsTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleMockEndpointsTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleMockEndpointsTest.java
index 786d972..ad66ca0 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleMockEndpointsTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleMockEndpointsTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleMockTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleMockTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleMockTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleMockTest.java
index c9b89aa..1bbd710 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleMockTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleMockTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleNotifyBuilderTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleNotifyBuilderTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleNotifyBuilderTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleNotifyBuilderTest.java
index e8640ee..577587b 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleNotifyBuilderTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleNotifyBuilderTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import java.util.concurrent.TimeUnit;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleWeaveAddMockLastTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleWeaveAddMockLastTest.java
similarity index 97%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleWeaveAddMockLastTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleWeaveAddMockLastTest.java
index 3a34b94..878b31d 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/SimpleWeaveAddMockLastTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/SimpleWeaveAddMockLastTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.AdviceWithRouteBuilder;
diff --git a/components/camel-test/src/test/java/org/apache/camel/test/patterns/UseOverridePropertiesWithPropertiesComponentTest.java b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
similarity index 98%
rename from components/camel-test/src/test/java/org/apache/camel/test/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
rename to components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
index fbcba31..ac72996 100644
--- a/components/camel-test/src/test/java/org/apache/camel/test/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
+++ b/components/camel-test/src/test/java/org/apache/camel/test/junit4/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.test.patterns;
+package org.apache.camel.test.junit4.patterns;
import java.util.Properties;
[camel] 09/09: CAMEL-13342: Implemented a first version of a
proof-of-concept for camel-test-spring/SprintBootTest with JUnit 5
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit de6f06d87d0dbd1676a060b37e1b6843ce1e0b79
Author: aldettinger <al...@gmail.com>
AuthorDate: Wed Jul 24 16:35:27 2019 +0200
CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SprintBootTest with JUnit 5
---
.../spring/boot/mockendpoints/AdviceWithTest.java | 11 ++++----
.../MockEndpointsAndSkipDirtiesContextTest.java | 9 +++---
.../boot/mockendpoints/MockEndpointsTest.java | 9 +++---
.../camel/spring/boot/routefilter/BarTest.java | 7 ++---
.../routefilter/FooExcludeRouteAnnotationTest.java | 9 +++---
.../camel/spring/boot/routefilter/FooTest.java | 7 ++---
.../spring/CamelSpringBootExecutionListener.java | 10 +++++++
...utionListener.java => CamelSpringBootTest.java} | 32 ++++++++++------------
...ringTestContextLoaderTestExecutionListener.java | 9 ++----
.../spring/DisableJmxTestExecutionListener.java | 10 +++++++
.../spring/StopWatchTestExecutionListener.java | 10 +++++++
11 files changed, 71 insertions(+), 52 deletions(-)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
index bea0229..c902c50 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/AdviceWithTest.java
@@ -21,17 +21,16 @@ import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
import org.apache.camel.reifier.RouteReifier;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.UseAdviceWith;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.UseAdviceWith;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertFalse;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@UseAdviceWith
@SpringBootApplication
@SpringBootTest(classes = AdviceWithTest.class)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java
index 6133451..c7ac277 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsAndSkipDirtiesContextTest.java
@@ -22,17 +22,16 @@ import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.spring.SpringRouteBuilder;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.MockEndpointsAndSkip;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.MockEndpointsAndSkip;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.annotation.DirtiesContext;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@MockEndpointsAndSkip("direct:b")
@SpringBootApplication
@SpringBootTest(classes = MockEndpointsAndSkipDirtiesContextTest.class)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java
index bacfc31..13c95e6 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/mockendpoints/MockEndpointsTest.java
@@ -19,15 +19,14 @@ package org.apache.camel.spring.boot.mockendpoints;
import org.apache.camel.CamelContext;
import org.apache.camel.FluentProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.MockEndpoints;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.MockEndpoints;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@MockEndpoints
@SpringBootApplication
@SpringBootTest(classes = MockEndpointsTest.class)
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java
index f563e8a..5d5e25a 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/BarTest.java
@@ -19,14 +19,13 @@ package org.apache.camel.spring.boot.routefilter;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@SpringBootApplication
@SpringBootTest(classes = BarTest.class,
properties = {"camel.springboot.java-routes-include-pattern=**/Bar*"})
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java
index badc9a4..288c84a 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooExcludeRouteAnnotationTest.java
@@ -19,15 +19,14 @@ package org.apache.camel.spring.boot.routefilter;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.apache.camel.test.spring.ExcludeRoutes;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.apache.camel.test.junit5.spring.ExcludeRoutes;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@SpringBootApplication()
@SpringBootTest(classes = FooTest.class)
@ExcludeRoutes({BarRoute.class, DrinkRoute.class})
diff --git a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java
index f12b309..5b69324 100644
--- a/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java
+++ b/components/camel-spring-boot/src/test/java/org/apache/camel/spring/boot/routefilter/FooTest.java
@@ -19,14 +19,13 @@ package org.apache.camel.spring.boot.routefilter;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.test.spring.CamelSpringBootRunner;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.apache.camel.test.junit5.spring.CamelSpringBootTest;
+import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-@RunWith(CamelSpringBootRunner.class)
+@CamelSpringBootTest
@SpringBootApplication()
@SpringBootTest(classes = FooTest.class,
properties = {"camel.springboot.java-routes-exclude-pattern=**/Bar*,**/Drink*"})
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
index 4192e5e..3e88a3f 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
@@ -20,6 +20,7 @@ import org.apache.camel.spring.SpringCamelContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.Ordered;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;
@@ -29,6 +30,15 @@ public class CamelSpringBootExecutionListener extends AbstractTestExecutionListe
private static final Logger LOG = LoggerFactory.getLogger(CamelSpringBootExecutionListener.class);
+ /**
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE + 3000;
+ }
+
@Override
public void prepareTestInstance(TestContext testContext) throws Exception {
LOG.info("@RunWith(CamelSpringBootRunner.class) preparing: {}", testContext.getTestClass());
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootTest.java
similarity index 50%
copy from components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
copy to components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootTest.java
index f3aaee6..7114927 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootTest.java
@@ -16,24 +16,22 @@
*/
package org.apache.camel.test.junit5.spring;
-import org.apache.camel.api.management.JmxSystemPropertyKeys;
-import org.springframework.test.context.TestContext;
-import org.springframework.test.context.support.AbstractTestExecutionListener;
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
-/**
- * Provides reset to pre-test state behavior for global enable/disable of JMX
- * support in Camel through the use of {@link DisableJmx}.
- * Tries to ensure that the pre-test value is restored.
- */
-public class DisableJmxTestExecutionListener extends AbstractTestExecutionListener {
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
- @Override
- public void afterTestClass(TestContext testContext) throws Exception {
- if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
- System.clearProperty(JmxSystemPropertyKeys.DISABLED);
- } else {
- System.setProperty(JmxSystemPropertyKeys.DISABLED, CamelSpringTestHelper.getOriginalJmxDisabled());
- }
- }
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+@ExtendWith(SpringExtension.class)
+@TestExecutionListeners(value = {CamelSpringTestContextLoaderTestExecutionListener.class, DisableJmxTestExecutionListener.class, CamelSpringBootExecutionListener.class,
+ StopWatchTestExecutionListener.class}, mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
+public @interface CamelSpringBootTest {
}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
index a749104..88e7d36 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
@@ -31,15 +31,12 @@ import org.springframework.test.context.support.AbstractTestExecutionListener;
public class CamelSpringTestContextLoaderTestExecutionListener extends AbstractTestExecutionListener {
/**
- * The default implementation returns {@link org.springframework.core.Ordered#LOWEST_PRECEDENCE},
- * thereby ensuring that custom listeners are ordered after default
- * listeners supplied by the framework. Can be overridden by subclasses
- * as necessary.
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
*/
@Override
public int getOrder() {
- //set Camel first
- return Ordered.HIGHEST_PRECEDENCE;
+ return Ordered.HIGHEST_PRECEDENCE + 1000;
}
@Override
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
index f3aaee6..10e6c74 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
@@ -17,6 +17,7 @@
package org.apache.camel.test.junit5.spring;
import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.springframework.core.Ordered;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;
@@ -27,6 +28,15 @@ import org.springframework.test.context.support.AbstractTestExecutionListener;
*/
public class DisableJmxTestExecutionListener extends AbstractTestExecutionListener {
+ /**
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE + 2000;
+ }
+
@Override
public void afterTestClass(TestContext testContext) throws Exception {
if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
index 535a7dc..e4c5115 100644
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
@@ -20,6 +20,7 @@ import org.apache.camel.util.StopWatch;
import org.apache.camel.util.TimeUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.core.Ordered;
import org.springframework.test.context.TestContext;
import org.springframework.test.context.support.AbstractTestExecutionListener;
@@ -37,6 +38,15 @@ public class StopWatchTestExecutionListener extends AbstractTestExecutionListene
return threadStopWatch.get();
}
+ /**
+ * Ensure proper order of test execution listeners.
+ * @TODO: centralize in a kind of util precedence class ?
+ */
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE + 4000;
+ }
+
@Override
public void beforeTestMethod(TestContext testContext) throws Exception {
StopWatch stopWatch = new StopWatch();
[camel] 06/09: CAMEL-13342: Implemented a first version of a
proof-of-concept for camel-testcontainers-spring with JUnit 5
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit d995abb254e892c281494d875cc0dbdab9d26e10
Author: aldettinger <al...@gmail.com>
AuthorDate: Thu Jul 11 10:12:37 2019 +0200
CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers-spring with JUnit 5
---
.../SpringConsulDefaultServiceCallRouteTest.java | 12 +-
...SpringConsulExpressionServiceCallRouteTest.java | 12 +-
.../SpringConsulRibbonServiceCallRouteTest.java | 12 +-
.../cloud/SpringConsulServiceCallRouteTest.java | 8 +-
.../junit5/spring/CamelAnnotationsHandler.java | 367 ++++++++++++++
.../spring/CamelSpringBootExecutionListener.java | 95 ++++
.../spring/CamelSpringBootJUnit4ClassRunner.java | 33 ++
.../test/junit5/spring/CamelSpringBootRunner.java | 87 ++++
.../CamelSpringDelegatingTestContextLoader.java | 138 ++++++
.../test/junit5/spring/CamelSpringRunner.java | 83 ++++
.../spring/CamelSpringTestContextLoader.java | 551 +++++++++++++++++++++
...ringTestContextLoaderTestExecutionListener.java | 50 ++
.../test/junit5/spring/CamelSpringTestHelper.java | 109 ++++
.../test/junit5/spring/CamelSpringTestSupport.java | 212 ++++++++
.../spring/CamelTestContextBootstrapper.java | 31 ++
.../camel/test/junit5/spring/DisableJmx.java | 43 ++
.../spring/DisableJmxTestExecutionListener.java | 39 ++
.../test/junit5/spring/EnableRouteCoverage.java | 41 ++
.../camel/test/junit5/spring/ExcludeRoutes.java | 44 ++
.../camel/test/junit5/spring/MockEndpoints.java | 43 ++
.../test/junit5/spring/MockEndpointsAndSkip.java | 43 ++
.../test/junit5/spring/ProvidesBreakpoint.java | 36 ++
.../test/junit5/spring/RouteCoverageDumper.java | 82 +++
.../junit5/spring/RouteCoverageEventNotifier.java | 51 ++
.../camel/test/junit5/spring/ShutdownTimeout.java | 49 ++
.../spring/StopWatchTestExecutionListener.java | 62 +++
.../camel/test/junit5/spring/UseAdviceWith.java | 49 ++
...eOverridePropertiesWithPropertiesComponent.java | 34 ++
.../spring/ContainerAwareSpringTestSupport.java | 112 +++++
.../spring/ContainerAwareSpringTestSupportIT.java | 61 +++
30 files changed, 2567 insertions(+), 22 deletions(-)
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulDefaultServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulDefaultServiceCallRouteTest.java
index e0cbcb9..bbe67f2 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulDefaultServiceCallRouteTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulDefaultServiceCallRouteTest.java
@@ -20,8 +20,8 @@ import java.util.List;
import org.apache.camel.component.ribbon.cloud.RibbonServiceLoadBalancer;
import org.apache.camel.impl.cloud.DefaultServiceCallProcessor;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -35,9 +35,9 @@ public class SpringConsulDefaultServiceCallRouteTest extends SpringConsulService
public void testServiceCallConfiguration() throws Exception {
List<DefaultServiceCallProcessor> processors = findServiceCallProcessors();
- Assert.assertFalse(processors.isEmpty());
- Assert.assertEquals(2, processors.size());
- Assert.assertFalse(processors.get(0).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
- Assert.assertFalse(processors.get(1).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
+ Assertions.assertFalse(processors.isEmpty());
+ Assertions.assertEquals(2, processors.size());
+ Assertions.assertFalse(processors.get(0).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
+ Assertions.assertFalse(processors.get(1).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
}
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulExpressionServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulExpressionServiceCallRouteTest.java
index 21995d7..f1f937f 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulExpressionServiceCallRouteTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulExpressionServiceCallRouteTest.java
@@ -20,8 +20,8 @@ import java.util.List;
import org.apache.camel.component.ribbon.cloud.RibbonServiceLoadBalancer;
import org.apache.camel.impl.cloud.DefaultServiceCallProcessor;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -35,9 +35,9 @@ public class SpringConsulExpressionServiceCallRouteTest extends SpringConsulServ
public void testServiceCallConfiguration() throws Exception {
List<DefaultServiceCallProcessor> processors = findServiceCallProcessors();
- Assert.assertFalse(processors.isEmpty());
- Assert.assertEquals(2, processors.size());
- Assert.assertFalse(processors.get(0).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
- Assert.assertFalse(processors.get(1).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
+ Assertions.assertFalse(processors.isEmpty());
+ Assertions.assertEquals(2, processors.size());
+ Assertions.assertFalse(processors.get(0).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
+ Assertions.assertFalse(processors.get(1).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
}
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulRibbonServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulRibbonServiceCallRouteTest.java
index 230d178..b8cd79b 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulRibbonServiceCallRouteTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulRibbonServiceCallRouteTest.java
@@ -20,8 +20,8 @@ import java.util.List;
import org.apache.camel.component.ribbon.cloud.RibbonServiceLoadBalancer;
import org.apache.camel.impl.cloud.DefaultServiceCallProcessor;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -35,9 +35,9 @@ public class SpringConsulRibbonServiceCallRouteTest extends SpringConsulServiceC
public void testServiceCallConfiguration() throws Exception {
List<DefaultServiceCallProcessor> processors = findServiceCallProcessors();
- Assert.assertFalse(processors.isEmpty());
- Assert.assertEquals(2, processors.size());
- Assert.assertTrue(processors.get(0).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
- Assert.assertTrue(processors.get(1).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
+ Assertions.assertFalse(processors.isEmpty());
+ Assertions.assertEquals(2, processors.size());
+ Assertions.assertTrue(processors.get(0).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
+ Assertions.assertTrue(processors.get(1).getLoadBalancer() instanceof RibbonServiceLoadBalancer);
}
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulServiceCallRouteTest.java
index 68de60c..83a4608 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulServiceCallRouteTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/SpringConsulServiceCallRouteTest.java
@@ -31,9 +31,9 @@ import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.impl.cloud.DefaultServiceCallProcessor;
import org.apache.camel.processor.ChoiceProcessor;
import org.apache.camel.processor.FilterProcessor;
-import org.apache.camel.test.testcontainers.spring.ContainerAwareSpringTestSupport;
-import org.junit.Assert;
-import org.junit.Test;
+import org.apache.camel.test.junit5.testcontainers.spring.ContainerAwareSpringTestSupport;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
public abstract class SpringConsulServiceCallRouteTest extends ContainerAwareSpringTestSupport {
@@ -130,7 +130,7 @@ public abstract class SpringConsulServiceCallRouteTest extends ContainerAwareSpr
protected List<DefaultServiceCallProcessor> findServiceCallProcessors() {
Route route = context().getRoute("scall");
- Assert.assertNotNull("ServiceCall Route should be present", route);
+ Assertions.assertNotNull(route, "ServiceCall Route should be present");
return findServiceCallProcessors(new ArrayList<>(), route.navigate());
}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelAnnotationsHandler.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelAnnotationsHandler.java
new file mode 100644
index 0000000..8bc45b2
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelAnnotationsHandler.java
@@ -0,0 +1,367 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.apache.camel.api.management.ManagedCamelContext;
+import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
+import org.apache.camel.processor.interceptor.DefaultDebugger;
+import org.apache.camel.spi.Breakpoint;
+import org.apache.camel.spi.Debugger;
+import org.apache.camel.spi.EventNotifier;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.util.CollectionStringBuffer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.core.annotation.AnnotationUtils;
+
+import static org.apache.camel.test.spring.CamelSpringTestHelper.getAllMethods;
+
+public final class CamelAnnotationsHandler {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(CamelAnnotationsHandler.class);
+
+ private CamelAnnotationsHandler() {
+ }
+
+ /**
+ * Handles @ExcludeRoutes to make it easier to exclude other routes when testing with Spring Boot.
+ *
+ * @param testClass the test class being executed
+ */
+ public static void handleExcludeRoutesForSpringBoot(Class<?> testClass) {
+ if (testClass.isAnnotationPresent(ExcludeRoutes.class)) {
+ Class[] routes = testClass.getAnnotation(ExcludeRoutes.class).value();
+ // need to setup this as a JVM system property
+ CollectionStringBuffer csb = new CollectionStringBuffer(",");
+ for (Class clazz : routes) {
+ csb.append(clazz.getName());
+ }
+ String key = "CamelTestSpringExcludeRoutes";
+ String value = csb.toString();
+
+ String exists = System.getProperty(key);
+ if (exists != null) {
+ LOGGER.warn("Cannot use @ExcludeRoutes as JVM property " + key + " has already been set.");
+ } else {
+ LOGGER.info("@ExcludeRoutes annotation found. Setting up JVM property {}={}", key, value);
+ System.setProperty(key, value);
+ }
+ }
+ }
+
+ /**
+ * Handles disabling of JMX on Camel contexts based on {@link DisableJmx}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleDisableJmx(ConfigurableApplicationContext context, Class<?> testClass) {
+ CamelSpringTestHelper.setOriginalJmxDisabledValue(System.getProperty(JmxSystemPropertyKeys.DISABLED));
+
+ if (testClass.isAnnotationPresent(DisableJmx.class)) {
+ if (testClass.getAnnotation(DisableJmx.class).value()) {
+ LOGGER.info("Disabling Camel JMX globally as DisableJmx annotation was found and disableJmx is set to true.");
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+
+ } else {
+ LOGGER.info("Enabling Camel JMX as DisableJmx annotation was found and disableJmx is set to false.");
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ }
+ } else {
+ LOGGER.info("Disabling Camel JMX globally for tests by default. Use the DisableJMX annotation to override the default setting.");
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+ }
+ }
+
+ /**
+ * Handles disabling of JMX on Camel contexts based on {@link DisableJmx}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleRouteCoverage(ConfigurableApplicationContext context, Class<?> testClass, Function testMethod) throws Exception {
+ if (testClass.isAnnotationPresent(EnableRouteCoverage.class)) {
+ System.setProperty(CamelTestSupport.ROUTE_COVERAGE_ENABLED, "true");
+
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext) throws Exception {
+ LOGGER.info("Enabling RouteCoverage");
+ EventNotifier notifier = new RouteCoverageEventNotifier(testClass.getName(), testMethod);
+ camelContext.addService(notifier, true);
+ camelContext.getManagementStrategy().addEventNotifier(notifier);
+ }
+ });
+ }
+ }
+
+ public static void handleRouteCoverageDump(ConfigurableApplicationContext context, Class<?> testClass, Function testMethod) throws Exception {
+ if (testClass.isAnnotationPresent(EnableRouteCoverage.class)) {
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext) throws Exception {
+ LOGGER.debug("Dumping RouteCoverage");
+
+ String testMethodName = (String) testMethod.apply(this);
+ RouteCoverageDumper.dumpRouteCoverage(camelContext, testClass.getName(), testMethodName);
+
+ // reset JMX statistics
+ ManagedCamelContextMBean managedCamelContext = camelContext.getExtension(ManagedCamelContext.class).getManagedCamelContext();
+ if (managedCamelContext != null) {
+ LOGGER.debug("Resetting JMX statistics for RouteCoverage");
+ managedCamelContext.reset(true);
+ }
+
+ // turn off dumping one more time by removing the event listener (which would dump as well when Camel is stopping)
+ // but this method was explicit invoked to dump such as from afterTest callbacks from JUnit.
+ RouteCoverageEventNotifier eventNotifier = camelContext.hasService(RouteCoverageEventNotifier.class);
+ if (eventNotifier != null) {
+ camelContext.getManagementStrategy().removeEventNotifier(eventNotifier);
+ camelContext.removeService(eventNotifier);
+ }
+ }
+ });
+ }
+ }
+
+ public static void handleProvidesBreakpoint(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ Collection<Method> methods = getAllMethods(testClass);
+ final List<Breakpoint> breakpoints = new LinkedList<>();
+
+ for (Method method : methods) {
+ if (AnnotationUtils.findAnnotation(method, ProvidesBreakpoint.class) != null) {
+ Class<?>[] argTypes = method.getParameterTypes();
+ if (argTypes.length != 0) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but is not a no-argument method.");
+ } else if (!Breakpoint.class.isAssignableFrom(method.getReturnType())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but does not return a Breakpoint.");
+ } else if (!Modifier.isStatic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but is not static.");
+ } else if (!Modifier.isPublic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but is not public.");
+ }
+
+ try {
+ breakpoints.add((Breakpoint) method.invoke(null));
+ } catch (Exception e) {
+ throw new RuntimeException("Method [" + method.getName()
+ + "] threw exception during evaluation.", e);
+ }
+ }
+ }
+
+ if (breakpoints.size() != 0) {
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ Debugger debugger = camelContext.getDebugger();
+ if (debugger == null) {
+ debugger = new DefaultDebugger();
+ camelContext.setDebugger(debugger);
+ }
+
+ for (Breakpoint breakpoint : breakpoints) {
+ LOGGER.info("Adding Breakpoint [{}] to CamelContext with name [{}].", breakpoint, contextName);
+ debugger.addBreakpoint(breakpoint);
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * Handles updating shutdown timeouts on Camel contexts based on {@link ShutdownTimeout}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleShutdownTimeout(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ final int shutdownTimeout;
+ final TimeUnit shutdownTimeUnit;
+ if (testClass.isAnnotationPresent(ShutdownTimeout.class)) {
+ shutdownTimeout = testClass.getAnnotation(ShutdownTimeout.class).value();
+ shutdownTimeUnit = testClass.getAnnotation(ShutdownTimeout.class).timeUnit();
+ } else {
+ shutdownTimeout = 10;
+ shutdownTimeUnit = TimeUnit.SECONDS;
+ }
+
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ LOGGER.info("Setting shutdown timeout to [{} {}] on CamelContext with name [{}].", shutdownTimeout, shutdownTimeUnit, contextName);
+ camelContext.getShutdownStrategy().setTimeout(shutdownTimeout);
+ camelContext.getShutdownStrategy().setTimeUnit(shutdownTimeUnit);
+ }
+ });
+ }
+
+ /**
+ * Handles auto-intercepting of endpoints with mocks based on {@link MockEndpoints}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleMockEndpoints(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ if (testClass.isAnnotationPresent(MockEndpoints.class)) {
+ final String mockEndpoints = testClass.getAnnotation(MockEndpoints.class).value();
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ LOGGER.info("Enabling auto mocking of endpoints matching pattern [{}] on CamelContext with name [{}].", mockEndpoints, contextName);
+ camelContext.adapt(ExtendedCamelContext.class).registerEndpointCallback(new InterceptSendToMockEndpointStrategy(mockEndpoints));
+ }
+ });
+ }
+ }
+
+ /**
+ * Handles auto-intercepting of endpoints with mocks based on {@link MockEndpointsAndSkip} and skipping the
+ * original endpoint.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleMockEndpointsAndSkip(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ if (testClass.isAnnotationPresent(MockEndpointsAndSkip.class)) {
+ final String mockEndpoints = testClass.getAnnotation(MockEndpointsAndSkip.class).value();
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ // resolve the property place holders of the mockEndpoints
+ String mockEndpointsValue = camelContext.resolvePropertyPlaceholders(mockEndpoints);
+ LOGGER.info("Enabling auto mocking and skipping of endpoints matching pattern [{}] on CamelContext with name [{}].", mockEndpointsValue, contextName);
+ camelContext.adapt(ExtendedCamelContext.class).registerEndpointCallback(new InterceptSendToMockEndpointStrategy(mockEndpointsValue, true));
+ }
+ });
+ }
+ }
+
+ /**
+ * Handles override this method to include and override properties with the Camel {@link org.apache.camel.component.properties.PropertiesComponent}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleUseOverridePropertiesWithPropertiesComponent(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ Collection<Method> methods = getAllMethods(testClass);
+ final List<Properties> properties = new LinkedList<>();
+
+ for (Method method : methods) {
+ if (AnnotationUtils.findAnnotation(method, UseOverridePropertiesWithPropertiesComponent.class) != null) {
+ Class<?>[] argTypes = method.getParameterTypes();
+ if (argTypes.length > 0) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but is not a no-argument method.");
+ } else if (!Properties.class.isAssignableFrom(method.getReturnType())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but does not return a java.util.Properties.");
+ } else if (!Modifier.isStatic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but is not static.");
+ } else if (!Modifier.isPublic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but is not public.");
+ }
+
+ try {
+ properties.add((Properties) method.invoke(null));
+ } catch (Exception e) {
+ throw new RuntimeException("Method [" + method.getName()
+ + "] threw exception during evaluation.", e);
+ }
+ }
+ }
+
+ if (properties.size() != 0) {
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+ public void execute(String contextName, SpringCamelContext camelContext) throws Exception {
+ PropertiesComponent pc = camelContext.getComponent("properties", PropertiesComponent.class);
+ Properties extra = new Properties();
+ for (Properties prop : properties) {
+ extra.putAll(prop);
+ }
+ if (!extra.isEmpty()) {
+ LOGGER.info("Using {} properties to override any existing properties on the PropertiesComponent on CamelContext with name [{}].", extra.size(), contextName);
+ pc.setOverrideProperties(extra);
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * Handles starting of Camel contexts based on {@link UseAdviceWith} and other state in the JVM.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ public static void handleCamelContextStartup(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ boolean skip = "true".equalsIgnoreCase(System.getProperty("skipStartingCamelContext"));
+ if (skip) {
+ LOGGER.info("Skipping starting CamelContext(s) as system property skipStartingCamelContext is set to be true.");
+ } else if (testClass.isAnnotationPresent(UseAdviceWith.class)) {
+ if (testClass.getAnnotation(UseAdviceWith.class).value()) {
+ LOGGER.info("Skipping starting CamelContext(s) as UseAdviceWith annotation was found and isUseAdviceWith is set to true.");
+ skip = true;
+ } else {
+ LOGGER.info("Starting CamelContext(s) as UseAdviceWith annotation was found, but isUseAdviceWith is set to false.");
+ skip = false;
+ }
+ }
+
+ if (!skip) {
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new CamelSpringTestHelper.DoToSpringCamelContextsStrategy() {
+ public void execute(String contextName,
+ SpringCamelContext camelContext) throws Exception {
+ if (!camelContext.isStarted()) {
+ LOGGER.info("Starting CamelContext with name [{}].", contextName);
+ camelContext.start();
+ } else {
+ LOGGER.debug("CamelContext with name [{}] already started.", contextName);
+ }
+ }
+ });
+ }
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
new file mode 100644
index 0000000..4192e5e
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootExecutionListener.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.spring.SpringCamelContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.test.context.TestContext;
+import org.springframework.test.context.support.AbstractTestExecutionListener;
+
+public class CamelSpringBootExecutionListener extends AbstractTestExecutionListener {
+
+ protected static ThreadLocal<ConfigurableApplicationContext> threadApplicationContext = new ThreadLocal<>();
+
+ private static final Logger LOG = LoggerFactory.getLogger(CamelSpringBootExecutionListener.class);
+
+ @Override
+ public void prepareTestInstance(TestContext testContext) throws Exception {
+ LOG.info("@RunWith(CamelSpringBootRunner.class) preparing: {}", testContext.getTestClass());
+
+ Class<?> testClass = testContext.getTestClass();
+
+ // need to prepare this before we load spring application context
+ CamelAnnotationsHandler.handleExcludeRoutesForSpringBoot(testClass);
+
+ // we are customizing the Camel context with
+ // CamelAnnotationsHandler so we do not want to start it
+ // automatically, which would happen when SpringCamelContext
+ // is added to Spring ApplicationContext, so we set the flag
+ // not to start it just yet
+ SpringCamelContext.setNoStart(true);
+ System.setProperty("skipStartingCamelContext", "true");
+ ConfigurableApplicationContext context = (ConfigurableApplicationContext) testContext.getApplicationContext();
+
+ // Post CamelContext(s) instantiation but pre CamelContext(s) start setup
+ CamelAnnotationsHandler.handleProvidesBreakpoint(context, testClass);
+ CamelAnnotationsHandler.handleShutdownTimeout(context, testClass);
+ CamelAnnotationsHandler.handleMockEndpoints(context, testClass);
+ CamelAnnotationsHandler.handleMockEndpointsAndSkip(context, testClass);
+ CamelAnnotationsHandler.handleUseOverridePropertiesWithPropertiesComponent(context, testClass);
+
+ System.clearProperty("skipStartingCamelContext");
+ SpringCamelContext.setNoStart(false);
+ }
+
+ @Override
+ public void beforeTestMethod(TestContext testContext) throws Exception {
+ LOG.info("@RunWith(CamelSpringBootRunner.class) before: {}.{}", testContext.getTestClass(), testContext.getTestMethod().getName());
+
+ Class<?> testClass = testContext.getTestClass();
+ String testName = testContext.getTestMethod().getName();
+
+ ConfigurableApplicationContext context = (ConfigurableApplicationContext) testContext.getApplicationContext();
+ threadApplicationContext.set(context);
+
+ // mark Camel to be startable again and start Camel
+ System.clearProperty("skipStartingCamelContext");
+
+ // route coverage need to know the test method
+ CamelAnnotationsHandler.handleRouteCoverage(context, testClass, s -> testName);
+
+ LOG.info("Initialized CamelSpringBootRunner now ready to start CamelContext");
+ CamelAnnotationsHandler.handleCamelContextStartup(context, testClass);
+ }
+
+ @Override
+ public void afterTestMethod(TestContext testContext) throws Exception {
+ LOG.info("@RunWith(CamelSpringBootRunner.class) after: {}.{}", testContext.getTestClass(), testContext.getTestMethod().getName());
+
+ Class<?> testClass = testContext.getTestClass();
+ String testName = testContext.getTestMethod().getName();
+
+ ConfigurableApplicationContext context = threadApplicationContext.get();
+ if (context != null && context.isRunning()) {
+ // dump route coverage for each test method so its accurate statistics
+ // even if spring application context is running (i.e. its not dirtied per test method)
+ CamelAnnotationsHandler.handleRouteCoverageDump(context, testClass, s -> testName);
+ }
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootJUnit4ClassRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootJUnit4ClassRunner.java
new file mode 100644
index 0000000..d96c903
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootJUnit4ClassRunner.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.junit.runners.model.InitializationError;
+
+/**
+ * The class {@link CamelSpringBootJUnit4ClassRunner} has been renamed to {@link CamelSpringBootRunner}
+ * which is a shorter and easier to remember name.
+ *
+ * @deprecated use {@link CamelSpringBootRunner}
+ */
+@Deprecated
+public class CamelSpringBootJUnit4ClassRunner extends CamelSpringBootRunner {
+
+ public CamelSpringBootJUnit4ClassRunner(Class<?> clazz) throws InitializationError {
+ super(clazz);
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootRunner.java
new file mode 100644
index 0000000..fbd3a2e
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringBootRunner.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.List;
+
+import org.junit.runners.model.InitializationError;
+import org.springframework.test.context.TestContextManager;
+import org.springframework.test.context.TestExecutionListener;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * An implementation bringing the functionality of {@link CamelSpringTestSupport} to
+ * Spring Boot Test based test cases. This approach allows developers to implement tests
+ * for their Spring Boot based applications/routes using the typical Spring Test conventions
+ * for test development.
+ */
+public class CamelSpringBootRunner extends SpringJUnit4ClassRunner {
+
+ public CamelSpringBootRunner(Class<?> clazz) throws InitializationError {
+ super(clazz);
+ }
+
+ /**
+ * Returns the specialized manager instance that provides tight integration between Camel testing
+ * features and Spring.
+ *
+ * @return a new instance of {@link CamelTestContextManager}.
+ */
+ @Override
+ protected TestContextManager createTestContextManager(Class<?> clazz) {
+ return new CamelTestContextManager(clazz);
+ }
+
+ /**
+ * An implementation providing additional integration between Spring Test and Camel
+ * testing features.
+ */
+ public static final class CamelTestContextManager extends TestContextManager {
+
+ public CamelTestContextManager(Class<?> testClass) {
+ super(testClass);
+
+ // turn off auto starting spring as we need to do this later
+ System.setProperty("skipStartingCamelContext", "true");
+
+ // is Camel already registered
+ if (!alreadyRegistered()) {
+ // inject Camel first, and then disable jmx and add the stop-watch
+ List<TestExecutionListener> list = getTestExecutionListeners();
+ list.add(0, new CamelSpringTestContextLoaderTestExecutionListener());
+ list.add(1, new DisableJmxTestExecutionListener());
+ list.add(2, new CamelSpringBootExecutionListener());
+ list.add(3, new StopWatchTestExecutionListener());
+ }
+ }
+
+ private boolean alreadyRegistered() {
+ List<TestExecutionListener> list = getTestExecutionListeners();
+ if (list != null) {
+ for (TestExecutionListener listener : list) {
+ if (listener instanceof CamelSpringTestContextLoaderTestExecutionListener) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringDelegatingTestContextLoader.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringDelegatingTestContextLoader.java
new file mode 100644
index 0000000..ce486e5
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringDelegatingTestContextLoader.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.reflect.Method;
+
+import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.apache.camel.spring.SpringCamelContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.support.BeanDefinitionRegistry;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigUtils;
+import org.springframework.test.context.MergedContextConfiguration;
+import org.springframework.test.context.support.DelegatingSmartContextLoader;
+
+/**
+ * CamelSpringDelegatingTestContextLoader which fixes issues in Camel's JavaConfigContextLoader. (adds support for Camel's test annotations)
+ * <br>
+ * <em>This loader can handle either classes or locations for configuring the context.</em>
+ * <br>
+ * NOTE: This TestContextLoader doesn't support the annotation of ExcludeRoutes now.
+ *
+ * @deprecated use {@link CamelSpringRunner} or {@link CamelSpringBootRunner} instead.
+ */
+@Deprecated
+public class CamelSpringDelegatingTestContextLoader extends DelegatingSmartContextLoader {
+
+ protected final Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception {
+
+ Class<?> testClass = getTestClass();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Loading ApplicationContext for merged context configuration [{}].", mergedConfig);
+ }
+
+ // Pre CamelContext(s) instantiation setup
+ CamelAnnotationsHandler.handleDisableJmx(null, testClass);
+
+ try {
+ SpringCamelContext.setNoStart(true);
+ System.setProperty("skipStartingCamelContext", "true");
+ ConfigurableApplicationContext context = (ConfigurableApplicationContext) super.loadContext(mergedConfig);
+ SpringCamelContext.setNoStart(false);
+ System.clearProperty("skipStartingCamelContext");
+ return loadContext(context, testClass);
+ } finally {
+ cleanup(testClass);
+ }
+ }
+
+ /**
+ * Performs the bulk of the Spring application context loading/customization.
+ *
+ * @param context the partially configured context. The context should have the bean definitions loaded, but nothing else.
+ * @param testClass the test class being executed
+ * @return the initialized (refreshed) Spring application context
+ *
+ * @throws Exception if there is an error during initialization/customization
+ */
+ public ApplicationContext loadContext(ConfigurableApplicationContext context, Class<?> testClass)
+ throws Exception {
+
+ AnnotationConfigUtils.registerAnnotationConfigProcessors((BeanDefinitionRegistry) context);
+
+ // Post CamelContext(s) instantiation but pre CamelContext(s) start setup
+ CamelAnnotationsHandler.handleRouteCoverage(context, testClass, s -> getTestMethod().getName());
+ CamelAnnotationsHandler.handleProvidesBreakpoint(context, testClass);
+ CamelAnnotationsHandler.handleShutdownTimeout(context, testClass);
+ CamelAnnotationsHandler.handleMockEndpoints(context, testClass);
+ CamelAnnotationsHandler.handleMockEndpointsAndSkip(context, testClass);
+ CamelAnnotationsHandler.handleUseOverridePropertiesWithPropertiesComponent(context, testClass);
+
+ // CamelContext(s) startup
+ CamelAnnotationsHandler.handleCamelContextStartup(context, testClass);
+
+ return context;
+ }
+
+ /**
+ * Cleanup/restore global state to defaults / pre-test values after the test setup
+ * is complete.
+ *
+ * @param testClass the test class being executed
+ */
+ protected void cleanup(Class<?> testClass) {
+ SpringCamelContext.setNoStart(false);
+
+ if (testClass.isAnnotationPresent(DisableJmx.class)) {
+ if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ } else {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED,
+ CamelSpringTestHelper.getOriginalJmxDisabled());
+ }
+ }
+ }
+
+ /**
+ * Returns the class under test in order to enable inspection of annotations while the
+ * Spring context is being created.
+ *
+ * @return the test class that is being executed
+ * @see CamelSpringTestHelper
+ */
+ protected Class<?> getTestClass() {
+ return CamelSpringTestHelper.getTestClass();
+ }
+
+ /**
+ * Returns the test method under test.
+ *
+ * @return the method that is being executed
+ * @see CamelSpringTestHelper
+ */
+ protected Method getTestMethod() {
+ return CamelSpringTestHelper.getTestMethod();
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringRunner.java
new file mode 100644
index 0000000..d64ce29
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringRunner.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.List;
+
+import org.junit.runners.model.InitializationError;
+import org.springframework.test.context.TestContextManager;
+import org.springframework.test.context.TestExecutionListener;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+/**
+ * An implementation bringing the functionality of {@link org.apache.camel.test.spring.CamelSpringTestSupport} to
+ * Spring Test based test cases. This approach allows developers to implement tests
+ * for their Spring based applications/routes using the typical Spring Test conventions
+ * for test development.
+ */
+public class CamelSpringRunner extends SpringJUnit4ClassRunner {
+
+ public CamelSpringRunner(Class<?> clazz) throws InitializationError {
+ super(clazz);
+ }
+
+ /**
+ * Returns the specialized manager instance that provides tight integration between Camel testing
+ * features and Spring.
+ *
+ * @return a new instance of {@link CamelTestContextManager}.
+ */
+ @Override
+ protected TestContextManager createTestContextManager(Class<?> clazz) {
+ return new CamelTestContextManager(clazz);
+ }
+
+ /**
+ * An implementation providing additional integration between Spring Test and Camel
+ * testing features.
+ */
+ public static final class CamelTestContextManager extends TestContextManager {
+
+ public CamelTestContextManager(Class<?> testClass) {
+ super(testClass);
+
+ // is Camel already registered
+ if (!alreadyRegistered()) {
+ // inject Camel first, and then disable jmx and add the stop-watch
+ List<TestExecutionListener> list = getTestExecutionListeners();
+ list.add(0, new CamelSpringTestContextLoaderTestExecutionListener());
+ list.add(1, new DisableJmxTestExecutionListener());
+ list.add(2, new StopWatchTestExecutionListener());
+ }
+ }
+
+ private boolean alreadyRegistered() {
+ List<TestExecutionListener> list = getTestExecutionListeners();
+ if (list != null) {
+ for (TestExecutionListener listener : list) {
+ if (listener instanceof CamelSpringTestContextLoaderTestExecutionListener) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java
new file mode 100644
index 0000000..99e52e0
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoader.java
@@ -0,0 +1,551 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
+import org.apache.camel.processor.interceptor.DefaultDebugger;
+import org.apache.camel.spi.Breakpoint;
+import org.apache.camel.spi.Debugger;
+import org.apache.camel.spi.EventNotifier;
+import org.apache.camel.spi.PropertiesComponent;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.ExcludingPackageScanClassResolver;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.junit5.spring.CamelSpringTestHelper.DoToSpringCamelContextsStrategy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigUtils;
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.core.annotation.AnnotationUtils;
+import org.springframework.test.context.MergedContextConfiguration;
+import org.springframework.test.context.support.AbstractContextLoader;
+import org.springframework.test.context.support.AbstractGenericContextLoader;
+import org.springframework.test.context.support.GenericXmlContextLoader;
+import org.springframework.util.StringUtils;
+
+import static org.apache.camel.test.spring.CamelSpringTestHelper.getAllMethods;
+
+/**
+ * Replacement for the default {@link GenericXmlContextLoader} that provides hooks for
+ * processing some class level Camel related test annotations.
+ */
+public class CamelSpringTestContextLoader extends AbstractContextLoader {
+
+ private static final Logger LOG = LoggerFactory.getLogger(CamelSpringTestContextLoader.class);
+
+ /**
+ * Modeled after the Spring implementation in {@link AbstractGenericContextLoader},
+ * this method creates and refreshes the application context while providing for
+ * processing of additional Camel specific post-refresh actions. We do not provide the
+ * pre-post hooks for customization seen in {@link AbstractGenericContextLoader} because
+ * they probably are unnecessary for 90+% of users.
+ * <p/>
+ * For some functionality, we cannot use {@link org.springframework.test.context.TestExecutionListener} because we need
+ * to both produce the desired outcome during application context loading, and also cleanup
+ * after ourselves even if the test class never executes. Thus the listeners, which
+ * only run if the application context is successfully initialized are insufficient to
+ * provide the behavior described above.
+ */
+ @Override
+ public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception {
+ Class<?> testClass = getTestClass();
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Loading ApplicationContext for merged context configuration [{}].", mergedConfig);
+ }
+
+ try {
+ GenericApplicationContext context = createContext(testClass, mergedConfig);
+ prepareContext(context, mergedConfig);
+ loadBeanDefinitions(context, mergedConfig);
+ return loadContext(context, testClass);
+ } finally {
+ cleanup(testClass);
+ }
+ }
+
+ /**
+ * Modeled after the Spring implementation in {@link AbstractGenericContextLoader},
+ * this method creates and refreshes the application context while providing for
+ * processing of additional Camel specific post-refresh actions. We do not provide the
+ * pre-post hooks for customization seen in {@link AbstractGenericContextLoader} because
+ * they probably are unnecessary for 90+% of users.
+ * <p/>
+ * For some functionality, we cannot use {@link org.springframework.test.context.TestExecutionListener} because we need
+ * to both produce the desired outcome during application context loading, and also cleanup
+ * after ourselves even if the test class never executes. Thus the listeners, which
+ * only run if the application context is successfully initialized are insufficient to
+ * provide the behavior described above.
+ */
+ @Override
+ public ApplicationContext loadContext(String... locations) throws Exception {
+
+ Class<?> testClass = getTestClass();
+
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Loading ApplicationContext for locations [" + StringUtils.arrayToCommaDelimitedString(locations) + "].");
+ }
+
+ try {
+ GenericApplicationContext context = createContext(testClass, null);
+ loadBeanDefinitions(context, locations);
+ return loadContext(context, testClass);
+ } finally {
+ cleanup(testClass);
+ }
+ }
+
+ /**
+ * Returns "<code>-context.xml</code>".
+ */
+ @Override
+ public String getResourceSuffix() {
+ return "-context.xml";
+ }
+
+ /**
+ * Performs the bulk of the Spring application context loading/customization.
+ *
+ * @param context the partially configured context. The context should have the bean definitions loaded, but nothing else.
+ * @param testClass the test class being executed
+ * @return the initialized (refreshed) Spring application context
+ *
+ * @throws Exception if there is an error during initialization/customization
+ */
+ protected ApplicationContext loadContext(GenericApplicationContext context, Class<?> testClass) throws Exception {
+
+ AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
+
+ // Pre CamelContext(s) instantiation setup
+ handleDisableJmx(context, testClass);
+ handleUseOverridePropertiesWithPropertiesComponent(context, testClass);
+
+ // Temporarily disable CamelContext start while the contexts are instantiated.
+ SpringCamelContext.setNoStart(true);
+ context.refresh();
+ context.registerShutdownHook();
+ // Turn CamelContext startup back on since the context's have now been instantiated.
+ SpringCamelContext.setNoStart(false);
+
+ // Post CamelContext(s) instantiation but pre CamelContext(s) start setup
+ handleRouteCoverage(context, testClass);
+ handleProvidesBreakpoint(context, testClass);
+ handleShutdownTimeout(context, testClass);
+ handleMockEndpoints(context, testClass);
+ handleMockEndpointsAndSkip(context, testClass);
+
+ // CamelContext(s) startup
+ handleCamelContextStartup(context, testClass);
+
+ return context;
+ }
+
+ /**
+ * Cleanup/restore global state to defaults / pre-test values after the test setup
+ * is complete.
+ *
+ * @param testClass the test class being executed
+ */
+ protected void cleanup(Class<?> testClass) {
+ SpringCamelContext.setNoStart(false);
+
+ if (testClass.isAnnotationPresent(DisableJmx.class)) {
+ if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ } else {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED,
+ CamelSpringTestHelper.getOriginalJmxDisabled());
+ }
+ }
+ }
+
+ protected void loadBeanDefinitions(GenericApplicationContext context, MergedContextConfiguration mergedConfig) {
+ (new XmlBeanDefinitionReader(context)).loadBeanDefinitions(mergedConfig.getLocations());
+ }
+
+ protected void loadBeanDefinitions(GenericApplicationContext context, String... locations) {
+ (new XmlBeanDefinitionReader(context)).loadBeanDefinitions(locations);
+ }
+
+ /**
+ * Creates and starts the Spring context while optionally starting any loaded Camel contexts.
+ *
+ * @param testClass the test class that is being executed
+ * @return the loaded Spring context
+ */
+ protected GenericApplicationContext createContext(Class<?> testClass, MergedContextConfiguration mergedConfig) {
+ ApplicationContext parentContext = null;
+ GenericApplicationContext routeExcludingContext = null;
+
+ if (mergedConfig != null) {
+ parentContext = mergedConfig.getParentApplicationContext();
+ }
+
+ if (testClass.isAnnotationPresent(ExcludeRoutes.class)) {
+ Class<?>[] excludedClasses = testClass.getAnnotation(ExcludeRoutes.class).value();
+
+ if (excludedClasses.length > 0) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Setting up package scanning excluded classes as ExcludeRoutes "
+ + "annotation was found. Excluding [" + StringUtils.arrayToCommaDelimitedString(excludedClasses) + "].");
+ }
+
+ if (parentContext == null) {
+ routeExcludingContext = new GenericApplicationContext();
+ } else {
+ routeExcludingContext = new GenericApplicationContext(parentContext);
+ }
+ routeExcludingContext.registerBeanDefinition("excludingResolver", new RootBeanDefinition(ExcludingPackageScanClassResolver.class));
+ routeExcludingContext.refresh();
+
+ ExcludingPackageScanClassResolver excludingResolver = routeExcludingContext.getBean("excludingResolver", ExcludingPackageScanClassResolver.class);
+ List<Class<?>> excluded = Arrays.asList(excludedClasses);
+ excludingResolver.setExcludedClasses(new HashSet<>(excluded));
+ } else {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Not enabling package scanning excluded classes as ExcludeRoutes "
+ + "annotation was found but no classes were excluded.");
+ }
+ }
+ }
+
+ GenericApplicationContext context;
+
+ if (routeExcludingContext != null) {
+ context = new GenericApplicationContext(routeExcludingContext);
+ } else {
+ if (parentContext != null) {
+ context = new GenericApplicationContext(parentContext);
+ } else {
+ context = new GenericApplicationContext();
+ }
+ }
+
+ return context;
+ }
+
+ /**
+ * Handles disabling of JMX on Camel contexts based on {@link DisableJmx}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ protected void handleDisableJmx(GenericApplicationContext context, Class<?> testClass) {
+ CamelSpringTestHelper.setOriginalJmxDisabledValue(System.getProperty(JmxSystemPropertyKeys.DISABLED));
+
+ if (testClass.isAnnotationPresent(DisableJmx.class)) {
+ if (testClass.getAnnotation(DisableJmx.class).value()) {
+ LOG.info("Disabling Camel JMX globally as DisableJmx annotation was found and disableJmx is set to true.");
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+ } else {
+ LOG.info("Enabling Camel JMX as DisableJmx annotation was found and disableJmx is set to false.");
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ }
+ } else if (!testClass.isAnnotationPresent(EnableRouteCoverage.class)) {
+ // route coverage need JMX so do not disable it by default
+ LOG.info("Disabling Camel JMX globally for tests by default. Use the DisableJMX annotation to override the default setting.");
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+ }
+ }
+
+ /**
+ * Handles disabling of JMX on Camel contexts based on {@link DisableJmx}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ private void handleRouteCoverage(GenericApplicationContext context, Class<?> testClass) throws Exception {
+ if (testClass.isAnnotationPresent(EnableRouteCoverage.class)) {
+ System.setProperty(CamelTestSupport.ROUTE_COVERAGE_ENABLED, "true");
+
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext) throws Exception {
+ LOG.info("Enabling RouteCoverage");
+ EventNotifier notifier = new RouteCoverageEventNotifier(testClass.getName(), s -> getTestMethod().getName());
+ camelContext.addService(notifier, true);
+ camelContext.getManagementStrategy().addEventNotifier(notifier);
+ }
+ });
+ }
+ }
+
+ /**
+ * Handles the processing of the {@link ProvidesBreakpoint} annotation on a test class. Exists here
+ * as it is needed in
+ *
+ * @param context the initialized Spring context containing the Camel context(s) to insert breakpoints into
+ * @param testClass the test class being processed
+ *
+ * @throws Exception if there is an error processing the class
+ */
+ protected void handleProvidesBreakpoint(GenericApplicationContext context, Class<?> testClass) throws Exception {
+ Collection<Method> methods = getAllMethods(testClass);
+ final List<Breakpoint> breakpoints = new LinkedList<>();
+
+ for (Method method : methods) {
+ if (AnnotationUtils.findAnnotation(method, ProvidesBreakpoint.class) != null) {
+ Class<?>[] argTypes = method.getParameterTypes();
+ if (argTypes.length != 0) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but is not a no-argument method.");
+ } else if (!Breakpoint.class.isAssignableFrom(method.getReturnType())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but does not return a Breakpoint.");
+ } else if (!Modifier.isStatic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but is not static.");
+ } else if (!Modifier.isPublic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with ProvidesBreakpoint but is not public.");
+ }
+
+ try {
+ breakpoints.add((Breakpoint) method.invoke(null));
+ } catch (Exception e) {
+ throw new RuntimeException("Method [" + method.getName()
+ + "] threw exception during evaluation.", e);
+ }
+ }
+ }
+
+ if (breakpoints.size() != 0) {
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ Debugger debugger = camelContext.getDebugger();
+ if (debugger == null) {
+ debugger = new DefaultDebugger();
+ camelContext.setDebugger(debugger);
+ }
+
+ for (Breakpoint breakpoint : breakpoints) {
+ LOG.info("Adding Breakpoint [{}] to CamelContext with name [{}].", breakpoint, contextName);
+ debugger.addBreakpoint(breakpoint);
+ }
+ }
+ });
+ }
+ }
+
+
+ /**
+ * Handles updating shutdown timeouts on Camel contexts based on {@link ShutdownTimeout}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ protected void handleShutdownTimeout(GenericApplicationContext context, Class<?> testClass) throws Exception {
+ final int shutdownTimeout;
+ final TimeUnit shutdownTimeUnit;
+ if (testClass.isAnnotationPresent(ShutdownTimeout.class)) {
+ shutdownTimeout = testClass.getAnnotation(ShutdownTimeout.class).value();
+ shutdownTimeUnit = testClass.getAnnotation(ShutdownTimeout.class).timeUnit();
+ } else {
+ shutdownTimeout = 10;
+ shutdownTimeUnit = TimeUnit.SECONDS;
+ }
+
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ LOG.info("Setting shutdown timeout to [{} {}] on CamelContext with name [{}].", shutdownTimeout, shutdownTimeUnit, contextName);
+ camelContext.getShutdownStrategy().setTimeout(shutdownTimeout);
+ camelContext.getShutdownStrategy().setTimeUnit(shutdownTimeUnit);
+ }
+ });
+ }
+
+ /**
+ * Handles auto-intercepting of endpoints with mocks based on {@link MockEndpoints}.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ protected void handleMockEndpoints(GenericApplicationContext context, Class<?> testClass) throws Exception {
+ if (testClass.isAnnotationPresent(MockEndpoints.class)) {
+ final String mockEndpoints = testClass.getAnnotation(MockEndpoints.class).value();
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ LOG.info("Enabling auto mocking of endpoints matching pattern [{}] on CamelContext with name [{}].", mockEndpoints, contextName);
+ camelContext.adapt(ExtendedCamelContext.class).registerEndpointCallback(new InterceptSendToMockEndpointStrategy(mockEndpoints));
+ }
+ });
+ }
+ }
+
+ /**
+ * Handles auto-intercepting of endpoints with mocks based on {@link MockEndpointsAndSkip} and skipping the
+ * original endpoint.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ protected void handleMockEndpointsAndSkip(GenericApplicationContext context, Class<?> testClass) throws Exception {
+ if (testClass.isAnnotationPresent(MockEndpointsAndSkip.class)) {
+ final String mockEndpoints = testClass.getAnnotation(MockEndpointsAndSkip.class).value();
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName, SpringCamelContext camelContext)
+ throws Exception {
+ // resovle the property place holders of the mockEndpoints
+ String mockEndpointsValue = camelContext.resolvePropertyPlaceholders(mockEndpoints);
+ LOG.info("Enabling auto mocking and skipping of endpoints matching pattern [{}] on CamelContext with name [{}].", mockEndpointsValue, contextName);
+ camelContext.adapt(ExtendedCamelContext.class).registerEndpointCallback(new InterceptSendToMockEndpointStrategy(mockEndpointsValue, true));
+ }
+ });
+ }
+ }
+
+ /**
+ * Sets property overrides for the Camel {@link org.apache.camel.component.properties.PropertiesComponent}.
+ *
+ * @param context the pre-refresh Spring context
+ * @param testClass the test class being executed
+ */
+ protected void handleUseOverridePropertiesWithPropertiesComponent(ConfigurableApplicationContext context, Class<?> testClass) throws Exception {
+ Collection<Method> methods = getAllMethods(testClass);
+ final List<Properties> properties = new LinkedList<>();
+
+ for (Method method : methods) {
+ if (AnnotationUtils.findAnnotation(method, UseOverridePropertiesWithPropertiesComponent.class) != null) {
+ Class<?>[] argTypes = method.getParameterTypes();
+ if (argTypes.length > 0) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but is not a no-argument method.");
+ } else if (!Properties.class.isAssignableFrom(method.getReturnType())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but does not return a java.util.Properties.");
+ } else if (!Modifier.isStatic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but is not static.");
+ } else if (!Modifier.isPublic(method.getModifiers())) {
+ throw new IllegalArgumentException("Method [" + method.getName()
+ + "] is annotated with UseOverridePropertiesWithPropertiesComponent but is not public.");
+ }
+
+ try {
+ properties.add((Properties) method.invoke(null));
+ } catch (Exception e) {
+ throw new RuntimeException("Method [" + method.getName()
+ + "] threw exception during evaluation.", e);
+ }
+ }
+ }
+
+ Properties extra = new Properties();
+ for (Properties prop : properties) {
+ extra.putAll(prop);
+ }
+
+ if (!extra.isEmpty()) {
+ context.addBeanFactoryPostProcessor(beanFactory -> beanFactory.addBeanPostProcessor(new BeanPostProcessor() {
+ @Override
+ public Object postProcessAfterInitialization(Object bean, String beanName) {
+ if (bean instanceof CamelContext) {
+ CamelContext camelContext = (CamelContext) bean;
+ PropertiesComponent pc = camelContext.getPropertiesComponent(true);
+ LOG.info("Using {} properties to override any existing properties on the PropertiesComponent on CamelContext with name [{}].", extra.size(), camelContext.getName());
+ pc.setOverrideProperties(extra);
+ }
+ return bean;
+ }
+ }));
+ }
+ }
+
+ /**
+ * Handles starting of Camel contexts based on {@link UseAdviceWith} and other state in the JVM.
+ *
+ * @param context the initialized Spring context
+ * @param testClass the test class being executed
+ */
+ protected void handleCamelContextStartup(GenericApplicationContext context, Class<?> testClass) throws Exception {
+ boolean skip = "true".equalsIgnoreCase(System.getProperty("skipStartingCamelContext"));
+ if (skip) {
+ LOG.info("Skipping starting CamelContext(s) as system property skipStartingCamelContext is set to be true.");
+ } else if (testClass.isAnnotationPresent(UseAdviceWith.class)) {
+ if (testClass.getAnnotation(UseAdviceWith.class).value()) {
+ LOG.info("Skipping starting CamelContext(s) as UseAdviceWith annotation was found and isUseAdviceWith is set to true.");
+ skip = true;
+ } else {
+ LOG.info("Starting CamelContext(s) as UseAdviceWith annotation was found, but isUseAdviceWith is set to false.");
+ skip = false;
+ }
+ }
+
+ if (!skip) {
+ CamelSpringTestHelper.doToSpringCamelContexts(context, new DoToSpringCamelContextsStrategy() {
+
+ @Override
+ public void execute(String contextName,
+ SpringCamelContext camelContext) throws Exception {
+ LOG.info("Starting CamelContext with name [{}].", contextName);
+ camelContext.start();
+ }
+ });
+ }
+ }
+
+ /**
+ * Returns the class under test in order to enable inspection of annotations while the
+ * Spring context is being created.
+ *
+ * @return the test class that is being executed
+ * @see CamelSpringTestHelper
+ */
+ protected Class<?> getTestClass() {
+ return CamelSpringTestHelper.getTestClass();
+ }
+
+ /**
+ * Returns the test method under test.
+ *
+ * @return the method that is being executed
+ * @see CamelSpringTestHelper
+ */
+ protected Method getTestMethod() {
+ return CamelSpringTestHelper.getTestMethod();
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
new file mode 100644
index 0000000..a749104
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestContextLoaderTestExecutionListener.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.springframework.core.Ordered;
+import org.springframework.test.context.TestContext;
+import org.springframework.test.context.support.AbstractTestExecutionListener;
+
+/**
+ * Helper for {@link CamelSpringTestContextLoader} that sets the test class state
+ * in {@link CamelSpringTestHelper} almost immediately before the loader initializes
+ * the Spring context.
+ * <p/>
+ * Implemented as a listener as the state can be set on a {@code ThreadLocal} and we are pretty sure
+ * that the same thread will be used to initialize the Spring context.
+ */
+public class CamelSpringTestContextLoaderTestExecutionListener extends AbstractTestExecutionListener {
+
+ /**
+ * The default implementation returns {@link org.springframework.core.Ordered#LOWEST_PRECEDENCE},
+ * thereby ensuring that custom listeners are ordered after default
+ * listeners supplied by the framework. Can be overridden by subclasses
+ * as necessary.
+ */
+ @Override
+ public int getOrder() {
+ //set Camel first
+ return Ordered.HIGHEST_PRECEDENCE;
+ }
+
+ @Override
+ public void prepareTestInstance(TestContext testContext) throws Exception {
+ CamelSpringTestHelper.setTestClass(testContext.getTestClass());
+ CamelSpringTestHelper.setTestContext(testContext);
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestHelper.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestHelper.java
new file mode 100644
index 0000000..a9ed288
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestHelper.java
@@ -0,0 +1,109 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.apache.camel.spring.SpringCamelContext;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.test.context.TestContext;
+
+/**
+ * Helper that provides state information across the levels of Spring Test that do not expose the
+ * necessary context/state for integration of Camel testing features into Spring test. Also
+ * provides utility methods.
+ * <p/>
+ * Note that this class makes use of {@link ThreadLocal}s to maintain some state. It is imperative
+ * that the state setters and getters are accessed within the scope of a single thread in order
+ * for this class to work right.
+ */
+public final class CamelSpringTestHelper {
+
+ private static ThreadLocal<String> originalJmxDisabledValue = new ThreadLocal<>();
+ private static ThreadLocal<Class<?>> testClazz = new ThreadLocal<>();
+ private static ThreadLocal<TestContext> testContext = new ThreadLocal<>();
+
+ private CamelSpringTestHelper() {
+ }
+
+ public static String getOriginalJmxDisabled() {
+ return originalJmxDisabledValue.get();
+ }
+
+ public static void setOriginalJmxDisabledValue(String originalValue) {
+ originalJmxDisabledValue.set(originalValue);
+ }
+
+ public static Class<?> getTestClass() {
+ return testClazz.get();
+ }
+
+ public static void setTestClass(Class<?> testClass) {
+ testClazz.set(testClass);
+ }
+
+ public static Method getTestMethod() {
+ return testContext.get().getTestMethod();
+ }
+
+ public static void setTestContext(TestContext context) {
+ testContext.set(context);
+ }
+
+ /**
+ * Returns all methods defined in {@code clazz} and its superclasses/interfaces.
+ */
+ public static Collection<Method> getAllMethods(Class<?> clazz) {
+ Set<Method> methods = new LinkedHashSet<>();
+ Class<?> currentClass = clazz;
+
+ while (currentClass != null) {
+ methods.addAll(Arrays.asList(clazz.getMethods()));
+ currentClass = currentClass.getSuperclass();
+ }
+
+ return methods;
+ }
+
+ /**
+ * Executes {@code strategy} against all {@link SpringCamelContext}s found in the Spring context.
+ * This method reduces the amount of repeated find and loop code throughout this class.
+ *
+ * @param context the Spring context to search
+ * @param strategy the strategy to execute against the found {@link SpringCamelContext}s
+ *
+ * @throws Exception if there is an error executing any of the strategies
+ */
+ public static void doToSpringCamelContexts(ApplicationContext context, DoToSpringCamelContextsStrategy strategy) throws Exception {
+ Map<String, SpringCamelContext> contexts = context.getBeansOfType(SpringCamelContext.class);
+
+ for (Entry<String, SpringCamelContext> entry : contexts.entrySet()) {
+ strategy.execute(entry.getKey(), entry.getValue());
+ }
+ }
+
+ public interface DoToSpringCamelContextsStrategy {
+ void execute(String contextName, SpringCamelContext camelContext) throws Exception;
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java
new file mode 100644
index 0000000..839f675
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupport.java
@@ -0,0 +1,212 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.spring.SpringCamelContext;
+import org.apache.camel.test.ExcludingPackageScanClassResolver;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.ObjectHelper;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
+
+/**
+ * Base test-class for classic Spring application such as standalone, web applications.
+ * Do <tt>not</tt> use this class for Spring Boot testing, instead use <code>@RunWith(CamelSpringBootRunner.class)</code>.
+ */
+public abstract class CamelSpringTestSupport extends CamelTestSupport {
+ protected static ThreadLocal<AbstractApplicationContext> threadAppContext = new ThreadLocal<>();
+ protected static Object lock = new Object();
+
+ protected AbstractApplicationContext applicationContext;
+ protected abstract AbstractApplicationContext createApplicationContext();
+
+ @Override
+ public void postProcessTest() throws Exception {
+ if (isCreateCamelContextPerClass()) {
+ applicationContext = threadAppContext.get();
+ }
+ super.postProcessTest();
+ }
+
+ @Override
+ public void doPreSetup() throws Exception {
+ if (!"true".equalsIgnoreCase(System.getProperty("skipStartingCamelContext"))) {
+ // tell camel-spring it should not trigger starting CamelContext, since we do that later
+ // after we are finished setting up the unit test
+ synchronized (lock) {
+ SpringCamelContext.setNoStart(true);
+ if (isCreateCamelContextPerClass()) {
+ applicationContext = threadAppContext.get();
+ if (applicationContext == null) {
+ applicationContext = doCreateApplicationContext();
+ threadAppContext.set(applicationContext);
+ }
+ } else {
+ applicationContext = doCreateApplicationContext();
+ }
+ SpringCamelContext.setNoStart(false);
+ }
+ } else {
+ log.info("Skipping starting CamelContext as system property skipStartingCamelContext is set to be true.");
+ }
+ }
+
+ private AbstractApplicationContext doCreateApplicationContext() {
+ AbstractApplicationContext context = createApplicationContext();
+ Assertions.assertNotNull(context, "Should have created a valid Spring application context");
+
+ String[] profiles = activeProfiles();
+ if (profiles != null && profiles.length > 0) {
+ // the context must not be active
+ if (context.isActive()) {
+ throw new IllegalStateException("Cannot active profiles: " + Arrays.asList(profiles) + " on active Spring application context: " + context
+ + ". The code in your createApplicationContext() method should be adjusted to create the application context with refresh = false as parameter");
+ }
+ log.info("Spring activating profiles: {}", Arrays.asList(profiles));
+ context.getEnvironment().setActiveProfiles(profiles);
+ }
+
+ // ensure the context has been refreshed at least once
+ if (!context.isActive()) {
+ context.refresh();
+ }
+
+ return context;
+ }
+
+ @Override
+ @AfterEach
+ public void tearDown() throws Exception {
+ super.tearDown();
+
+ if (!isCreateCamelContextPerClass()) {
+ IOHelper.close(applicationContext);
+ applicationContext = null;
+ }
+ }
+
+ @Override
+ public void doPostTearDown() throws Exception {
+ super.doPostTearDown();
+
+ if (threadAppContext.get() != null) {
+ IOHelper.close(threadAppContext.get());
+ threadAppContext.remove();
+ }
+ }
+
+ /**
+ * Create a parent context that initializes a
+ * {@link org.apache.camel.spi.PackageScanClassResolver} to exclude a set of given classes from
+ * being resolved. Typically this is used at test time to exclude certain routes,
+ * which might otherwise be just noisy, from being discovered and initialized.
+ * <p/>
+ * To use this filtering mechanism it is necessary to provide the
+ * {@link org.springframework.context.ApplicationContext} returned from here as the parent context to
+ * your test context e.g.
+ *
+ * <pre>
+ * protected AbstractXmlApplicationContext createApplicationContext() {
+ * return new ClassPathXmlApplicationContext(new String[] {"test-context.xml"}, getRouteExcludingApplicationContext());
+ * }
+ * </pre>
+ *
+ * This will, in turn, call the template methods <code>excludedRoutes</code>
+ * and <code>excludedRoute</code> to determine the classes to be excluded from scanning.
+ *
+ * @return ApplicationContext a parent {@link org.springframework.context.ApplicationContext} configured
+ * to exclude certain classes from package scanning
+ */
+ protected ApplicationContext getRouteExcludingApplicationContext() {
+ GenericApplicationContext routeExcludingContext = new GenericApplicationContext();
+ routeExcludingContext.registerBeanDefinition("excludingResolver", new RootBeanDefinition(ExcludingPackageScanClassResolver.class));
+ routeExcludingContext.refresh();
+
+ ExcludingPackageScanClassResolver excludingResolver = routeExcludingContext.getBean("excludingResolver", ExcludingPackageScanClassResolver.class);
+ List<Class<?>> excluded = Arrays.asList(excludeRoutes());
+ excludingResolver.setExcludedClasses(new HashSet<>(excluded));
+
+ return routeExcludingContext;
+ }
+
+ /**
+ * Template method used to exclude {@link org.apache.camel.Route} from the test time context
+ * route scanning
+ *
+ * @return Class[] the classes to be excluded from test time context route scanning
+ */
+ protected Class<?>[] excludeRoutes() {
+ Class<?> excludedRoute = excludeRoute();
+ return excludedRoute != null ? new Class[] {excludedRoute} : new Class[0];
+ }
+
+ /**
+ * Template method used to exclude a {@link org.apache.camel.Route} from the test camel context
+ */
+ protected Class<?> excludeRoute() {
+ return null;
+ }
+
+ /**
+ * Looks up the mandatory spring bean of the given name and type, failing if
+ * it is not present or the correct type
+ */
+ public <T> T getMandatoryBean(Class<T> type, String name) {
+ Object value = applicationContext.getBean(name);
+ Assertions.assertNotNull(value, "No spring bean found for name <" + name + ">");
+ if (type.isInstance(value)) {
+ return type.cast(value);
+ } else {
+ Assertions.fail("Spring bean <" + name + "> is not an instanceof " + type.getName() + " but is of type " + ObjectHelper.className(value));
+ return null;
+ }
+ }
+
+ /**
+ * Which active profiles should be used.
+ * <p/>
+ * <b>Important:</b> When using active profiles, then the code in {@link #createApplicationContext()} should create
+ * the Spring {@link org.springframework.context.support.AbstractApplicationContext} without refreshing. For example creating an
+ * {@link org.springframework.context.support.ClassPathXmlApplicationContext} you would need to pass in
+ * <tt>false</tt> in the refresh parameter, in the constructor.
+ * Camel will thrown an {@link IllegalStateException} if this is not correct stating this problem.
+ * The reason is that we cannot active profiles <b>after</b> a Spring application context has already
+ * been refreshed, and is active.
+ *
+ * @return an array of active profiles to use, use <tt>null</tt> to not use any active profiles.
+ */
+ protected String[] activeProfiles() {
+ return null;
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ // don't start the springCamelContext if we
+ return SpringCamelContext.springCamelContext(applicationContext, false);
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelTestContextBootstrapper.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelTestContextBootstrapper.java
new file mode 100644
index 0000000..aef6e19
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelTestContextBootstrapper.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.springframework.test.context.ContextLoader;
+import org.springframework.test.context.support.DefaultTestContextBootstrapper;
+
+/**
+ * To bootstrap Camel for testing with Spring 4.1 onwards.
+ */
+public class CamelTestContextBootstrapper extends DefaultTestContextBootstrapper {
+
+ @Override
+ protected Class<? extends ContextLoader> getDefaultContextLoaderClass(Class<?> testClass) {
+ return CamelSpringTestContextLoader.class;
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmx.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmx.java
new file mode 100644
index 0000000..b3f44c1
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmx.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates if JMX should be globally disabled in the {@code CamelContext}s that are bootstrapped
+ * during the test through the use of Spring Test loaded application contexts. Note that the
+ * presence of this annotation will result in the manipulation of System Properties that
+ * will affect Camel contexts constructed outside of the Spring Test loaded application contexts.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface DisableJmx {
+
+ /**
+ * Whether the test annotated with this annotation should be run with JMX disabled in Camel.
+ * Defaults to {@code true}.
+ */
+ boolean value() default true;
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
new file mode 100644
index 0000000..f3aaee6
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/DisableJmxTestExecutionListener.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.api.management.JmxSystemPropertyKeys;
+import org.springframework.test.context.TestContext;
+import org.springframework.test.context.support.AbstractTestExecutionListener;
+
+/**
+ * Provides reset to pre-test state behavior for global enable/disable of JMX
+ * support in Camel through the use of {@link DisableJmx}.
+ * Tries to ensure that the pre-test value is restored.
+ */
+public class DisableJmxTestExecutionListener extends AbstractTestExecutionListener {
+
+ @Override
+ public void afterTestClass(TestContext testContext) throws Exception {
+ if (CamelSpringTestHelper.getOriginalJmxDisabled() == null) {
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ } else {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, CamelSpringTestHelper.getOriginalJmxDisabled());
+ }
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/EnableRouteCoverage.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/EnableRouteCoverage.java
new file mode 100644
index 0000000..9b846b9
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/EnableRouteCoverage.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Enables dumping route coverage statistic.
+ * The route coverage status is written as xml files in the <tt>target/camel-route-coverage</tt> directory after the test has finished.
+ * <p/>
+ * This allows tooling or manual inspection of the stats, so you can generate a route trace diagram of which EIPs
+ * have been in use and which have not. Similar concepts as a code coverage report.
+ * <p/>
+ * You can also turn on route coverage globally via setting JVM system property <tt>CamelTestRouteCoverage=true</tt>.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface EnableRouteCoverage {
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ExcludeRoutes.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ExcludeRoutes.java
new file mode 100644
index 0000000..eab25f0
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ExcludeRoutes.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.RoutesBuilder;
+
+/**
+ * Indicates if certain route builder classes should be excluded from discovery.
+ * Initializes a {@link org.apache.camel.spi.PackageScanClassResolver} to exclude a set of given
+ * classes from being resolved. Typically this is used at test time to exclude certain routes,
+ * which might otherwise be noisy, from being discovered and initialized.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface ExcludeRoutes {
+
+ /**
+ * The classes to exclude from resolution when using package scanning.
+ */
+ Class<? extends RoutesBuilder>[] value() default {};
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/MockEndpoints.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/MockEndpoints.java
new file mode 100644
index 0000000..2e9215a
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/MockEndpoints.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
+
+/**
+ * Triggers the auto-mocking of endpoints whose URIs match the provided filter. The default
+ * filter is "*" which matches all endpoints. See {@link InterceptSendToMockEndpointStrategy} for
+ * more details on the registration of the mock endpoints.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface MockEndpoints {
+
+ /**
+ * The pattern to use for matching endpoints to enable mocking on.
+ */
+ String value() default "*";
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/MockEndpointsAndSkip.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/MockEndpointsAndSkip.java
new file mode 100644
index 0000000..4e88a3c
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/MockEndpointsAndSkip.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.impl.engine.InterceptSendToMockEndpointStrategy;
+
+/**
+ * Triggers the auto-mocking of endpoints whose URIs match the provided filter with the added provision
+ * that the endpoints are also skipped. The default filter is "*" which matches all endpoints.
+ * See {@link InterceptSendToMockEndpointStrategy} for more details on the registration of the mock endpoints.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface MockEndpointsAndSkip {
+
+ /**
+ * The pattern to use for matching endpoints to enable mocking on.
+ */
+ String value() default "*";
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ProvidesBreakpoint.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ProvidesBreakpoint.java
new file mode 100644
index 0000000..088b313
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ProvidesBreakpoint.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.spi.Breakpoint;
+
+/**
+ * Indicates that the annotated method returns a {@link Breakpoint} for use in the test. Useful for intercepting
+ * traffic to all endpoints or simply for setting a break point in an IDE for debugging. The method must
+ * be {@code public}, {@code static}, take no arguments, and return {@link Breakpoint}.
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD})
+public @interface ProvidesBreakpoint {
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageDumper.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageDumper.java
new file mode 100644
index 0000000..11b11b2
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageDumper.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.io.ByteArrayInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.api.management.ManagedCamelContext;
+import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
+import org.apache.camel.util.IOHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Helper to dump route coverage when using {@link EnableRouteCoverage}.
+ */
+public final class RouteCoverageDumper {
+
+ private static final Logger LOG = LoggerFactory.getLogger(RouteCoverageDumper.class);
+
+ private RouteCoverageDumper() {
+ }
+
+ public static void dumpRouteCoverage(CamelContext context, String testClassName, String testName) {
+ try {
+ String dir = "target/camel-route-coverage";
+ String name = testClassName + "-" + testName + ".xml";
+
+ ManagedCamelContextMBean managedCamelContext = context.getExtension(ManagedCamelContext.class).getManagedCamelContext();
+ if (managedCamelContext == null) {
+ LOG.warn("Cannot dump route coverage to file as JMX is not enabled. Override useJmx() method to enable JMX in the unit test classes.");
+ } else {
+ String xml = managedCamelContext.dumpRoutesCoverageAsXml();
+ String combined = "<camelRouteCoverage>\n" + gatherTestDetailsAsXml(testClassName, testName) + xml + "\n</camelRouteCoverage>";
+
+ File file = new File(dir);
+ // ensure dir exists
+ file.mkdirs();
+ file = new File(dir, name);
+
+ LOG.info("Dumping route coverage to file: " + file);
+ InputStream is = new ByteArrayInputStream(combined.getBytes());
+ OutputStream os = new FileOutputStream(file, false);
+ IOHelper.copyAndCloseInput(is, os);
+ IOHelper.close(os);
+ }
+ } catch (Exception e) {
+ LOG.warn("Error during dumping route coverage statistic. This exception is ignored.", e);
+ }
+
+ }
+
+ /**
+ * Gathers test details as xml
+ */
+ private static String gatherTestDetailsAsXml(String testClassName, String testName) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<test>\n");
+ sb.append(" <class>").append(testClassName).append("</class>\n");
+ sb.append(" <method>").append(testName).append("</method>\n");
+ sb.append("</test>\n");
+ return sb.toString();
+ }
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java
new file mode 100644
index 0000000..7d7df3d
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/RouteCoverageEventNotifier.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.function.Function;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.CamelEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextEvent;
+import org.apache.camel.spi.CamelEvent.CamelContextStoppingEvent;
+import org.apache.camel.support.EventNotifierSupport;
+
+public class RouteCoverageEventNotifier extends EventNotifierSupport {
+
+ private final String testClassName;
+ private final Function testMethodName;
+
+ public RouteCoverageEventNotifier(String testClassName, Function testMethodName) {
+ this.testClassName = testClassName;
+ this.testMethodName = testMethodName;
+ setIgnoreCamelContextEvents(false);
+ setIgnoreExchangeEvents(true);
+ }
+
+ @Override
+ public boolean isEnabled(CamelEvent event) {
+ return event instanceof CamelContextStoppingEvent;
+ }
+
+ @Override
+ public void notify(CamelEvent event) throws Exception {
+ CamelContext context = ((CamelContextStoppingEvent) event).getContext();
+ String testName = (String) testMethodName.apply(this);
+ RouteCoverageDumper.dumpRouteCoverage(context, testClassName, testName);
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ShutdownTimeout.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ShutdownTimeout.java
new file mode 100644
index 0000000..8e35d58
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/ShutdownTimeout.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Indicates to set the shutdown timeout of all {@code CamelContext}s instantiated through the
+ * use of Spring Test loaded application contexts. If no annotation is used, the timeout is
+ * automatically reduced to 10 seconds by the test framework. If the annotation is present the
+ * shutdown timeout is set based on the value of {@link #value()}.
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface ShutdownTimeout {
+
+ /**
+ * The shutdown timeout to set on the {@code CamelContext}(s).
+ * Defaults to {@code 10} seconds.
+ */
+ int value() default 10;
+
+ /**
+ * The time unit that {@link #value()} is in.
+ */
+ TimeUnit timeUnit() default TimeUnit.SECONDS;
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
new file mode 100644
index 0000000..535a7dc
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/StopWatchTestExecutionListener.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.util.StopWatch;
+import org.apache.camel.util.TimeUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.test.context.TestContext;
+import org.springframework.test.context.support.AbstractTestExecutionListener;
+
+/**
+ * An execution listener that simulates the timing output built in to {@link org.apache.camel.test.junit4.CamelTestSupport}.
+ */
+public class StopWatchTestExecutionListener extends AbstractTestExecutionListener {
+
+ protected static ThreadLocal<StopWatch> threadStopWatch = new ThreadLocal<>();
+
+ /**
+ * Exists primarily for testing purposes, but allows for access to the underlying stop watch instance for a test.
+ */
+ public static StopWatch getStopWatch() {
+ return threadStopWatch.get();
+ }
+
+ @Override
+ public void beforeTestMethod(TestContext testContext) throws Exception {
+ StopWatch stopWatch = new StopWatch();
+ threadStopWatch.set(stopWatch);
+ }
+
+ @Override
+ public void afterTestMethod(TestContext testContext) throws Exception {
+ StopWatch watch = threadStopWatch.get();
+ if (watch != null) {
+ long time = watch.taken();
+ Logger log = LoggerFactory.getLogger(testContext.getTestClass());
+
+ log.info("********************************************************************************");
+ log.info("Testing done: " + testContext.getTestMethod().getName() + "(" + testContext.getTestClass().getName() + ")");
+ log.info("Took: " + TimeUtils.printDuration(time) + " (" + time + " millis)");
+ log.info("********************************************************************************");
+
+ threadStopWatch.remove();
+ }
+ }
+
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/UseAdviceWith.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/UseAdviceWith.java
new file mode 100644
index 0000000..9e09deb
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/UseAdviceWith.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.camel.CamelContext;
+
+/**
+ * Indicates the use of {@code adviceWith()} within the test class. If a class is annotated with
+ * this annotation and {@link UseAdviceWith#value()} returns true, any
+ * {@code CamelContext}s bootstrapped during the test through the use of Spring Test loaded
+ * application contexts will not be started automatically. The test author is responsible for
+ * injecting the Camel contexts into the test and executing {@link CamelContext#start()} on them
+ * at the appropriate time after any advice has been applied to the routes in the Camel context(s).
+ */
+@Documented
+@Inherited
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+public @interface UseAdviceWith {
+
+ /**
+ * Whether the test annotated with this annotation should be treated as if
+ * {@code adviceWith()} is in use in the test and the Camel contexts should not be started
+ * automatically.
+ * Defaults to {@code true}.
+ */
+ boolean value() default true;
+}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/UseOverridePropertiesWithPropertiesComponent.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/UseOverridePropertiesWithPropertiesComponent.java
new file mode 100644
index 0000000..89a71a5
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/UseOverridePropertiesWithPropertiesComponent.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates that the annotated method returns a {@link java.util.Properties} for use in the test, and that
+ * those properties override any existing properties configured on the {@link org.apache.camel.component.properties.PropertiesComponent}.
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.METHOD})
+public @interface UseOverridePropertiesWithPropertiesComponent {
+
+}
diff --git a/components/camel-testcontainers-spring/src/main/java/org/apache/camel/test/junit5/testcontainers/spring/ContainerAwareSpringTestSupport.java b/components/camel-testcontainers-spring/src/main/java/org/apache/camel/test/junit5/testcontainers/spring/ContainerAwareSpringTestSupport.java
new file mode 100644
index 0000000..74130af
--- /dev/null
+++ b/components/camel-testcontainers-spring/src/main/java/org/apache/camel/test/junit5/testcontainers/spring/ContainerAwareSpringTestSupport.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.testcontainers.spring;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.apache.camel.test.testcontainers.ContainerPropertiesFunction;
+import org.apache.camel.test.testcontainers.Containers;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
+
+public abstract class ContainerAwareSpringTestSupport extends CamelSpringTestSupport {
+ private List<GenericContainer<?>> containers = new CopyOnWriteArrayList<>();
+
+ // ******************
+ // Setup
+ // ******************
+
+ @Override
+ protected void setupResources() throws Exception {
+ super.setupResources();
+
+ containers.clear();
+ containers.addAll(createContainers());
+
+ final Network network = containerNetwork();
+ final long timeout = containersStartupTimeout();
+
+ Containers.start(containers, network, timeout);
+ }
+
+ @Override
+ protected void cleanupResources() throws Exception {
+ super.cleanupResources();
+
+ Containers.stop(containers, containerShutdownTimeout());
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ final CamelContext context = super.createCamelContext();
+ final PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
+
+ pc.addFunction(new ContainerPropertiesFunction(containers));
+
+ return context;
+ }
+
+ // ******************
+ // Containers set-up
+ // ******************
+
+ protected GenericContainer<?> createContainer() {
+ return null;
+ }
+
+ protected List<GenericContainer<?>> createContainers() {
+ GenericContainer<?> container = createContainer();
+
+ return container == null
+ ? Collections.emptyList()
+ : Collections.singletonList(container);
+ }
+
+ protected long containersStartupTimeout() {
+ return TimeUnit.MINUTES.toSeconds(1);
+ }
+
+ protected long containerShutdownTimeout() {
+ return TimeUnit.MINUTES.toSeconds(1);
+ }
+
+ protected Network containerNetwork() {
+ return null;
+ }
+
+ // ******************
+ // Helpers
+ // ******************
+
+ protected GenericContainer<?> getContainer(String containerName) {
+ return Containers.lookup(containers, containerName);
+ }
+
+ protected String getContainerHost(String containerName) {
+ return getContainer(containerName).getContainerIpAddress();
+ }
+
+ protected int getContainerPort(String containerName, int originalPort) {
+ return getContainer(containerName).getMappedPort(originalPort);
+ }
+}
diff --git a/components/camel-testcontainers-spring/src/test/java/org/apache/camel/test/junit5/testcontainers/spring/ContainerAwareSpringTestSupportIT.java b/components/camel-testcontainers-spring/src/test/java/org/apache/camel/test/junit5/testcontainers/spring/ContainerAwareSpringTestSupportIT.java
new file mode 100644
index 0000000..fef4342
--- /dev/null
+++ b/components/camel-testcontainers-spring/src/test/java/org/apache/camel/test/junit5/testcontainers/spring/ContainerAwareSpringTestSupportIT.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.testcontainers.spring;
+
+import org.apache.camel.test.testcontainers.Wait;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.testcontainers.containers.GenericContainer;
+
+public class ContainerAwareSpringTestSupportIT extends ContainerAwareSpringTestSupport {
+ @Override
+ protected AbstractApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/test/testcontainers/spring/ContainerAwareSpringTestSupportTest.xml");
+ }
+
+ @Test
+ public void testPropertyPlaceholders() throws Exception {
+ final GenericContainer<?> container = getContainer("myconsul");
+
+ final String host = context.resolvePropertyPlaceholders("{{container:host:myconsul}}");
+ Assertions.assertThat(host).isEqualTo(container.getContainerIpAddress());
+
+ final String port = context.resolvePropertyPlaceholders("{{container:port:8500@myconsul}}");
+ Assertions.assertThat(port).isEqualTo("" + container.getMappedPort(8500));
+ }
+
+ @Override
+ protected GenericContainer<?> createContainer() {
+ return new GenericContainer("consul:1.5.1")
+ .withNetworkAliases("myconsul")
+ .withExposedPorts(8500)
+ .waitingFor(Wait.forLogMessageContaining("Synced node info", 1))
+ .withCommand(
+ "agent",
+ "-dev",
+ "-server",
+ "-bootstrap",
+ "-client",
+ "0.0.0.0",
+ "-log-level",
+ "trace"
+ );
+ }
+
+}
[camel] 08/09: CAMEL-13342: Implemented a first version of a
proof-of-concept for camel-test-spring/SpringExtension with JUnit 5
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit b306b3475ca57166d320c2ec170ebf53b4680a0c
Author: aldettinger <al...@gmail.com>
AuthorDate: Wed Jul 17 17:20:28 2019 +0200
CAMEL-13342: Implemented a first version of a proof-of-concept for camel-test-spring/SpringExtension with JUnit 5
---
.../test/junit5/spring/CamelSpringRunner.java | 83 --------------
.../camel/test/junit5/spring/CamelSpringTest.java | 39 +++++++
.../patterns/DebugSpringCamelContextTest.java | 40 +++++++
.../test/junit5/patterns/DebugSpringTest.java | 83 ++++++++++++++
.../camel/test/junit5/patterns/MyProduceBean.java | 41 +++++++
.../camel/test/junit5/patterns/MySender.java | 25 +++++
.../test/junit5/patterns/ProduceBeanTest.java | 42 +++++++
.../junit5/patterns/ProducerBeanInjectTest.java | 40 +++++++
.../camel/test/junit5/patterns/SimpleMockTest.java | 63 +++++++++++
.../spring/CamelSpringActiveProfileTest.java | 56 +++++++++
...CamelSpringDisableJmxInheritedOverrideTest.java | 32 ++++++
.../spring/CamelSpringDisableJmxInheritedTest.java | 21 ++++
.../junit5/spring/CamelSpringDisableJmxTest.java | 33 ++++++
.../spring/CamelSpringExcludeRoutesTest.java | 32 ++++++
.../CamelSpringMockEndpointsAndSkipTest.java | 57 ++++++++++
.../spring/CamelSpringMockEndpointsTest.java | 58 ++++++++++
...ingOverridePropertiesForPropertyInjectTest.java | 54 +++++++++
.../spring/CamelSpringOverridePropertiesTest.java | 69 ++++++++++++
.../test/junit5/spring/CamelSpringPlainTest.java | 125 +++++++++++++++++++++
.../CamelSpringPropertiesLocationElementTest.java | 64 +++++++++++
...amelSpringProvidesBreakpointInherritedTest.java | 22 ++++
.../spring/CamelSpringProvidesBreakpointTest.java | 67 +++++++++++
...lSpringRouteProcessorDumpRouteCoverageTest.java | 57 ++++++++++
...SpringShutdownTimeoutInheritedOverrideTest.java | 35 ++++++
.../CamelSpringShutdownTimeoutInheritedTest.java | 22 ++++
.../spring/CamelSpringShutdownTimeoutTest.java | 35 ++++++
.../spring/CamelSpringTestPropertySourceTest.java | 46 ++++++++
.../CamelSpringTestSupportActiveProfileTest.java | 51 +++++++++
.../spring/CamelSpringUseAdviceWithTest.java | 52 +++++++++
.../spring/TestPropertyInjectRouteBuilder.java | 33 ++++++
.../camel/test/junit5/spring/TestRouteBuilder.java | 30 +++++
...InterceptSendToEndpointWithLoadbalancerTest.xml | 32 ++++++
.../junit5/issues/AdviceWithOnCompletionTest.xml | 39 +++++++
.../AdviceWithOnExceptionMultipleIssueTest.xml | 49 ++++++++
.../junit5/issues/MockEndpointsAndSkipTest.xml | 37 ++++++
.../test/junit5/patterns/ProduceBeanInjectTest.xml | 39 +++++++
.../camel/test/junit5/patterns/ProduceBeanTest.xml | 35 ++++++
.../camel/test/junit5/patterns/SimpleMockTest.xml | 33 ++++++
.../test/junit5/patterns/applicationContext.xml | 40 +++++++
.../CamelSpringActiveProfileTest-context.xml | 43 +++++++
...ridePropertiesForPropertyInjectTest-context.xml | 36 ++++++
.../CamelSpringOverridePropertiesTest-context.xml | 42 +++++++
.../junit5/spring/CamelSpringPlainTest-context.xml | 56 +++++++++
...SpringPropertiesLocationElementTest-context.xml | 49 ++++++++
.../CamelSpringTestPropertySourceTest-context.xml | 41 +++++++
.../properties-location-element-1.properties | 18 +++
.../properties-location-element-2.properties | 18 +++
.../properties-location-element-3.properties | 18 +++
.../camel/test/junit5/spring/test.properties | 20 ++++
49 files changed, 2069 insertions(+), 83 deletions(-)
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringRunner.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringRunner.java
deleted file mode 100644
index d64ce29..0000000
--- a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringRunner.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.test.junit5.spring;
-
-import java.util.List;
-
-import org.junit.runners.model.InitializationError;
-import org.springframework.test.context.TestContextManager;
-import org.springframework.test.context.TestExecutionListener;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-/**
- * An implementation bringing the functionality of {@link org.apache.camel.test.spring.CamelSpringTestSupport} to
- * Spring Test based test cases. This approach allows developers to implement tests
- * for their Spring based applications/routes using the typical Spring Test conventions
- * for test development.
- */
-public class CamelSpringRunner extends SpringJUnit4ClassRunner {
-
- public CamelSpringRunner(Class<?> clazz) throws InitializationError {
- super(clazz);
- }
-
- /**
- * Returns the specialized manager instance that provides tight integration between Camel testing
- * features and Spring.
- *
- * @return a new instance of {@link CamelTestContextManager}.
- */
- @Override
- protected TestContextManager createTestContextManager(Class<?> clazz) {
- return new CamelTestContextManager(clazz);
- }
-
- /**
- * An implementation providing additional integration between Spring Test and Camel
- * testing features.
- */
- public static final class CamelTestContextManager extends TestContextManager {
-
- public CamelTestContextManager(Class<?> testClass) {
- super(testClass);
-
- // is Camel already registered
- if (!alreadyRegistered()) {
- // inject Camel first, and then disable jmx and add the stop-watch
- List<TestExecutionListener> list = getTestExecutionListeners();
- list.add(0, new CamelSpringTestContextLoaderTestExecutionListener());
- list.add(1, new DisableJmxTestExecutionListener());
- list.add(2, new StopWatchTestExecutionListener());
- }
- }
-
- private boolean alreadyRegistered() {
- List<TestExecutionListener> list = getTestExecutionListeners();
- if (list != null) {
- for (TestExecutionListener listener : list) {
- if (listener instanceof CamelSpringTestContextLoaderTestExecutionListener) {
- return true;
- }
- }
- }
-
- return false;
- }
-
- }
-
-}
diff --git a/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTest.java b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTest.java
new file mode 100644
index 0000000..b43e77f
--- /dev/null
+++ b/components/camel-test-spring/src/main/java/org/apache/camel/test/junit5/spring/CamelSpringTest.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.test.context.BootstrapWith;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+@Target({ElementType.TYPE})
+@ExtendWith(SpringExtension.class)
+@BootstrapWith(CamelTestContextBootstrapper.class)
+@TestExecutionListeners(value = {CamelSpringTestContextLoaderTestExecutionListener.class, DisableJmxTestExecutionListener.class,
+ StopWatchTestExecutionListener.class}, mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
+public @interface CamelSpringTest {
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/DebugSpringCamelContextTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/DebugSpringCamelContextTest.java
new file mode 100644
index 0000000..340dc22
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/DebugSpringCamelContextTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+
+public class DebugSpringCamelContextTest extends DebugSpringTest {
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // there is no route to be used
+ }
+ };
+ }
+
+ @Override
+ protected AbstractApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/test/junit5/patterns/applicationContext.xml");
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/DebugSpringTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/DebugSpringTest.java
new file mode 100644
index 0000000..c9138a3
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/DebugSpringTest.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.ProcessorDefinition;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.GenericApplicationContext;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class DebugSpringTest extends CamelSpringTestSupport {
+ private boolean debugged;
+
+ @Override
+ public boolean isUseDebugger() {
+ // must enable debugger
+ return true;
+ }
+
+ @Override
+ protected void debugBefore(Exchange exchange, Processor processor,
+ ProcessorDefinition<?> definition, String id, String shortName) {
+ // this method is invoked before we are about to enter the given processor
+ // from your Java editor you can just add a breakpoint in the code line below
+ log.info("Before " + definition + " with body " + exchange.getIn().getBody());
+ debugged = true;
+ }
+
+
+ @Test
+ public void testDebugger() throws Exception {
+ // set mock expectations
+ getMockEndpoint("mock:a").expectedMessageCount(1);
+ getMockEndpoint("mock:b").expectedMessageCount(1);
+
+ // send a message
+ template.sendBody("direct:start", "World");
+
+ // assert mocks
+ assertMockEndpointsSatisfied();
+ assertTrue(debugged, "The debugger is not called!");
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // this is the route we want to debug
+ from("direct:start")
+ .to("mock:a")
+ .transform(body().prepend("Hello "))
+ .to("mock:b");
+ }
+ };
+ }
+
+
+ @Override
+ protected AbstractApplicationContext createApplicationContext() {
+ return new GenericApplicationContext();
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java
new file mode 100644
index 0000000..ba33b34
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+
+/**
+ *
+ */
+public class MyProduceBean {
+
+ @Produce("mock:result")
+ MySender sender;
+
+ @EndpointInject("direct:start")
+ ProducerTemplate template;
+
+ public void doSomething(String body) {
+ sender.send(body);
+ }
+
+ public ProducerTemplate getProducerTemplate() {
+ return template;
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java
new file mode 100644
index 0000000..0188296
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+/**
+ *
+ */
+public interface MySender {
+
+ void send(String body);
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
new file mode 100644
index 0000000..101d97a
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ *
+ */
+public class ProduceBeanTest extends CamelSpringTestSupport {
+
+ @Test
+ public void testProduceBean() throws Exception {
+ getMockEndpoint("mock:result").expectedMessageCount(1);
+
+ template.sendBody("direct:start", "Hello World");
+
+ assertMockEndpointsSatisfied();
+ }
+
+ @Override
+ protected AbstractApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/test/junit5/patterns/ProduceBeanTest.xml");
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/ProducerBeanInjectTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/ProducerBeanInjectTest.java
new file mode 100644
index 0000000..147847c
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/ProducerBeanInjectTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+public class ProducerBeanInjectTest extends CamelSpringTestSupport {
+
+ @Test
+ public void checkProducerBeanInjection() {
+ MyProduceBean bean = applicationContext.getBean("myProduceBean", MyProduceBean.class);
+ assertNotNull(bean.getProducerTemplate(), "The producerTemplate should not be null.");
+ assertEquals(bean.getProducerTemplate().requestBody("Camel"), "Camel rocks!", "Get a wrong response");
+ }
+
+ protected AbstractApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/test/junit5/patterns/ProduceBeanInjectTest.xml");
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
new file mode 100644
index 0000000..a693ad9
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.patterns;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.junit5.spring.CamelSpringTestSupport;
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class SimpleMockTest extends CamelSpringTestSupport {
+
+ @EndpointInject("mock:result")
+ protected MockEndpoint resultEndpoint;
+
+ @Produce("direct:start")
+ protected ProducerTemplate template;
+
+ @Override
+ protected AbstractApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/test/junit5/patterns/SimpleMockTest.xml");
+ }
+
+ @Test
+ public void testMock() throws Exception {
+ String expectedBody = "Hello World";
+
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+
+ template.sendBodyAndHeader(expectedBody, "foo", "bar");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+ @Test
+ public void testMockAgain() throws Exception {
+ String expectedBody = "Bye World";
+
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+
+ template.sendBodyAndHeader(expectedBody, "foo", "bar");
+
+ resultEndpoint.assertIsSatisfied();
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest.java
new file mode 100644
index 0000000..64bb894
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.ContextConfiguration;
+
+// START SNIPPET: e1
+
+/**
+ * Spring style testing with annotations to configure and setup the test.
+ * <p/>
+ * As we do next extend any base test class, we need to inject our resources
+ * for testing such as the {@link CamelContext} and {@link ProducerTemplate}.
+ */
+@ContextConfiguration
+@ActiveProfiles("test")
+@CamelSpringTest
+public class CamelSpringActiveProfileTest {
+
+ @Autowired
+ protected CamelContext camelContext;
+
+ @Produce(value = "direct:start", context = "camelContext")
+ protected ProducerTemplate start;
+
+ @Test
+ public void testLoadActiveProfile() throws InterruptedException {
+ MockEndpoint mock = camelContext.getEndpoint("mock:test", MockEndpoint.class);
+ mock.expectedBodiesReceived("Hello World");
+ start.sendBody("World");
+ mock.assertIsSatisfied();
+ }
+
+}
+// END SNIPPET: e1
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxInheritedOverrideTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxInheritedOverrideTest.java
new file mode 100644
index 0000000..d40c4fa
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxInheritedOverrideTest.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.impl.engine.DefaultManagementStrategy;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@DisableJmx
+public class CamelSpringDisableJmxInheritedOverrideTest
+ extends CamelSpringDisableJmxTest {
+
+ @Test
+ public void testJmx() throws Exception {
+ assertEquals(DefaultManagementStrategy.class, camelContext.getManagementStrategy().getClass());
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxInheritedTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxInheritedTest.java
new file mode 100644
index 0000000..e57afdf
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxInheritedTest.java
@@ -0,0 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+public class CamelSpringDisableJmxInheritedTest
+ extends CamelSpringDisableJmxTest {
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxTest.java
new file mode 100644
index 0000000..c9000c7
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringDisableJmxTest.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.management.JmxManagementStrategy;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@DisableJmx(false)
+public class CamelSpringDisableJmxTest
+ extends CamelSpringPlainTest {
+
+ @Test
+ @Override
+ public void testJmx() throws Exception {
+ assertEquals(JmxManagementStrategy.class, camelContext.getManagementStrategy().getClass());
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringExcludeRoutesTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringExcludeRoutesTest.java
new file mode 100644
index 0000000..5a0c632
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringExcludeRoutesTest.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+@ExcludeRoutes(TestRouteBuilder.class)
+public class CamelSpringExcludeRoutesTest
+ extends CamelSpringPlainTest {
+
+ @Override
+ @Test
+ public void testExcludedRoute() {
+ assertNull(camelContext.getRoute("excludedRoute"));
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringMockEndpointsAndSkipTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringMockEndpointsAndSkipTest.java
new file mode 100644
index 0000000..87af61c
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringMockEndpointsAndSkipTest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.seda.SedaEndpoint;
+import org.apache.camel.spi.InterceptSendToEndpoint;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
+@MockEndpointsAndSkip("{{mock.skip}}")
+public class CamelSpringMockEndpointsAndSkipTest
+ extends CamelSpringPlainTest {
+
+ @EndpointInject(value = "mock:seda:context2.seda", context = "camelContext2")
+ protected MockEndpoint mock;
+
+ @EndpointInject(value = "seda:context2.seda", context = "camelContext2")
+ private InterceptSendToEndpoint original;
+
+ @Test
+ @Override
+ public void testPositive() throws Exception {
+ assertEquals(ServiceStatus.Started, camelContext.getStatus());
+ assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+
+ mockA.expectedBodiesReceived("David");
+ mockB.expectedBodiesReceived("Hello David");
+ mock.expectedBodiesReceived("Hello David");
+
+ start.sendBody("David");
+ start2.sendBody("David");
+
+ MockEndpoint.assertIsSatisfied(camelContext);
+ MockEndpoint.assertIsSatisfied(camelContext2);
+ assertTrue(((SedaEndpoint) original.getOriginalEndpoint()).getExchanges().isEmpty(), "Original endpoint was invoked");
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringMockEndpointsTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringMockEndpointsTest.java
new file mode 100644
index 0000000..34708e7
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringMockEndpointsTest.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.seda.SedaEndpoint;
+import org.apache.camel.spi.InterceptSendToEndpoint;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@MockEndpoints("seda:context2.seda")
+public class CamelSpringMockEndpointsTest
+ extends CamelSpringPlainTest {
+
+ @EndpointInject(value = "mock:seda:context2.seda", context = "camelContext2")
+ protected MockEndpoint mock;
+
+ @EndpointInject(value = "seda:context2.seda", context = "camelContext2")
+ private InterceptSendToEndpoint original;
+
+ @Test
+ @Override
+ public void testPositive() throws Exception {
+
+ assertEquals(ServiceStatus.Started, camelContext.getStatus());
+ assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+
+ mockA.expectedBodiesReceived("David");
+ mockB.expectedBodiesReceived("Hello David");
+ mockC.expectedBodiesReceived("David");
+ mock.expectedBodiesReceived("Hello David");
+
+ start.sendBody("David");
+ start2.sendBody("David");
+
+ MockEndpoint.assertIsSatisfied(camelContext);
+ MockEndpoint.assertIsSatisfied(camelContext2);
+ assertTrue(((SedaEndpoint) original.getOriginalEndpoint()).getExchanges().size() == 1, "Original endpoint should be invoked");
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesForPropertyInjectTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesForPropertyInjectTest.java
new file mode 100644
index 0000000..18cef45
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesForPropertyInjectTest.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.Properties;
+
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.junit.jupiter.api.Test;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+@ContextConfiguration()
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+@CamelSpringTest
+public class CamelSpringOverridePropertiesForPropertyInjectTest {
+
+ private static final String EXPECTED_PROPERTY_VALUE = "The value is overriden";
+
+ @Produce(value = "direct:start-override-route")
+ private ProducerTemplate start;
+
+ @UseOverridePropertiesWithPropertiesComponent
+ public static Properties override() {
+ Properties answer = new Properties();
+ answer.put("property.to.override", EXPECTED_PROPERTY_VALUE);
+ return answer;
+ }
+
+ @Test
+ public void testOverride() throws Exception {
+ String response = start.requestBody((Object)"ignored", String.class);
+
+ assertThat(response, is(EXPECTED_PROPERTY_VALUE));
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesTest.java
new file mode 100644
index 0000000..c87e110
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesTest.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.Properties;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Test;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+
+@ContextConfiguration()
+// Put here to prevent Spring context caching across tests and test methods since some tests inherit
+// from this test and therefore use the same Spring context. Also because we want to reset the
+// Camel context and mock endpoints between test methods automatically.
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+@CamelSpringTest
+public class CamelSpringOverridePropertiesTest {
+
+ @Produce("direct:start")
+ private ProducerTemplate start;
+
+ @EndpointInject("mock:a")
+ private MockEndpoint mockA;
+
+ @EndpointInject("mock:test")
+ private MockEndpoint mockTest;
+
+ @EndpointInject("mock:foo")
+ private MockEndpoint mockFoo;
+
+ @UseOverridePropertiesWithPropertiesComponent
+ public static Properties override() {
+ Properties answer = new Properties();
+ answer.put("cool.end", "mock:foo");
+ return answer;
+ }
+
+ @Test
+ public void testOverride() throws Exception {
+ mockA.expectedBodiesReceived("Camel");
+ mockTest.expectedMessageCount(0);
+ mockFoo.expectedBodiesReceived("Hello Camel");
+
+ start.sendBody("Camel");
+
+ mockA.assertIsSatisfied();
+ mockTest.assertIsSatisfied();
+ mockFoo.assertIsSatisfied();
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringPlainTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringPlainTest.java
new file mode 100644
index 0000000..508e7b8
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringPlainTest.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.engine.DefaultManagementStrategy;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.DirtiesContext.ClassMode;
+import org.springframework.test.context.ContextConfiguration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
+// START SNIPPET: e1
+// tag::example[]
+@ContextConfiguration()
+// Put here to prevent Spring context caching across tests and test methods since some tests inherit
+// from this test and therefore use the same Spring context. Also because we want to reset the
+// Camel context and mock endpoints between test methods automatically.
+@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
+@CamelSpringTest
+public class CamelSpringPlainTest {
+
+ @Autowired
+ protected CamelContext camelContext;
+
+ @Autowired
+ protected CamelContext camelContext2;
+
+ @EndpointInject(value = "mock:a", context = "camelContext")
+ protected MockEndpoint mockA;
+
+ @EndpointInject(value = "mock:b", context = "camelContext")
+ protected MockEndpoint mockB;
+
+ @EndpointInject(value = "mock:c", context = "camelContext2")
+ protected MockEndpoint mockC;
+
+ @Produce(value = "direct:start", context = "camelContext")
+ protected ProducerTemplate start;
+
+ @Produce(value = "direct:start2", context = "camelContext2")
+ protected ProducerTemplate start2;
+
+ @Test
+ public void testPositive() throws Exception {
+ assertEquals(ServiceStatus.Started, camelContext.getStatus());
+ assertEquals(ServiceStatus.Started, camelContext2.getStatus());
+
+ mockA.expectedBodiesReceived("David");
+ mockB.expectedBodiesReceived("Hello David");
+ mockC.expectedBodiesReceived("David");
+
+ start.sendBody("David");
+ start2.sendBody("David");
+
+ MockEndpoint.assertIsSatisfied(camelContext);
+ MockEndpoint.assertIsSatisfied(camelContext2);
+ }
+
+ @Test
+ public void testJmx() throws Exception {
+ assertEquals(DefaultManagementStrategy.class, camelContext.getManagementStrategy().getClass());
+ }
+
+ @Test
+ public void testShutdownTimeout() throws Exception {
+ assertEquals(10, camelContext.getShutdownStrategy().getTimeout());
+ assertEquals(TimeUnit.SECONDS, camelContext.getShutdownStrategy().getTimeUnit());
+ }
+
+ @Test
+ public void testStopwatch() {
+ StopWatch stopWatch = StopWatchTestExecutionListener.getStopWatch();
+
+ assertNotNull(stopWatch);
+ assertTrue(stopWatch.taken() < 100);
+ }
+
+ @Test
+ public void testExcludedRoute() {
+ assertNotNull(camelContext.getRoute("excludedRoute"));
+ }
+
+ @Test
+ public void testProvidesBreakpoint() {
+ assertNull(camelContext.getDebugger());
+ assertNull(camelContext2.getDebugger());
+ }
+
+ @Test
+ public void testRouteCoverage() throws Exception {
+ // noop
+ }
+
+}
+// end::example[]
+// END SNIPPET: e1
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringPropertiesLocationElementTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringPropertiesLocationElementTest.java
new file mode 100644
index 0000000..a02fe71
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringPropertiesLocationElementTest.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@ContextConfiguration()
+@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
+@CamelSpringTest
+public class CamelSpringPropertiesLocationElementTest {
+ @Autowired
+ protected CamelContext context;
+ @Produce
+ private ProducerTemplate producer;
+ @EndpointInject("mock:result")
+ private MockEndpoint mock;
+
+ @Test
+ public void testPropertiesLocationElement() throws Exception {
+ mock.expectedHeaderReceived("property-1", "property-value-1");
+ mock.expectedHeaderReceived("property-2", "property-value-2");
+ mock.expectedHeaderReceived("property-3", "property-value-3");
+
+ PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
+ assertNotNull(pc, "Properties component not defined");
+
+ List<String> locations = pc.getLocations();
+
+ assertNotNull(locations);
+ assertEquals(4, locations.size(), "Properties locations");
+
+ producer.sendBody("direct:start", null);
+
+ mock.assertIsSatisfied();
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringProvidesBreakpointInherritedTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringProvidesBreakpointInherritedTest.java
new file mode 100644
index 0000000..3154fae
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringProvidesBreakpointInherritedTest.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+public class CamelSpringProvidesBreakpointInherritedTest
+ extends CamelSpringProvidesBreakpointTest {
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringProvidesBreakpointTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringProvidesBreakpointTest.java
new file mode 100644
index 0000000..7889817
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringProvidesBreakpointTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.NamedNode;
+import org.apache.camel.Processor;
+import org.apache.camel.processor.interceptor.BreakpointSupport;
+import org.apache.camel.spi.Breakpoint;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class CamelSpringProvidesBreakpointTest
+ extends CamelSpringPlainTest {
+
+ @ProvidesBreakpoint
+ public static Breakpoint createBreakpoint() {
+ return new TestBreakpoint();
+ }
+
+ @Test
+ @Override
+ public void testProvidesBreakpoint() {
+ assertNotNull(camelContext.getDebugger());
+ assertNotNull(camelContext2.getDebugger());
+
+ start.sendBody("David");
+
+ assertNotNull(camelContext.getDebugger());
+ assertNotNull(camelContext.getDebugger().getBreakpoints());
+ assertEquals(1, camelContext.getDebugger().getBreakpoints().size());
+
+ assertTrue(camelContext.getDebugger().getBreakpoints().get(0) instanceof TestBreakpoint);
+ assertTrue(((TestBreakpoint) camelContext.getDebugger().getBreakpoints().get(0)).isBreakpointHit());
+ }
+
+ private static final class TestBreakpoint extends BreakpointSupport {
+
+ private boolean breakpointHit;
+
+ @Override
+ public void beforeProcess(Exchange exchange, Processor processor, NamedNode definition) {
+ breakpointHit = true;
+ }
+
+ public boolean isBreakpointHit() {
+ return breakpointHit;
+ }
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringRouteProcessorDumpRouteCoverageTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringRouteProcessorDumpRouteCoverageTest.java
new file mode 100644
index 0000000..16e4957
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringRouteProcessorDumpRouteCoverageTest.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.io.File;
+
+import org.apache.camel.management.JmxManagementStrategy;
+import org.apache.camel.test.junit5.TestSupport;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@EnableRouteCoverage
+public class CamelSpringRouteProcessorDumpRouteCoverageTest extends CamelSpringPlainTest {
+
+ @BeforeAll
+ public static void prepareFiles() throws Exception {
+ TestSupport.deleteDirectory("target/camel-route-coverage");
+ }
+
+ @Test
+ @Disabled("@TODO: This test seems to run alone but not amongst other tests")
+ public void testJmx() throws Exception {
+ // JMX is enabled with route coverage
+ assertEquals(JmxManagementStrategy.class, camelContext.getManagementStrategy().getClass());
+ }
+
+ @Override
+ public void testRouteCoverage() throws Exception {
+ camelContext.stop();
+ camelContext2.stop();
+
+ // there should be files
+ String[] names = new File("target/camel-route-coverage").list();
+ assertNotNull(names);
+ assertTrue(names.length > 0);
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutInheritedOverrideTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutInheritedOverrideTest.java
new file mode 100644
index 0000000..5764c93
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutInheritedOverrideTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@ShutdownTimeout
+public class CamelSpringShutdownTimeoutInheritedOverrideTest
+ extends CamelSpringShutdownTimeoutTest {
+
+ @Test
+ @Override
+ public void testShutdownTimeout() throws Exception {
+ assertEquals(10, camelContext.getShutdownStrategy().getTimeout());
+ assertEquals(TimeUnit.SECONDS, camelContext.getShutdownStrategy().getTimeUnit());
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutInheritedTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutInheritedTest.java
new file mode 100644
index 0000000..a146d8a
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutInheritedTest.java
@@ -0,0 +1,22 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+public class CamelSpringShutdownTimeoutInheritedTest
+ extends CamelSpringShutdownTimeoutTest {
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutTest.java
new file mode 100644
index 0000000..7bca1b5
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringShutdownTimeoutTest.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import java.util.concurrent.TimeUnit;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@ShutdownTimeout(value = 11, timeUnit = TimeUnit.MILLISECONDS)
+public class CamelSpringShutdownTimeoutTest
+ extends CamelSpringPlainTest {
+
+ @Test
+ @Override
+ public void testShutdownTimeout() throws Exception {
+ assertEquals(11, camelContext.getShutdownStrategy().getTimeout());
+ assertEquals(TimeUnit.MILLISECONDS, camelContext.getShutdownStrategy().getTimeUnit());
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringTestPropertySourceTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringTestPropertySourceTest.java
new file mode 100644
index 0000000..a745834
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringTestPropertySourceTest.java
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.EndpointInject;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.junit.jupiter.api.Test;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestPropertySource;
+
+@ContextConfiguration
+@TestPropertySource(properties = "fixedBody=Camel")
+@CamelSpringTest
+public class CamelSpringTestPropertySourceTest {
+
+ @Produce("direct:in")
+ private ProducerTemplate start;
+
+ @EndpointInject("mock:out")
+ private MockEndpoint end;
+
+ @Test
+ public void readsFileAndInlinedPropertiesFromAnnotation() throws Exception {
+ end.expectedBodiesReceived("Camel");
+
+ start.sendBody("Aardvark");
+
+ end.assertIsSatisfied();
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupportActiveProfileTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupportActiveProfileTest.java
new file mode 100644
index 0000000..c4a6400
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringTestSupportActiveProfileTest.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.context.support.AbstractApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+// START SNIPPET: e1
+
+/**
+ * Just extend the CamelSpringTestSupport and use Camel test kit for easy Camel based unit testing.
+ */
+public class CamelSpringTestSupportActiveProfileTest extends CamelSpringTestSupport {
+
+ @Override
+ protected AbstractApplicationContext createApplicationContext() {
+ // must not refresh when using active profiles
+ // lets reuse the xml file from the other test
+ return new ClassPathXmlApplicationContext(new String[]{"org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest-context.xml"}, false);
+ }
+
+ @Override
+ protected String[] activeProfiles() {
+ // return the active profiles to be used
+ return new String[]{"test"};
+ }
+
+ @Test
+ public void testLoadActiveProfile() throws InterruptedException {
+ getMockEndpoint("mock:test").expectedBodiesReceived("Hello World");
+ template.sendBody("direct:start", "World");
+ assertMockEndpointsSatisfied();
+ }
+
+}
+// END SNIPPET: e1
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringUseAdviceWithTest.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringUseAdviceWithTest.java
new file mode 100644
index 0000000..6140fb1
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/CamelSpringUseAdviceWithTest.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.util.StopWatch;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+@UseAdviceWith
+public class CamelSpringUseAdviceWithTest extends CamelSpringPlainTest {
+
+ @BeforeEach
+ public void testContextStarted() throws Exception {
+
+ assertEquals(ServiceStatus.Stopped, camelContext.getStatus());
+ assertEquals(ServiceStatus.Stopped, camelContext2.getStatus());
+ camelContext.start();
+ camelContext2.start();
+
+ // just sleep a little to simulate testing take a bit time
+ Thread.sleep(1000);
+ }
+
+ @Test
+ public void testStopwatch() {
+ StopWatch stopWatch = StopWatchTestExecutionListener.getStopWatch();
+
+ assertNotNull(stopWatch);
+ long taken = stopWatch.taken();
+ assertTrue(taken > 0, taken + " > 0, but was: " + taken);
+ assertTrue(taken < 3000, taken + " < 3000, but was: " + taken);
+ }
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/TestPropertyInjectRouteBuilder.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/TestPropertyInjectRouteBuilder.java
new file mode 100644
index 0000000..0ef4ca9
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/TestPropertyInjectRouteBuilder.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.PropertyInject;
+import org.apache.camel.builder.RouteBuilder;
+
+public class TestPropertyInjectRouteBuilder extends RouteBuilder {
+
+ @PropertyInject("{{property.to.override}}")
+ private String propertyToOverride;
+
+ @Override
+ public void configure() throws Exception {
+ from("direct:start-override-route")
+ .transform(constant(propertyToOverride));
+ }
+
+}
diff --git a/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/TestRouteBuilder.java b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/TestRouteBuilder.java
new file mode 100644
index 0000000..838652c
--- /dev/null
+++ b/components/camel-test-spring/src/test/java/org/apache/camel/test/junit5/spring/TestRouteBuilder.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.spring;
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class TestRouteBuilder extends RouteBuilder {
+
+ @Override
+ public void configure() throws Exception {
+
+ from("direct:z")
+ .routeId("excludedRoute")
+ .to("log:org.apache.camel.test.junit4.spring");
+ }
+}
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.xml
new file mode 100644
index 0000000..9570008
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithInterceptSendToEndpointWithLoadbalancerTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <bean id="route" class="org.apache.camel.test.issues.AdviceWithInterceptSendToEndpointWithLoadbalancerTest.LoadbalancerTestRoute" />
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <camel:routeBuilder ref="route"/>
+ </camelContext>
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithOnCompletionTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithOnCompletionTest.xml
new file mode 100644
index 0000000..ad80f65
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithOnCompletionTest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+
+ <onCompletion>
+ <to uri="mock:complete"/>
+ </onCompletion>
+
+ <route>
+ <from uri="file:start"/>
+ <to uri="log:end"/>
+ </route>
+
+ </camelContext>
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithOnExceptionMultipleIssueTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithOnExceptionMultipleIssueTest.xml
new file mode 100644
index 0000000..030be6c
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/AdviceWithOnExceptionMultipleIssueTest.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+
+ <onException>
+ <exception>java.lang.Exception</exception>
+ <handled>
+ <constant>true</constant>
+ </handled>
+ <to uri="mock:error"/>
+ </onException>
+
+ <route id="RouteA">
+ <from uri="direct:startA"/>
+ <to uri="mock:resultA"/>
+ </route>
+
+ <route id="RouteB">
+ <from uri="direct:startB"/>
+ <to uri="mock:resultB"/>
+ </route>
+
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/MockEndpointsAndSkipTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/MockEndpointsAndSkipTest.xml
new file mode 100644
index 0000000..e96d01a
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/issues/MockEndpointsAndSkipTest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+
+ <route>
+ <from uri="direct:start"/>
+ <to uri="log:foo"/>
+ <to uri="seda:foo"/>
+ </route>
+
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/ProduceBeanInjectTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/ProduceBeanInjectTest.xml
new file mode 100644
index 0000000..beef19b
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/ProduceBeanInjectTest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="direct:start"/>
+ <transform>
+ <simple>${in.body} rocks!</simple>
+ </transform>
+ </route>
+ </camelContext>
+
+ <bean id="myProduceBean" class="org.apache.camel.test.junit5.patterns.MyProduceBean"/>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/ProduceBeanTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/ProduceBeanTest.xml
new file mode 100644
index 0000000..13863a8
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/ProduceBeanTest.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
+
+ <route>
+ <from uri="direct:start"/>
+ <bean beanType="org.apache.camel.test.junit5.patterns.MyProduceBean"/>
+ </route>
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/SimpleMockTest.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/SimpleMockTest.xml
new file mode 100644
index 0000000..6f84464
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/SimpleMockTest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="direct:start"/>
+ <to uri="mock:result"/>
+ </route>
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/applicationContext.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/applicationContext.xml
new file mode 100644
index 0000000..17179a4
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/patterns/applicationContext.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring" trace="true" autoStartup="true" >
+
+ <route>
+ <from uri="direct:start" />
+ <to uri="mock:a" />
+ <transform>
+ <simple>Hello ${body}</simple>
+ </transform>
+ <to uri="mock:b" />
+ </route>
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest-context.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest-context.xml
new file mode 100644
index 0000000..a188ede
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringActiveProfileTest-context.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/spring"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="direct:start" />
+ <transform>
+ <simple>Hello ${body}</simple>
+ </transform>
+ <to uri="properties:{{cool.end}}" />
+ </route>
+ </camelContext>
+
+ <!-- setup the profile for testing -->
+ <beans profile="test">
+ <bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
+ <property name="location" value="classpath:org/apache/camel/test/junit5/spring/test.properties"/>
+ </bean>
+ </beans>
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesForPropertyInjectTest-context.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesForPropertyInjectTest-context.xml
new file mode 100644
index 0000000..a7510b2
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesForPropertyInjectTest-context.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
+ <property name="location" value="classpath:org/apache/camel/test/junit5/spring/test.properties"/>
+ </bean>
+
+ <bean id="testRouteBuilder" class="org.apache.camel.test.junit5.spring.TestPropertyInjectRouteBuilder"></bean>
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
+ <routeBuilder ref="testRouteBuilder"/>
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesTest-context.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesTest-context.xml
new file mode 100644
index 0000000..712e4dd
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringOverridePropertiesTest-context.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
+ <property name="location" value="classpath:org/apache/camel/test/junit5/spring/test.properties"/>
+ </bean>
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="direct:start"/>
+ <to uri="mock:a"/>
+ <transform>
+ <simple>Hello ${body}</simple>
+ </transform>
+ <to uri="{{cool.end}}"/>
+ </route>
+ </camelContext>
+
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringPlainTest-context.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringPlainTest-context.xml
new file mode 100644
index 0000000..218f158
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringPlainTest-context.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring" trace="true" autoStartup="true">
+ <packageScan>
+ <package>org.apache.camel.test.junit5.spring</package>
+ </packageScan>
+ <route>
+ <from uri="direct:start"/>
+ <to uri="mock:a"/>
+ <transform>
+ <simple>Hello ${body}</simple>
+ </transform>
+ <to uri="mock:b"/>
+ </route>
+ </camelContext>
+
+ <bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
+ <property name="location" value="classpath:org/apache/camel/test/junit5/spring/test.properties"/>
+ </bean>
+
+ <camelContext id="camelContext2" xmlns="http://camel.apache.org/schema/spring" trace="true" autoStartup="true">
+ <route>
+ <from uri="direct:start2"/>
+ <to uri="mock:c"/>
+ <transform>
+ <simple>Hello ${body}</simple>
+ </transform>
+ <to uri="log:org.apache.camel.test.junit5.spring"/>
+ <to uri="seda:context2.seda"/>
+ </route>
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringPropertiesLocationElementTest-context.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringPropertiesLocationElementTest-context.xml
new file mode 100644
index 0000000..be91d6c
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringPropertiesLocationElementTest-context.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd ">
+
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <propertyPlaceholder id="property-placeholder-camel" location="classpath:org/apache/camel/test/junit5/spring/properties-location-element-3.properties">
+ <propertiesLocation resolver="classpath" path="org/apache/camel/test/junit5/spring/properties-location-element-1.properties"/>
+ <propertiesLocation resolver="classpath" path="org/apache/camel/test/junit5/spring/properties-location-element-2.properties"/>
+ <propertiesLocation resolver="classpath" path="org/apache/camel/test/junit5/spring/properties-location-element-4.properties" optional="true"/>
+ </propertyPlaceholder>
+
+ <route>
+ <from uri="direct:start"/>
+ <setHeader name="property-1">
+ <constant>{{property-key-1}}</constant>
+ </setHeader>
+ <setHeader name="property-2">
+ <constant>{{property-key-2}}</constant>
+ </setHeader>
+ <setHeader name="property-3">
+ <constant>{{property-key-3}}</constant>
+ </setHeader>
+ <to uri="mock:result"/>
+ </route>
+
+ </camelContext>
+
+</beans>
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringTestPropertySourceTest-context.xml b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringTestPropertySourceTest-context.xml
new file mode 100644
index 0000000..220e140
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/CamelSpringTestPropertySourceTest-context.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
+
+ <!-- Enable PropertySource -->
+ <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer"/>
+
+ <bean id="myBean" class="org.apache.camel.ValueHolder">
+ <constructor-arg value="${fixedBody}"/> <!-- configured from @TestPropertySource -->
+ </bean>
+
+ <camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring" trace="true" autoStartup="true">
+ <route>
+ <from uri="direct:in"/>
+ <bean ref="myBean" method="get"/>
+ <to uri="mock:out"/>
+ </route>
+ </camelContext>
+
+</beans>
\ No newline at end of file
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-1.properties b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-1.properties
new file mode 100644
index 0000000..81ff2b5
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-1.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+property-key-1 = property-value-1
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-2.properties b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-2.properties
new file mode 100644
index 0000000..24ebe3f
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-2.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+property-key-2 = property-value-2
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-3.properties b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-3.properties
new file mode 100644
index 0000000..6c94f7f
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/properties-location-element-3.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+property-key-3 = property-value-3
diff --git a/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/test.properties b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/test.properties
new file mode 100644
index 0000000..e8a539c
--- /dev/null
+++ b/components/camel-test-spring/src/test/resources/org/apache/camel/test/junit5/spring/test.properties
@@ -0,0 +1,20 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+cool.end=mock:test
+mock.skip=seda:*
+property.to.override=This value should be overriden
[camel] 05/09: CAMEL-13342: Implemented a first version of a
proof-of-concept for camel-testcontainers with JUnit 5
Posted by al...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
aldettinger pushed a commit to branch CAMEL-13342-JUNIT5-EXPLORATORY
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e044da13e5e7687730619071cedba84e4170ac7e
Author: aldettinger <al...@gmail.com>
AuthorDate: Thu Jul 4 11:35:54 2019 +0200
CAMEL-13342: Implemented a first version of a proof-of-concept for camel-testcontainers with JUnit 5
---
.../camel/component/consul/ConsulCatalogTest.java | 16 +--
.../component/consul/ConsulClientKeyValueTest.java | 7 +-
.../component/consul/ConsulCoordinatesTest.java | 20 ++--
.../camel/component/consul/ConsulEventTest.java | 9 +-
.../component/consul/ConsulEventWatchTest.java | 2 +-
.../camel/component/consul/ConsulHealthTest.java | 14 +--
.../camel/component/consul/ConsulKeyValueTest.java | 7 +-
.../component/consul/ConsulKeyValueWatchTest.java | 2 +-
.../camel/component/consul/ConsulRegistryTest.java | 32 +++---
.../component/consul/ConsulRegistryUtilsTest.java | 6 +-
.../camel/component/consul/ConsulSessionTest.java | 18 ++--
.../camel/component/consul/ConsulTestSupport.java | 17 ++--
.../cloud/ConsulDefaultServiceCallRouteTest.java | 2 +-
.../cloud/ConsulRibbonServiceCallRouteTest.java | 2 +-
.../ConsulServiceCallWithRegistrationTest.java | 60 ++++++-----
.../consul/cloud/ConsulServiceDiscoveryTest.java | 5 +-
.../cloud/ConsulServiceRegistrationTestBase.java | 5 +-
.../consul/cloud/ConsulServiceRegistryTest.java | 4 +-
.../ConsulClusteredRoutePolicyFactoryTest.java | 14 +--
.../cluster/ConsulClusteredRoutePolicyTest.java | 14 +--
.../component/consul/cluster/ConsulMasterTest.java | 14 +--
components/camel-testcontainers/pom.xml | 6 +-
.../testcontainers/ContainerAwareTestSupport.java | 112 +++++++++++++++++++++
.../ContainerAwareTestSupportIT.java | 54 ++++++++++
24 files changed, 315 insertions(+), 127 deletions(-)
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java
index d96305b..097daec 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCatalogTest.java
@@ -21,8 +21,8 @@ import java.util.List;
import com.orbitz.consul.model.health.Node;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulCatalogActions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
public class ConsulCatalogTest extends ConsulTestSupport {
@@ -34,9 +34,9 @@ public class ConsulCatalogTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertFalse(ref.isEmpty());
- Assert.assertFalse(res.isEmpty());
- Assert.assertEquals(ref, res);
+ Assertions.assertFalse(ref.isEmpty());
+ Assertions.assertFalse(res.isEmpty());
+ Assertions.assertEquals(ref, res);
}
@Test
@@ -47,9 +47,9 @@ public class ConsulCatalogTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertFalse(ref.isEmpty());
- Assert.assertFalse(res.isEmpty());
- Assert.assertEquals(ref, res);
+ Assertions.assertFalse(ref.isEmpty());
+ Assertions.assertFalse(res.isEmpty());
+ Assertions.assertEquals(ref, res);
}
@Override
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java
index ef6cc27..0835d8c 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulClientKeyValueTest.java
@@ -24,7 +24,8 @@ import org.apache.camel.BindToRegistry;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulKeyValueActions;
import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
public class ConsulClientKeyValueTest extends ConsulTestSupport {
@@ -49,8 +50,8 @@ public class ConsulClientKeyValueTest extends ConsulTestSupport {
Optional<String> keyVal = getConsul().keyValueClient().getValueAsString(key);
- assertTrue(keyVal.isPresent());
- assertEquals(val, keyVal.get());
+ Assertions.assertTrue(keyVal.isPresent());
+ Assertions.assertEquals(val, keyVal.get());
}
@BindToRegistry("consulClient")
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java
index 1b9d280..fc8a855 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulCoordinatesTest.java
@@ -22,9 +22,9 @@ import com.orbitz.consul.model.coordinate.Coordinate;
import com.orbitz.consul.model.coordinate.Datacenter;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulCoordinatesActions;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
public class ConsulCoordinatesTest extends ConsulTestSupport {
@@ -36,12 +36,12 @@ public class ConsulCoordinatesTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertFalse(ref.isEmpty());
- Assert.assertFalse(res.isEmpty());
- Assert.assertEquals(ref, res);
+ Assertions.assertFalse(ref.isEmpty());
+ Assertions.assertFalse(res.isEmpty());
+ Assertions.assertEquals(ref, res);
}
- @Ignore("Disabled as it seems that nodes is always 0")
+ @Disabled("Disabled as it seems that nodes is always 0")
@Test
public void testNodes() throws Exception {
List<Coordinate> ref = getConsul().coordinateClient().getNodes();
@@ -50,9 +50,9 @@ public class ConsulCoordinatesTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertFalse(ref.isEmpty());
- Assert.assertFalse(res.isEmpty());
- Assert.assertEquals(ref, res);
+ Assertions.assertFalse(ref.isEmpty());
+ Assertions.assertFalse(res.isEmpty());
+ Assertions.assertEquals(ref, res);
}
@Override
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java
index 6daed84..5050343 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventTest.java
@@ -23,7 +23,8 @@ import com.orbitz.consul.model.event.Event;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulEventActions;
import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
public class ConsulEventTest extends ConsulTestSupport {
@@ -48,9 +49,9 @@ public class ConsulEventTest extends ConsulTestSupport {
EventResponse response = getConsul().eventClient().listEvents(key);
List<Event> events = response.getEvents();
- assertFalse(events.isEmpty());
- assertTrue(events.get(0).getPayload().isPresent());
- assertEquals(val, events.get(0).getPayload().get());
+ Assertions.assertFalse(events.isEmpty());
+ Assertions.assertTrue(events.get(0).getPayload().isPresent());
+ Assertions.assertEquals(val, events.get(0).getPayload().get());
}
@Override
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java
index 8550295..b546e1c 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulEventWatchTest.java
@@ -21,7 +21,7 @@ import java.util.List;
import com.orbitz.consul.EventClient;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class ConsulEventWatchTest extends ConsulTestSupport {
private String key;
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java
index 79e2cfe..79855b7 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulHealthTest.java
@@ -27,8 +27,8 @@ import com.orbitz.consul.model.agent.Registration;
import com.orbitz.consul.model.health.ServiceHealth;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulHealthActions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
public class ConsulHealthTest extends ConsulTestSupport {
private AgentClient client;
@@ -85,14 +85,14 @@ public class ConsulHealthTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertEquals(2, ref.size());
- Assert.assertEquals(2, res.size());
- Assert.assertEquals(ref, res);
+ Assertions.assertEquals(2, ref.size());
+ Assertions.assertEquals(2, res.size());
+ Assertions.assertEquals(ref, res);
- assertTrue(registrations.stream().anyMatch(
+ Assertions.assertTrue(registrations.stream().anyMatch(
r -> r.getPort().isPresent() && r.getPort().get() == res.get(0).getService().getPort() && r.getId().equalsIgnoreCase(res.get(0).getService().getId())
));
- assertTrue(registrations.stream().anyMatch(
+ Assertions.assertTrue(registrations.stream().anyMatch(
r -> r.getPort().isPresent() && r.getPort().get() == res.get(1).getService().getPort() && r.getId().equalsIgnoreCase(res.get(1).getService().getId())
));
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java
index dc03889..1a61f29 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueTest.java
@@ -21,7 +21,8 @@ import java.util.Optional;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulKeyValueActions;
import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
public class ConsulKeyValueTest extends ConsulTestSupport {
@@ -46,8 +47,8 @@ public class ConsulKeyValueTest extends ConsulTestSupport {
Optional<String> keyVal = getConsul().keyValueClient().getValueAsString(key);
- assertTrue(keyVal.isPresent());
- assertEquals(val, keyVal.get());
+ Assertions.assertTrue(keyVal.isPresent());
+ Assertions.assertEquals(val, keyVal.get());
}
@Override
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java
index 716e25e..7dcfab9 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulKeyValueWatchTest.java
@@ -22,7 +22,7 @@ import java.util.Random;
import com.orbitz.consul.KeyValueClient;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class ConsulKeyValueWatchTest extends ConsulTestSupport {
private String key;
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java
index 67cc2fd..68e94fd 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryTest.java
@@ -23,14 +23,14 @@ import java.util.Set;
import com.orbitz.consul.Consul;
import org.apache.camel.NoSuchBeanException;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
import org.testcontainers.containers.GenericContainer;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
/**
* Unit test for Camel Registry implementation for Consul
@@ -49,7 +49,7 @@ public class ConsulRegistryTest implements Serializable {
}
}
- @BeforeClass
+ @BeforeAll
public static void setUp() {
container = ConsulTestSupport.consulContainer();
container.start();
@@ -57,7 +57,7 @@ public class ConsulRegistryTest implements Serializable {
registry = new ConsulRegistry(container.getContainerIpAddress(), container.getMappedPort(Consul.DEFAULT_HTTP_PORT));
}
- @AfterClass
+ @AfterAll
public static void tearDown() {
container.stop();
}
@@ -67,7 +67,7 @@ public class ConsulRegistryTest implements Serializable {
registry.put("stringTestKey", "stringValue");
String result = (String) registry.lookupByName("stringTestKey");
registry.remove("stringTestKey");
- assertNotNull(result);
+ Assertions.assertNotNull(result);
assertEquals("stringValue", result);
}
@@ -77,7 +77,7 @@ public class ConsulRegistryTest implements Serializable {
registry.put("uniqueKey", "stringValueTwo");
String result = (String) registry.lookupByName("uniqueKey");
registry.remove("uniqueKey");
- assertNotNull(result);
+ Assertions.assertNotNull(result);
assertEquals("stringValueTwo", result);
}
@@ -86,7 +86,7 @@ public class ConsulRegistryTest implements Serializable {
registry.put("namedKey", "namedValue");
String result = (String) registry.lookupByName("namedKey");
registry.remove("namedKey");
- assertNotNull(result);
+ Assertions.assertNotNull(result);
assertEquals("namedValue", result);
}
@@ -104,7 +104,7 @@ public class ConsulRegistryTest implements Serializable {
registry.put("testClass", consulTestClass);
ConsulTestClass consulTestClassClone = registry.lookupByNameAndType("testClass", consulTestClass.getClass());
registry.remove("testClass");
- assertNotNull(consulTestClassClone);
+ Assertions.assertNotNull(consulTestClassClone);
assertEquals(consulTestClass.getClass(), consulTestClassClone.getClass());
}
@@ -128,7 +128,7 @@ public class ConsulRegistryTest implements Serializable {
registry.remove("testClassOne");
registry.remove("testClassTwo");
HashMap<String, ConsulTestClass> emptyHashMap = new HashMap<>();
- assertNotNull(consulTestClassMap);
+ Assertions.assertNotNull(consulTestClassMap);
assertEquals(consulTestClassMap.getClass(), emptyHashMap.getClass());
assertEquals(2, consulTestClassMap.size());
}
@@ -153,7 +153,7 @@ public class ConsulRegistryTest implements Serializable {
ConsulTestClass classTwo = new ConsulTestClass();
registry.put("classTwo", classTwo);
Set<? extends ConsulTestClass> results = registry.findByType(classOne.getClass());
- assertNotNull(results);
+ Assertions.assertNotNull(results);
HashSet<ConsulTestClass> hashSet = new HashSet<>();
registry.remove("classOne");
registry.remove("classTwo");
@@ -165,8 +165,8 @@ public class ConsulRegistryTest implements Serializable {
}
- @Test(expected = NoSuchBeanException.class)
+ @Test
public void deleteNonExisting() {
- registry.remove("nonExisting");
+ Assertions.assertThrows(NoSuchBeanException.class, () -> registry.remove("nonExisting"));
}
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java
index f56045d..221e569 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulRegistryUtilsTest.java
@@ -21,10 +21,10 @@ import java.util.Arrays;
import java.util.List;
import org.apache.camel.component.consul.ConsulRegistry.ConsulRegistryUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
/**
* @author <a href="https://github.com/ppalaga">Peter Palaga</a>
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java
index 63fa765..300feaa 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulSessionTest.java
@@ -24,8 +24,8 @@ import com.orbitz.consul.model.session.SessionCreatedResponse;
import com.orbitz.consul.model.session.SessionInfo;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.endpoint.ConsulSessionActions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
public class ConsulSessionTest extends ConsulTestSupport {
@@ -40,8 +40,8 @@ public class ConsulSessionTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertEquals(sessions, list.size());
- Assert.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name)));
+ Assertions.assertEquals(sessions, list.size());
+ Assertions.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name)));
}
SessionCreatedResponse res = fluentTemplate()
@@ -50,7 +50,7 @@ public class ConsulSessionTest extends ConsulTestSupport {
.to("direct:consul")
.request(SessionCreatedResponse.class);
- Assert.assertNotNull(res.getId());
+ Assertions.assertNotNull(res.getId());
{
List<SessionInfo> list = fluentTemplate()
@@ -58,8 +58,8 @@ public class ConsulSessionTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertEquals(sessions + 1, list.size());
- Assert.assertTrue(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name)));
+ Assertions.assertEquals(sessions + 1, list.size());
+ Assertions.assertTrue(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name)));
}
{
@@ -74,8 +74,8 @@ public class ConsulSessionTest extends ConsulTestSupport {
.to("direct:consul")
.request(List.class);
- Assert.assertEquals(sessions, list.size());
- Assert.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name)));
+ Assertions.assertEquals(sessions, list.size());
+ Assertions.assertFalse(list.stream().anyMatch(s -> s.getName().isPresent() && s.getName().get().equals(name)));
}
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java
index bc1d6cd..a5e8831 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/ConsulTestSupport.java
@@ -24,10 +24,10 @@ import com.orbitz.consul.Consul;
import com.orbitz.consul.KeyValueClient;
import org.apache.camel.BindToRegistry;
-import org.apache.camel.test.testcontainers.ContainerAwareTestSupport;
+import org.apache.camel.test.junit5.testcontainers.ContainerAwareTestSupport;
import org.apache.camel.test.testcontainers.Wait;
-import org.junit.Rule;
-import org.junit.rules.TestName;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.TestInfo;
import org.testcontainers.containers.GenericContainer;
public class ConsulTestSupport extends ContainerAwareTestSupport {
@@ -35,8 +35,13 @@ public class ConsulTestSupport extends ContainerAwareTestSupport {
public static final String CONTAINER_NAME = "consul";
public static final String KV_PREFIX = "/camel";
- @Rule
- public final TestName testName = new TestName();
+ protected String testName;
+
+ @BeforeEach
+ public void setUp(TestInfo testInfo) throws Exception {
+ super.setUp();
+ testName = testInfo.getDisplayName();
+ }
@BindToRegistry("consul")
public ConsulComponent getConsulComponent() {
@@ -69,7 +74,7 @@ public class ConsulTestSupport extends ContainerAwareTestSupport {
}
protected String generateKey() {
- return KV_PREFIX + "/" + testName.getMethodName() + "/" + generateRandomString();
+ return KV_PREFIX + "/" + testName + "/" + generateRandomString();
}
protected String consulUrl() {
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java
index c21ed04..1f054d0 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulDefaultServiceCallRouteTest.java
@@ -26,7 +26,7 @@ import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.test.AvailablePortFinder;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class ConsulDefaultServiceCallRouteTest extends ConsulTestSupport {
private static final String SERVICE_NAME = "http-service";
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java
index eb7c769..ec26483 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulRibbonServiceCallRouteTest.java
@@ -26,7 +26,7 @@ import org.apache.camel.RoutesBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.test.AvailablePortFinder;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
public class ConsulRibbonServiceCallRouteTest extends ConsulTestSupport {
private static final String SERVICE_NAME = "http-service";
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java
index e7f6a80..9cb0334 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceCallWithRegistrationTest.java
@@ -23,9 +23,12 @@ import org.apache.camel.CamelExecutionException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.impl.cloud.ServiceRegistrationRoutePolicy;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.springframework.util.SocketUtils;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
public class ConsulServiceCallWithRegistrationTest extends ConsulTestSupport {
private static final String SERVICE_HOST = "localhost";
@@ -90,43 +93,36 @@ public class ConsulServiceCallWithRegistrationTest extends ConsulTestSupport {
context.start();
- assertEquals("ping on " + port, template.requestBody("direct:start", "ping", String.class));
+ Assertions.assertEquals("ping on " + port, template.requestBody("direct:start", "ping", String.class));
}
- @Test(expected = CamelExecutionException.class)
+ @Test
public void testServiceCallFailure() throws Exception {
- final int port = SocketUtils.findAvailableTcpPort();
- final String serviceId = UUID.randomUUID().toString();
- final String serviceName = UUID.randomUUID().toString();
- context.addRoutes(new RouteBuilder() {
- @Override
- public void configure() throws Exception {
- // context path is had coded so it should fail as it not exposed
- // by jetty
- from("direct:start")
- .serviceCall()
- .name(serviceName + "/bad/path")
- .component("http")
- .defaultLoadBalancer()
- .consulServiceDiscovery()
- .url(consulUrl())
- .end()
- .end()
- .log("${body}");
+ assertThrows(CamelExecutionException.class, () -> {
- fromF("undertow:http://%s:%d/service/path", SERVICE_HOST, port)
- .routeId(serviceId)
- .routeGroup(serviceName)
- .routePolicy(new ServiceRegistrationRoutePolicy())
- .transform()
- .simple("${in.body} on " + port);
- }
- });
+ final int port = SocketUtils.findAvailableTcpPort();
+ final String serviceId = UUID.randomUUID().toString();
+ final String serviceName = UUID.randomUUID().toString();
- context.start();
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ // context path is had coded so it should fail as it not
+ // exposed
+ // by jetty
+ from("direct:start").serviceCall().name(serviceName + "/bad/path").component("http").defaultLoadBalancer().consulServiceDiscovery().url(consulUrl()).end().end()
+ .log("${body}");
- template.requestBody("direct:start", "ping", String.class);
- fail("Should have failed");
+ fromF("undertow:http://%s:%d/service/path", SERVICE_HOST, port).routeId(serviceId).routeGroup(serviceName).routePolicy(new ServiceRegistrationRoutePolicy())
+ .transform().simple("${in.body} on " + port);
+ }
+ });
+
+ context.start();
+
+ template.requestBody("direct:start", "ping", String.class);
+ Assertions.fail("Should have failed");
+ });
}
}
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java
index 8023c29..196500f 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceDiscoveryTest.java
@@ -29,9 +29,12 @@ import org.apache.camel.cloud.ServiceDiscovery;
import org.apache.camel.component.consul.ConsulConfiguration;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.assertj.core.api.Assertions;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.util.SocketUtils;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
public class ConsulServiceDiscoveryTest extends ConsulTestSupport {
private AgentClient client;
private List<Registration> registrations;
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java
index b9a3bed..231cf88 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistrationTestBase.java
@@ -28,9 +28,12 @@ import com.orbitz.consul.model.health.ServiceHealth;
import org.apache.camel.CamelContext;
import org.apache.camel.cloud.ServiceDefinition;
import org.apache.camel.component.consul.ConsulTestSupport;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
import org.springframework.util.SocketUtils;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
public abstract class ConsulServiceRegistrationTestBase extends ConsulTestSupport {
protected static final String SERVICE_ID = UUID.randomUUID().toString();
protected static final String SERVICE_NAME = "my-service";
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java
index 2c7f574..b4e0df0 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cloud/ConsulServiceRegistryTest.java
@@ -24,7 +24,9 @@ import com.orbitz.consul.model.catalog.CatalogService;
import com.orbitz.consul.model.health.ServiceHealth;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.impl.cloud.DefaultServiceDefinition;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
public class ConsulServiceRegistryTest extends ConsulTestSupport {
@Override
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
index bdd59df..7d996d5 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyFactoryTest.java
@@ -31,16 +31,18 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.cluster.ClusteredRoutePolicyFactory;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+@Testcontainers
public class ConsulClusteredRoutePolicyFactoryTest {
- @ClassRule
+ @Container
public static GenericContainer container = ConsulTestSupport.consulContainer();
private static final Logger LOGGER = LoggerFactory.getLogger(ConsulClusteredRoutePolicyFactoryTest.class);
@@ -62,8 +64,8 @@ public class ConsulClusteredRoutePolicyFactoryTest {
LATCH.await(1, TimeUnit.MINUTES);
SCHEDULER.shutdownNow();
- Assert.assertEquals(CLIENTS.size(), RESULTS.size());
- Assert.assertTrue(RESULTS.containsAll(CLIENTS));
+ Assertions.assertEquals(CLIENTS.size(), RESULTS.size());
+ Assertions.assertTrue(RESULTS.containsAll(CLIENTS));
}
// ************************************
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java
index cb06bb6..a7867d3 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulClusteredRoutePolicyTest.java
@@ -31,16 +31,18 @@ import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.cluster.ClusteredRoutePolicy;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+@Testcontainers
public class ConsulClusteredRoutePolicyTest {
- @ClassRule
+ @Container
public static GenericContainer container = ConsulTestSupport.consulContainer();
private static final Logger LOGGER = LoggerFactory.getLogger(ConsulClusteredRoutePolicyTest.class);
@@ -62,8 +64,8 @@ public class ConsulClusteredRoutePolicyTest {
LATCH.await(1, TimeUnit.MINUTES);
SCHEDULER.shutdownNow();
- Assert.assertEquals(CLIENTS.size(), RESULTS.size());
- Assert.assertTrue(RESULTS.containsAll(CLIENTS));
+ Assertions.assertEquals(CLIENTS.size(), RESULTS.size());
+ Assertions.assertTrue(RESULTS.containsAll(CLIENTS));
}
// ************************************
diff --git a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java
index 90129b2..0a609ff 100644
--- a/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java
+++ b/components/camel-consul/src/test/java/org/apache/camel/component/consul/cluster/ConsulMasterTest.java
@@ -30,16 +30,18 @@ import com.orbitz.consul.Consul;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.consul.ConsulTestSupport;
import org.apache.camel.impl.DefaultCamelContext;
-import org.junit.Assert;
-import org.junit.ClassRule;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+@Testcontainers
public class ConsulMasterTest {
- @ClassRule
+ @Container
public static GenericContainer container = ConsulTestSupport.consulContainer();
private static final Logger LOGGER = LoggerFactory.getLogger(ConsulMasterTest.class);
@@ -61,8 +63,8 @@ public class ConsulMasterTest {
LATCH.await(1, TimeUnit.MINUTES);
SCHEDULER.shutdownNow();
- Assert.assertEquals(CLIENTS.size(), RESULTS.size());
- Assert.assertTrue(RESULTS.containsAll(CLIENTS));
+ Assertions.assertEquals(CLIENTS.size(), RESULTS.size());
+ Assertions.assertTrue(RESULTS.containsAll(CLIENTS));
}
// ************************************
diff --git a/components/camel-testcontainers/pom.xml b/components/camel-testcontainers/pom.xml
index c882cf5..7686ef5 100644
--- a/components/camel-testcontainers/pom.xml
+++ b/components/camel-testcontainers/pom.xml
@@ -49,7 +49,11 @@
<artifactId>testcontainers</artifactId>
<version>${testcontainers-version}</version>
</dependency>
-
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>junit-jupiter</artifactId>
+ <version>${testcontainers-version}</version>
+ </dependency>
<!-- optional dependencies for running tests -->
<dependency>
<groupId>org.assertj</groupId>
diff --git a/components/camel-testcontainers/src/main/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupport.java b/components/camel-testcontainers/src/main/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupport.java
new file mode 100644
index 0000000..c5381ff
--- /dev/null
+++ b/components/camel-testcontainers/src/main/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupport.java
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.testcontainers;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.properties.PropertiesComponent;
+import org.apache.camel.test.junit5.CamelTestSupport;
+import org.apache.camel.test.testcontainers.ContainerPropertiesFunction;
+import org.apache.camel.test.testcontainers.Containers;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
+
+public class ContainerAwareTestSupport extends CamelTestSupport {
+ private List<GenericContainer<?>> containers = new CopyOnWriteArrayList<>();
+
+ // ******************
+ // Setup
+ // ******************
+
+ @Override
+ protected void setupResources() throws Exception {
+ super.setupResources();
+
+ containers.clear();
+ containers.addAll(createContainers());
+
+ final Network network = containerNetwork();
+ final long timeout = containersStartupTimeout();
+
+ Containers.start(containers, network, timeout);
+ }
+
+ @Override
+ protected void cleanupResources() throws Exception {
+ super.cleanupResources();
+
+ Containers.stop(containers, containerShutdownTimeout());
+ }
+
+ @Override
+ protected CamelContext createCamelContext() throws Exception {
+ final CamelContext context = super.createCamelContext();
+ final PropertiesComponent pc = context.getComponent("properties", PropertiesComponent.class);
+
+ pc.addFunction(new ContainerPropertiesFunction(containers));
+
+ return context;
+ }
+
+ // ******************
+ // Containers set-up
+ // ******************
+
+ protected GenericContainer<?> createContainer() {
+ return null;
+ }
+
+ protected List<GenericContainer<?>> createContainers() {
+ GenericContainer<?> container = createContainer();
+
+ return container == null
+ ? Collections.emptyList()
+ : Collections.singletonList(container);
+ }
+
+ protected long containersStartupTimeout() {
+ return TimeUnit.MINUTES.toSeconds(1);
+ }
+
+ protected long containerShutdownTimeout() {
+ return TimeUnit.MINUTES.toSeconds(1);
+ }
+
+ protected Network containerNetwork() {
+ return null;
+ }
+
+ // ******************
+ // Helpers
+ // ******************
+
+ protected GenericContainer<?> getContainer(String containerName) {
+ return Containers.lookup(containers, containerName);
+ }
+
+ protected String getContainerHost(String containerName) {
+ return getContainer(containerName).getContainerIpAddress();
+ }
+
+ protected int getContainerPort(String containerName, int originalPort) {
+ return getContainer(containerName).getMappedPort(originalPort);
+ }
+}
diff --git a/components/camel-testcontainers/src/test/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupportIT.java b/components/camel-testcontainers/src/test/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupportIT.java
new file mode 100644
index 0000000..1a608ea
--- /dev/null
+++ b/components/camel-testcontainers/src/test/java/org/apache/camel/test/junit5/testcontainers/ContainerAwareTestSupportIT.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.junit5.testcontainers;
+
+import org.apache.camel.test.testcontainers.Wait;
+import org.assertj.core.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.testcontainers.containers.GenericContainer;
+
+public class ContainerAwareTestSupportIT extends ContainerAwareTestSupport {
+ @Test
+ public void testPropertyPlaceholders() throws Exception {
+ final GenericContainer<?> container = getContainer("myconsul");
+
+ final String host = context.resolvePropertyPlaceholders("{{container:host:myconsul}}");
+ Assertions.assertThat(host).isEqualTo(container.getContainerIpAddress());
+
+ final String port = context.resolvePropertyPlaceholders("{{container:port:8500@myconsul}}");
+ Assertions.assertThat(port).isEqualTo("" + container.getMappedPort(8500));
+ }
+
+ @Override
+ protected GenericContainer<?> createContainer() {
+ return new GenericContainer<>("consul:1.5.1")
+ .withNetworkAliases("myconsul")
+ .withExposedPorts(8500)
+ .waitingFor(Wait.forLogMessageContaining("Synced node info", 1))
+ .withCommand(
+ "agent",
+ "-dev",
+ "-server",
+ "-bootstrap",
+ "-client",
+ "0.0.0.0",
+ "-log-level",
+ "trace"
+ );
+ }
+
+}