You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2021/03/12 07:35:19 UTC
[camel] 01/08: CAMEL-16334 - Having a middle folder for test (unit
+ testcontainers) components
This is an automated email from the ASF dual-hosted git repository.
acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
commit bd72c627d6bd8934d988ebe9250c7e1781f0b8fe
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 12 07:13:20 2021 +0100
CAMEL-16334 - Having a middle folder for test (unit + testcontainers) components
---
components/camel-test-cdi/pom.xml | 68 --
.../services/org/apache/camel/other.properties | 7 -
.../src/generated/resources/test-cdi.json | 15 -
.../camel-test-cdi/src/main/docs/test-cdi.adoc | 738 -------------
.../apache/camel/test/cdi/AnnotatedDecorator.java | 84 --
.../camel/test/cdi/AnnotatedMethodDecorator.java | 71 --
.../camel/test/cdi/AnnotatedTypeDecorator.java | 80 --
.../java/org/apache/camel/test/cdi/AnyLiteral.java | 30 -
.../main/java/org/apache/camel/test/cdi/Beans.java | 97 --
.../org/apache/camel/test/cdi/CamelCdiContext.java | 46 -
.../apache/camel/test/cdi/CamelCdiDeployment.java | 82 --
.../org/apache/camel/test/cdi/CamelCdiRunner.java | 98 --
.../camel/test/cdi/CamelCdiTestExtension.java | 71 --
.../test/cdi/FrameworkAnnotatedParameter.java | 91 --
.../test/cdi/FrameworkMethodCdiInjection.java | 53 -
.../test/cdi/FrameworkMethodInjectionPoint.java | 88 --
.../camel/test/cdi/FrameworkMethodSorter.java | 37 -
.../main/java/org/apache/camel/test/cdi/Order.java | 32 -
.../org/apache/camel/test/cdi/PriorityLiteral.java | 38 -
.../java/org/apache/camel/test/cdi/FilterTest.java | 73 --
.../src/test/resources/log4j2.properties | 28 -
components/camel-test-junit5/pom.xml | 170 ---
.../services/org/apache/camel/other.properties | 7 -
.../src/generated/resources/test-junit5.json | 15 -
.../src/main/docs/test-junit5.adoc | 93 --
.../org/apache/camel/test/AvailablePortFinder.java | 93 --
.../AvailablePortFinderPropertiesFunction.java | 115 --
.../camel/test/CamelRouteCoverageDumper.java | 200 ----
.../test/ExcludingPackageScanClassResolver.java | 33 -
.../camel/test/TestSupportNodeIdFactory.java | 30 -
.../apache/camel/test/junit5/CamelTestSupport.java | 1028 ------------------
.../test/junit5/EndpointUriFactoryTestSupport.java | 47 -
.../camel/test/junit5/ExchangeTestSupport.java | 57 -
.../camel/test/junit5/LanguageTestSupport.java | 100 --
.../org/apache/camel/test/junit5/TestSupport.java | 539 ---------
.../apache/camel/test/junit5/params/Parameter.java | 25 -
.../camel/test/junit5/params/Parameterized.java | 30 -
.../test/junit5/params/ParameterizedExtension.java | 150 ---
.../camel/test/junit5/params/Parameters.java | 28 -
.../org/apache/camel/test/junit5/params/Test.java | 27 -
.../apache/camel/test/AvailablePortFinderTest.java | 60 --
.../camel/test/junit5/CamelTestSupportTest.java | 75 --
.../test/junit5/RouteFilterPatternExcludeTest.java | 56 -
.../RouteFilterPatternIncludeExcludeTest.java | 63 --
.../test/junit5/RouteFilterPatternIncludeTest.java | 56 -
.../test/junit5/patterns/AdviceWithLambdaTest.java | 56 -
.../junit5/patterns/AdviceWithNotStartedTest.java | 74 --
.../test/junit5/patterns/AsyncSendMockTest.java | 51 -
.../CreateCamelContextPerTestFalseTest.java | 116 --
.../CreateCamelContextPerTestTrueTest.java | 148 ---
.../test/junit5/patterns/DebugJUnit5Test.java | 89 --
.../patterns/DebugNoLazyTypeConverterTest.java | 89 --
.../camel/test/junit5/patterns/DebugTest.java | 89 --
.../FilterCreateCamelContextPerClassTest.java | 59 -
.../junit5/patterns/FilterFluentTemplateTest.java | 75 --
.../test/junit5/patterns/FilterJUnit5Test.java | 69 --
.../camel/test/junit5/patterns/FilterTest.java | 75 --
.../test/junit5/patterns/GetMockEndpointTest.java | 45 -
.../patterns/IsMockEndpointsAndSkipJUnit5Test.java | 68 --
.../junit5/patterns/IsMockEndpointsFileTest.java | 71 --
.../junit5/patterns/IsMockEndpointsJUnit5Test.java | 74 --
.../test/junit5/patterns/IsMockEndpointsTest.java | 65 --
.../patterns/MockEndpointFailNoHeaderTest.java | 63 --
.../camel/test/junit5/patterns/MyProduceBean.java | 32 -
.../camel/test/junit5/patterns/MySender.java | 25 -
.../test/junit5/patterns/ProduceBeanTest.java | 46 -
.../RouteBuilderConfigureExceptionTest.java | 54 -
.../RouteProcessorDumpRouteCoverageTest.java | 70 --
.../junit5/patterns/SimpleMockEndpointsTest.java | 50 -
.../camel/test/junit5/patterns/SimpleMockTest.java | 45 -
.../junit5/patterns/SimpleNotifyBuilderTest.java | 53 -
.../patterns/SimpleWeaveAddMockLastTest.java | 59 -
...rridePropertiesWithPropertiesComponentTest.java | 76 --
.../src/test/resources/log4j2.properties | 30 -
components/camel-test-spring-junit5/pom.xml | 74 --
.../services/org/apache/camel/other.properties | 7 -
.../generated/resources/test-spring-junit5.json | 15 -
.../src/main/docs/test-spring-junit5.adoc | 148 ---
.../spring/junit5/CamelAnnotationsHandler.java | 409 -------
.../junit5/CamelSpringBootExecutionListener.java | 125 ---
.../test/spring/junit5/CamelSpringBootTest.java | 42 -
.../camel/test/spring/junit5/CamelSpringTest.java | 43 -
.../junit5/CamelSpringTestContextLoader.java | 241 -----
...ringTestContextLoaderTestExecutionListener.java | 46 -
.../test/spring/junit5/CamelSpringTestHelper.java | 116 --
.../test/spring/junit5/CamelSpringTestSupport.java | 221 ----
.../junit5/CamelTestContextBootstrapper.java | 31 -
.../camel/test/spring/junit5/DisableJmx.java | 43 -
.../test/spring/junit5/EnableRouteCoverage.java | 41 -
.../camel/test/spring/junit5/ExcludeRoutes.java | 44 -
.../camel/test/spring/junit5/MockEndpoints.java | 43 -
.../test/spring/junit5/MockEndpointsAndSkip.java | 43 -
.../test/spring/junit5/ProvidesBreakpoint.java | 36 -
.../test/spring/junit5/RouteCoverageDumper.java | 85 --
.../spring/junit5/RouteCoverageEventNotifier.java | 50 -
.../camel/test/spring/junit5/ShutdownTimeout.java | 47 -
.../junit5/SpringTestExecutionListenerSorter.java | 45 -
.../junit5/StopWatchTestExecutionListener.java | 73 --
.../camel/test/spring/junit5/UseAdviceWith.java | 46 -
...eOverridePropertiesWithPropertiesComponent.java | 35 -
...nterceptSendToEndpointWithLoadbalancerTest.java | 64 --
.../test/issues/AdviceWithOnCompletionTest.java | 55 -
.../AdviceWithOnExceptionMultipleIssueTest.java | 98 --
.../test/issues/MockEndpointsAndSkipTest.java | 45 -
.../test/patterns/DebugSpringCamelContextTest.java | 39 -
.../camel/test/patterns/DebugSpringTest.java | 86 --
.../apache/camel/test/patterns/MyProduceBean.java | 38 -
.../org/apache/camel/test/patterns/MySender.java | 22 -
.../camel/test/patterns/ProduceBeanTest.java | 39 -
.../test/patterns/ProducerBeanInjectTest.java | 40 -
.../apache/camel/test/patterns/SimpleMockTest.java | 63 --
.../test/spring/CamelSpringActiveProfileTest.java | 57 -
...CamelSpringDisableJmxInheritedOverrideTest.java | 34 -
.../spring/CamelSpringDisableJmxInheritedTest.java | 21 -
.../test/spring/CamelSpringDisableJmxTest.java | 34 -
.../test/spring/CamelSpringExcludeRoutesTest.java | 33 -
...ingOverridePropertiesForPropertyInjectTest.java | 56 -
.../spring/CamelSpringOverridePropertiesTest.java | 71 --
.../camel/test/spring/CamelSpringPlainTest.java | 110 --
.../CamelSpringPropertiesLocationElementTest.java | 65 --
...amelSpringProvidesBreakpointInherritedTest.java | 22 -
.../spring/CamelSpringProvidesBreakpointTest.java | 67 --
...lSpringRouteProcessorDumpRouteCoverageTest.java | 56 -
...SpringShutdownTimeoutInheritedOverrideTest.java | 36 -
.../CamelSpringShutdownTimeoutInheritedTest.java | 22 -
.../spring/CamelSpringShutdownTimeoutTest.java | 36 -
.../spring/CamelSpringTestPropertySourceTest.java | 47 -
.../CamelSpringTestSupportActiveProfileTest.java | 53 -
.../test/spring/CamelSpringUseAdviceWithTest.java | 52 -
.../SpringTestExecutionListenerSorterTest.java | 50 -
.../spring/TestPropertyInjectRouteBuilder.java | 33 -
.../apache/camel/test/spring/TestRouteBuilder.java | 29 -
.../src/test/resources/jndi.properties | 22 -
.../src/test/resources/log4j2.properties | 30 -
...InterceptSendToEndpointWithLoadbalancerTest.xml | 34 -
.../test/issues/AdviceWithOnCompletionTest.xml | 40 -
.../AdviceWithOnExceptionMultipleIssueTest.xml | 50 -
.../camel/test/issues/MockEndpointsAndSkipTest.xml | 38 -
.../camel/test/patterns/ProduceBeanInjectTest.xml | 44 -
.../apache/camel/test/patterns/ProduceBeanTest.xml | 36 -
.../apache/camel/test/patterns/SimpleMockTest.xml | 34 -
.../camel/test/patterns/applicationContext.xml | 42 -
.../CamelSpringActiveProfileTest-context.xml | 46 -
...ridePropertiesForPropertyInjectTest-context.xml | 40 -
.../CamelSpringOverridePropertiesTest-context.xml | 45 -
.../test/spring/CamelSpringPlainTest-context.xml | 48 -
...SpringPropertiesLocationElementTest-context.xml | 56 -
.../CamelSpringTestPropertySourceTest-context.xml | 44 -
.../properties-location-element-1.properties | 18 -
.../properties-location-element-2.properties | 18 -
.../properties-location-element-3.properties | 18 -
.../org/apache/camel/test/spring/test.properties | 19 -
components/camel-test-spring/pom.xml | 74 --
.../services/org/apache/camel/other.properties | 7 -
.../src/generated/resources/test-spring.json | 15 -
.../src/main/docs/test-spring.adoc | 417 -------
.../camel/test/spring/CamelAnnotationsHandler.java | 409 -------
.../spring/CamelSpringBootJUnit4ClassRunner.java | 33 -
.../camel/test/spring/CamelSpringBootRunner.java | 32 -
.../CamelSpringDelegatingTestContextLoader.java | 118 --
.../test/spring/CamelSpringJUnit4ClassRunner.java | 33 -
.../camel/test/spring/CamelSpringRunner.java | 93 --
.../test/spring/CamelSpringTestContextLoader.java | 241 -----
...ringTestContextLoaderTestExecutionListener.java | 48 -
.../camel/test/spring/CamelSpringTestHelper.java | 116 --
.../camel/test/spring/CamelSpringTestSupport.java | 213 ----
.../test/spring/CamelTestContextBootstrapper.java | 31 -
.../org/apache/camel/test/spring/DisableJmx.java | 43 -
.../camel/test/spring/EnableRouteCoverage.java | 41 -
.../apache/camel/test/spring/ExcludeRoutes.java | 44 -
.../apache/camel/test/spring/MockEndpoints.java | 43 -
.../camel/test/spring/MockEndpointsAndSkip.java | 43 -
.../camel/test/spring/ProvidesBreakpoint.java | 36 -
.../camel/test/spring/RouteCoverageDumper.java | 85 --
.../test/spring/RouteCoverageEventNotifier.java | 50 -
.../apache/camel/test/spring/ShutdownTimeout.java | 47 -
.../spring/StopWatchTestExecutionListener.java | 63 --
.../apache/camel/test/spring/UseAdviceWith.java | 46 -
...eOverridePropertiesWithPropertiesComponent.java | 35 -
...nterceptSendToEndpointWithLoadbalancerTest.java | 69 --
.../test/issues/AdviceWithOnCompletionTest.java | 61 --
.../AdviceWithOnExceptionMultipleIssueTest.java | 117 --
.../test/issues/MockEndpointsAndSkipTest.java | 45 -
.../test/patterns/DebugSpringCamelContextTest.java | 39 -
.../camel/test/patterns/DebugSpringTest.java | 80 --
.../apache/camel/test/patterns/MyProduceBean.java | 41 -
.../org/apache/camel/test/patterns/MySender.java | 25 -
.../camel/test/patterns/ProduceBeanTest.java | 42 -
.../test/patterns/ProducerBeanInjectTest.java | 38 -
.../apache/camel/test/patterns/SimpleMockTest.java | 63 --
.../test/spring/CamelSpringActiveProfileTest.java | 57 -
...ingOverridePropertiesForPropertyInjectTest.java | 57 -
.../spring/CamelSpringOverridePropertiesTest.java | 72 --
.../CamelSpringPropertiesLocationElementTest.java | 67 --
...lSpringRouteProcessorDumpRouteCoverageTest.java | 55 -
...pringRunnerDisableJmxInheritedOverrideTest.java | 33 -
.../CamelSpringRunnerDisableJmxInheritedTest.java | 21 -
.../spring/CamelSpringRunnerDisableJmxTest.java | 33 -
.../spring/CamelSpringRunnerExcludeRoutesTest.java | 32 -
.../test/spring/CamelSpringRunnerPlainTest.java | 112 --
...ringRunnerProvidesBreakpointInherritedTest.java | 22 -
.../CamelSpringRunnerProvidesBreakpointTest.java | 66 --
...RunnerShutdownTimeoutInheritedOverrideTest.java | 35 -
...elSpringRunnerShutdownTimeoutInheritedTest.java | 22 -
.../CamelSpringRunnerShutdownTimeoutTest.java | 35 -
.../CamelSpringRunnerTestPropertySourceTest.java | 49 -
.../spring/CamelSpringRunnerUseAdviceWithTest.java | 50 -
.../CamelSpringTestSupportActiveProfileTest.java | 52 -
.../spring/TestPropertyInjectRouteBuilder.java | 33 -
.../apache/camel/test/spring/TestRouteBuilder.java | 30 -
.../src/test/resources/jndi.properties | 22 -
.../src/test/resources/log4j2.properties | 30 -
...InterceptSendToEndpointWithLoadbalancerTest.xml | 32 -
.../test/issues/AdviceWithOnCompletionTest.xml | 39 -
.../AdviceWithOnExceptionMultipleIssueTest.xml | 49 -
.../camel/test/issues/MockEndpointsAndSkipTest.xml | 37 -
.../camel/test/patterns/ProduceBeanInjectTest.xml | 41 -
.../apache/camel/test/patterns/ProduceBeanTest.xml | 35 -
.../apache/camel/test/patterns/SimpleMockTest.xml | 33 -
.../camel/test/patterns/applicationContext.xml | 40 -
.../CamelSpringActiveProfileTest-context.xml | 43 -
...ridePropertiesForPropertyInjectTest-context.xml | 36 -
.../CamelSpringOverridePropertiesTest-context.xml | 42 -
...SpringPropertiesLocationElementTest-context.xml | 49 -
.../spring/CamelSpringRunnerPlainTest-context.xml | 44 -
...lSpringRunnerTestPropertySourceTest-context.xml | 41 -
.../properties-location-element-1.properties | 18 -
.../properties-location-element-2.properties | 18 -
.../properties-location-element-3.properties | 18 -
.../org/apache/camel/test/spring/test.properties | 19 -
components/camel-test/pom.xml | 156 +--
.../services/org/apache/camel/other.properties | 7 -
.../camel-test/src/generated/resources/test.json | 15 -
components/camel-test/src/main/docs/test.adoc | 54 -
.../org/apache/camel/test/AvailablePortFinder.java | 93 --
.../AvailablePortFinderPropertiesFunction.java | 115 --
.../test/ExcludingPackageScanClassResolver.java | 33 -
.../camel/test/TestSupportNodeIdFactory.java | 30 -
.../camel/test/junit4/CamelTearDownRule.java | 49 -
.../apache/camel/test/junit4/CamelTestSupport.java | 1140 --------------------
.../apache/camel/test/junit4/CamelTestWatcher.java | 44 -
.../camel/test/junit4/ExchangeTestSupport.java | 55 -
.../camel/test/junit4/LanguageTestSupport.java | 97 --
.../org/apache/camel/test/junit4/TestSupport.java | 564 ----------
.../apache/camel/test/AvailablePortFinderTest.java | 106 --
.../apache/camel/test/CamelTestSupportTest.java | 71 --
.../camel/test/RouteFilterPatternExcludeTest.java | 57 -
.../test/RouteFilterPatternIncludeExcludeTest.java | 65 --
.../camel/test/RouteFilterPatternIncludeTest.java | 57 -
.../camel/test/patterns/AdviceWithLambdaTest.java | 57 -
.../test/patterns/AdviceWithNotStartedTest.java | 72 --
.../camel/test/patterns/AsyncSendMockTest.java | 49 -
.../CreateCamelContextPerTestFalseTest.java | 116 --
.../CreateCamelContextPerTestTrueTest.java | 148 ---
.../camel/test/patterns/DebugJUnit4Test.java | 87 --
.../patterns/DebugNoLazyTypeConverterTest.java | 92 --
.../org/apache/camel/test/patterns/DebugTest.java | 87 --
.../FilterCreateCamelContextPerClassTest.java | 65 --
.../test/patterns/FilterFluentTemplateTest.java | 75 --
.../camel/test/patterns/FilterJUnit4Test.java | 69 --
.../org/apache/camel/test/patterns/FilterTest.java | 75 --
.../camel/test/patterns/GetMockEndpointTest.java | 46 -
.../patterns/IsMockEndpointsAndSkipJUnit4Test.java | 63 --
.../test/patterns/IsMockEndpointsFileTest.java | 69 --
.../test/patterns/IsMockEndpointsJUnit4Test.java | 70 --
.../camel/test/patterns/IsMockEndpointsTest.java | 63 --
.../patterns/MockEndpointFailNoHeaderTest.java | 63 --
.../apache/camel/test/patterns/MyProduceBean.java | 32 -
.../org/apache/camel/test/patterns/MySender.java | 25 -
.../camel/test/patterns/ProduceBeanTest.java | 47 -
.../RouteBuilderConfigureExceptionTest.java | 54 -
.../RouteProcessorDumpRouteCoverageTest.java | 58 -
.../test/patterns/SimpleMockEndpointsTest.java | 52 -
.../apache/camel/test/patterns/SimpleMockTest.java | 46 -
.../test/patterns/SimpleNotifyBuilderTest.java | 57 -
.../test/patterns/SimpleWeaveAddMockLastTest.java | 62 --
...rridePropertiesWithPropertiesComponentTest.java | 78 --
.../camel-test/src/test/resources/jndi.properties | 22 -
.../src/test/resources/log4j2.properties | 30 -
components/camel-testcontainers-junit5/pom.xml | 147 ---
.../services/org/apache/camel/other.properties | 7 -
.../generated/resources/testcontainers-junit5.json | 15 -
.../src/main/docs/testcontainers-junit5.adoc | 143 ---
.../junit5/ContainerAwareTestSupport.java | 113 --
.../junit5/ContainerPropertiesFunction.java | 79 --
.../test/testcontainers/junit5/Containers.java | 90 --
.../camel/test/testcontainers/junit5/Wait.java | 73 --
.../junit5/ContainerAwareTestSupportIT.java | 53 -
.../src/test/resources/log4j2.properties | 30 -
.../camel-testcontainers-spring-junit5/pom.xml | 147 ---
.../services/org/apache/camel/other.properties | 7 -
.../resources/testcontainers-spring-junit5.json | 15 -
.../main/docs/testcontainers-spring-junit5.adoc | 35 -
.../junit5/ContainerAwareSpringTestSupport.java | 116 --
.../junit5/ContainerAwareSpringTestSupportIT.java | 62 --
.../src/test/resources/log4j2.properties | 30 -
.../junit5/ContainerAwareSpringTestSupportTest.xml | 33 -
components/camel-testcontainers-spring/pom.xml | 147 ---
.../services/org/apache/camel/other.properties | 7 -
.../generated/resources/testcontainers-spring.json | 15 -
.../src/main/docs/testcontainers-spring.adoc | 15 -
.../spring/ContainerAwareSpringTestSupport.java | 117 --
.../spring/ContainerAwareSpringTestSupportIT.java | 62 --
.../src/test/resources/log4j2.properties | 30 -
.../spring/ContainerAwareSpringTestSupportTest.xml | 33 -
components/camel-testcontainers/pom.xml | 147 ---
.../services/org/apache/camel/other.properties | 7 -
.../src/generated/resources/testcontainers.json | 15 -
.../src/main/docs/testcontainers.adoc | 123 ---
.../testcontainers/ContainerAwareTestSupport.java | 115 --
.../ContainerPropertiesFunction.java | 80 --
.../camel/test/testcontainers/Containers.java | 90 --
.../org/apache/camel/test/testcontainers/Wait.java | 77 --
.../ContainerAwareTestSupportIT.java | 53 -
.../src/test/resources/log4j2.properties | 30 -
315 files changed, 18 insertions(+), 23156 deletions(-)
diff --git a/components/camel-test-cdi/pom.xml b/components/camel-test-cdi/pom.xml
deleted file mode 100644
index 0047e2f..0000000
--- a/components/camel-test-cdi/pom.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.camel</groupId>
- <artifactId>components</artifactId>
- <version>3.9.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>camel-test-cdi</artifactId>
- <packaging>jar</packaging>
-
- <name>Camel :: Test :: CDI</name>
- <description>Camel unit testing with CDI</description>
-
- <properties>
- <firstVersion>2.17.0</firstVersion>
- <label>testing,java</label>
- <title>Test CDI</title>
-
- </properties>
-
- <dependencies>
-
- <!-- compile dependencies -->
-
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-cdi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.jboss.weld.se</groupId>
- <artifactId>weld-se-core</artifactId>
- <version>${weld3-version}</version>
- </dependency>
-
- <!-- test dependencies -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-</project>
diff --git a/components/camel-test-cdi/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/components/camel-test-cdi/src/generated/resources/META-INF/services/org/apache/camel/other.properties
deleted file mode 100644
index 7995122..0000000
--- a/components/camel-test-cdi/src/generated/resources/META-INF/services/org/apache/camel/other.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-name=test-cdi
-groupId=org.apache.camel
-artifactId=camel-test-cdi
-version=3.9.0-SNAPSHOT
-projectName=Camel :: Test :: CDI
-projectDescription=Camel unit testing with CDI
diff --git a/components/camel-test-cdi/src/generated/resources/test-cdi.json b/components/camel-test-cdi/src/generated/resources/test-cdi.json
deleted file mode 100644
index 9274c90..0000000
--- a/components/camel-test-cdi/src/generated/resources/test-cdi.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "other": {
- "kind": "other",
- "name": "test-cdi",
- "title": "Test CDI",
- "description": "Camel unit testing with CDI",
- "deprecated": false,
- "firstVersion": "2.17.0",
- "label": "testing,java",
- "supportLevel": "Stable",
- "groupId": "org.apache.camel",
- "artifactId": "camel-test-cdi",
- "version": "3.9.0-SNAPSHOT"
- }
-}
diff --git a/components/camel-test-cdi/src/main/docs/test-cdi.adoc b/components/camel-test-cdi/src/main/docs/test-cdi.adoc
deleted file mode 100644
index 03f617e..0000000
--- a/components/camel-test-cdi/src/main/docs/test-cdi.adoc
+++ /dev/null
@@ -1,738 +0,0 @@
-[[test-cdi-other]]
-= Test CDI Component
-:docTitle: Test CDI
-:artifactId: camel-test-cdi
-:description: Camel unit testing with CDI
-:since: 2.17
-:supportLevel: Stable
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/others/test-cdi.adoc[opts=optional]
-
-*Since Camel {since}*
-
-http://camel.apache.org/testing.html[Testing] is a crucial part of any
-development or integration work. In case you're using the Camel CDI
-integration for your applications, you have a number of options to ease
-testing.
-
-You can use CDI for IoC and the Camel testing endpoints like
-`DataSet`, `Mock`, `Test` and testing API like `AdviceWith`
-and `NotifyBuilder` to create sophisticated integration/unit tests that
-are easy to run and debug inside your IDE.
-
-There are a number of supported approaches for testing with CDI in
-Camel:
-
-[width="100%",cols="1,1,4",options="header",]
-|=======================================================================
-|Name |Testing Frameworks Supported |Description
-|<<CDITesting-CamelCDITest>>[Camel CDI Test] a|
-* JUnit 4
-
- a|
-The Camel CDI test module (`camel-test-cdi`) provides a JUnit runner
-that bootstraps a test environment using CDI so that you don't have to
-be familiar with any CDI testing frameworks and can concentrate on the
-testing logic of your Camel CDI applications.
-
-|<<CDITesting-Arquillian>>[Arquillian] a|
-* JUnit 4
-* TestNG 5
-
- |http://arquillian.org/[Arquillian] is a testing platform that handles
-all the plumbing of in-container testing with support for a wide range
-of http://arquillian.org/modules/[target containers]. Arquillian can be
-configured to run your test classes in _embedded_ (in JVM CDI),
-_managed_ (a real Web server or Java EE application server instance
-started in a separate process) or _remote_ (the lifecycle of the
-container isn't managed by Arquillian) modes. You have to create the
-System Under Test (SUT) in your test classes using
-http://arquillian.org/guides/shrinkwrap_introduction/[ShrinkWrap
-descriptors]. The benefit is that you have a very fine-grained control
-over the application configuration that you want to test. The downside
-is more code and more complex _classpath_ / class loading structure.
-
-|<<CDITesting-PAXExam>>[PAX Exam] a|
-* JUnit 4
-* TestNG 6
-
- |https://ops4j1.jira.com/wiki/display/PAXEXAM4[PAX Exam] lets you test
-your Camel applications in OSGi, Java EE or standalone CDI containers
-with the ability to finely configure your System Under Test (SUT),
-similarly to Arquillian. You can use it to test your Camel CDI
-applications that target OSGi environments like Karaf with
-https://ops4j1.jira.com/wiki/display/PAXCDI/Pax+CDI[PAX CDI], but you
-can use it as well to test your Camel CDI applications in standalone
-https://ops4j1.jira.com/wiki/display/PAXEXAM4/CDI+Containers[CDI
-containers],
-https://ops4j1.jira.com/wiki/display/PAXEXAM4/Web+Containers[Web
-containers] and
-https://ops4j1.jira.com/wiki/display/PAXEXAM4/Java+EE+Containers[Java EE
-containers].
-|=======================================================================
-
-[[CDITesting-CamelCDITest]]
-== Camel CDI Test
-
-With this approach, your test classes use the JUnit runner provided in
-Camel CDI test. This runner manages the lifecycle of a standalone CDI
-container and automatically assemble and deploy the System Under Test
-(SUT) based on the _classpath_ into the container.
-
-It deploys the test class as a CDI bean so that dependency injection and
-any CDI features is available within the test class.
-
-Maven users will need to add the following dependency to
-their `pom.xml` for this component:
-
-[source,xml]
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-cdi</artifactId>
- <scope>test</scope>
- <version>x.x.x</version>
- <!-- use the same version as your Camel core version -->
-</dependency>
-----
-
-Here is a simple unit test using the `CamelCdiRunner`:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- @Inject
- CamelContext context;
-
- @Test
- public void test() {
- assertThat("Camel context status is incorrect!",
- context.getStatus(),
- is(equalTo(ServiceStatus.Started)));
- }
-}
-----
-
-CDI injection is also available for test method parameters, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- @Test
- public void test(@Uri("direct:foo") ProducerTemplate producer) {
- producer.sendBody("bar");
- }
-}
-----
-
-Camel CDI test provides the `@Order` annotation that you can use to
-execute the test methods in a particular sequence, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- @Test
- @Order(1)
- public void firstTestMethod() {
- }
-
- @Test
- @Order(2)
- public void secondTestMethod() {
- }
-}
-----
-
-One CDI container is bootstrapped for the entire execution of the test
-class.
-
-Besides, the test class is deployed as a CDI bean, so that you can
-control how the runner instantiate the test class, either one test class
-instance for each test method (the default, depending on the _built-in_
-default `@Dependent` CDI scope), or one test class instance for the
-entire test class execution using the `@ApplicationScoped` scope, e.g.:
-
-[source,java]
-----
-@ApplicationScoped
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- int counter;
-
- @Test
- @Order(1)
- public void firstTestMethod() {
- counter++;
- }
-
- @Test
- @Order(2)
- public void secondTestMethod() {
- assertEquals(counter, 1);
- }
-}
-----
-
-In case you need to add additional test beans, you can use the `@Beans`
-annotation provided by Camel CDI test. For example, if you need to add
-a route to your Camel context, instead of declaring a `RouteBuilder` bean
-with a nested class, you can declare a managed bean, e.g.:
-
-[source,java]
-----
-class TestRoute extends RouteBuilder {
-
- @Override
- public void configure() {
- from("direct:foo").to("mock:bar");
- }
-}
-----
-
-And add it with the `@Beans` annotation, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-@Beans(classes = TestRoute.class)
-public class CamelCdiTest {
-
-}
-----
-
-[[CDITesting-Arquillian]]
-== Arquillian
-
-With this approach, you use the JUnit runner or TestNG support provided
-by Arquillian to delegate the bootstrap of the CDI container. You need
-to declare a `@Deployment` method to create your application
-configuration to be deployed in the container using
-http://arquillian.org/guides/shrinkwrap_introduction/[ShrinkWrap
-descriptors], e.g.:
-
-[source,java]
-----
-@RunWith(Arquillian.class)
-public class CamelCdiJavaSeTest {
-
- @Deployment
- public static Archive deployment() {
- return ShrinkWrap.create(JavaArchive.class)
- // Camel CDI
- .addPackage(CdiCamelExtension.class.getPackage())
- // Test classes
- .addPackage(Application.class.getPackage())
- // Bean archive deployment descriptor
- .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
- }
-
- @Inject
- CamelContext context;
-
- @Test
- public void test() {
- assertThat("Camel context status is incorrect!",
- context.getStatus(),
- is(equalTo(ServiceStatus.Started)));
- }
-}
-----
-
-In that example, you can use any Java SE Arquillian embedded container
-adapter, like the
-http://arquillian.org/modules/arquillian-weld-se-embedded-1.1-container-adapter/[Weld
-embedded container adapter] e.g. with Maven you need that complete set
-of dependencies:
-
-[source,xml]
-----
-<dependencies>
-
- <dependency>
- <groupId>org.jboss.arquillian.junit</groupId>
- <artifactId>arquillian-junit-container</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.shrinkwrap.descriptors</groupId>
- <artifactId>shrinkwrap-descriptors-depchain</artifactId>
- <type>pom</type>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.arquillian.container</groupId>
- <artifactId>arquillian-weld-se-embedded-1.1</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.weld</groupId>
- <artifactId>weld-core</artifactId>
- <scope>test</scope>
- </dependency>
-
-</dependencies>
-----
-
-Using ShrinkWarp Descriptors, you have a complete control over the
-configuration and kind of Camel CDI applications you want to test. For
-example, to test a Camel CDI application that uses the Camel
-REST DSL configured with the
-xref:ROOT:servlet-component.adoc[Servlet component], you need to create a Web archive,
-e.g.:
-
-[source,java]
-----
-@RunWith(Arquillian.class)
-public class CamelCdiWebTest {
-
- @Deployment
- public static Archive<?> createTestArchive() {
- return ShrinkWrap.create(WebArchive.class)
- .addClass(Application.class)
- .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"))
- .setWebXML(Paths.get("src/main/webapp/WEB-INF/web.xml").toFile());
- }
-
- @Test
- @RunAsClient
- public void test(@ArquillianResource URL url) throws Exception {
- assertThat(IOHelper.loadText(new URL(url, "camel/rest/hello").openStream()),
- is(equalTo("Hello World!\n")));
- }
-}
-----
-
-In the example above, you can use any Arquillian Web container adapter,
-like
-the http://arquillian.org/modules/arquillian-jetty-embedded-9-container-adapter/[Jetty
-embedded container adapter] e.g. with Maven you need the
-complete following set of dependencies:
-
-[source,xml]
-----
-</dependencies>
-
- <dependency>
- <groupId>org.jboss.arquillian.junit</groupId>
- <artifactId>arquillian-junit-container</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.arquillian.testenricher</groupId>
- <artifactId>arquillian-testenricher-resource</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.shrinkwrap.descriptors</groupId>
- <artifactId>shrinkwrap-descriptors-depchain</artifactId>
- <type>pom</type>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.weld.servlet</groupId>
- <artifactId>weld-servlet</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-annotations</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.arquillian.container</groupId>
- <artifactId>arquillian-jetty-embedded-9</artifactId>
- <scope>test</scope>
- </dependency>
-
-</dependencies>
-----
-
-You can see the tests in the `camel-example-cdi-rest-servlet` example
-for a complete working example of testing a Camel CDI application using
-the REST DSL and deployed as a WAR in Jetty.
-
-[[CDITesting-PAXExam]]
-== PAX Exam
-
-If you target OSGi as runtime environment for your Camel CDI
-applications, you can use PAX Exam to automate the deployment of your
-tests into an OSGi container, for example into Karaf, e.g.:
-
-[source,java]
-----
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerClass.class)
-public class PaxCdiOsgiTest {
-
- @Configuration
- public Option[] config() throws IOException {
- return options(
- // Karaf configuration
- karafDistributionConfiguration()
- .frameworkUrl(
- maven()
- .groupId("org.apache.karaf")
- .artifactId("apache-karaf")
- .versionAsInProject()
- .type("zip"))
- .name("Apache Karaf")
- .unpackDirectory(new File("target/paxexam/unpack/")),
- // PAX CDI Weld
- features(
- maven()
- .groupId("org.ops4j.pax.cdi")
- .artifactId("pax-cdi-features")
- .type("xml")
- .classifier("features")
- .versionAsInProject(),
- "pax-cdi-weld"),
- // Karaf Camel commands
- mavenBundle()
- .groupId("your.application.groupId")
- .artifactId("your.application.artifactId")
- .versionAsInProject()
- );
- }
-
- @Inject
- private CamelContext context;
-
- @Test
- public void testContextStatus() {
- assertThat("Camel context status is incorrect!",
- context.getStatus(), equalTo(ServiceStatus.Started));
- }
-}
-----
-
-You can see the tests in the `camel-example-cdi-osgi` example for a
-complete working example of testing a Camel CDI application deployed in
-an OSGi container using PAX Exam.
-
-[[CDITesting-TestingPatterns]]
-== Testing Patterns
-
-You can see the tests in the `camel-example-cdi-test` example for a
-thorough overview of the following testing patterns for Camel CDI
-applications.
-
-[NOTE]
-====
-While the patterns above are illustrated using the Camel CDI test
-module, they should equally work with Arquillian and PAX Exam unless
-otherwise stated or illustrated with a specific example.
-====
-
-[[CDITesting-Testroutes]]
-== Test routes
-
-You may want to add some Camel routes to your Camel CDI applications for
-testing purpose. For example to route some exchanges to a `MockEndpoint`
-instance. You can do that by declaring a `RouteBuilder` bean within the
-test class as you would normally do in your application code, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- // Declare a RouteBuilder bean for testing purpose
- // that is automatically added to the Camel context
- static class TestRoute extends RouteBuilder {
-
- @Override
- public void configure() {
- from("direct:out").routeId("test").to("mock:out");
- }
-
- }
-
- // And retrieve the MockEndpoint for further assertions
- @Inject
- @Uri("mock:out")
- MockEndpoint mock;
-}
-----
-
-You can find more information in xref:cdi.adoc#CDI-Auto-detectingCamelroutes[auto-detecting Camel
-routes].
-
-In case you prefer declaring the `RouteBuilder` bean in a separate class,
-for example to share it more easily across multiple test classes, you can use
-the `@Beans` annotation to instruct Camel CDI test to deploy that class as a
-CDI bean, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-@Beans(classes = TestRoute.class)
-public class CamelCdiTest {
-
- // ...
-}
-----
-
-[[CDITesting-Beanalternatives]]
-== Bean alternatives
-
-You may want to replace a bean that is used in your Camel routes by
-another bean for testing purpose, for example to mock it or change the
-behavior of the application bean.
-
-Imagine you have the following route in your application:
-
-[source,java]
-----
-public class Application {
-
- @ApplicationScoped
- static class Hello extends RouteBuilder {
-
- @Override
- public void configure() {
- from("direct:in").bean("bean").to("direct:out");
- }
- }
-}
-----
-
-And the corresponding bean:
-
-[source,java]
-----
-@Named("bean")
-public class Bean {
-
- public String process(@Body String body) {
- return body;
- }
-}
-----
-
-Then you can replace the bean above in your tests by declaring an
-_alternative_ bean, annotated with `@Alternative`, e.g.:
-
-[source,java]
-----
-@Alternative
-@Named("bean")
-public class AlternativeBean {
-
- public String process(@Body String body) {
- return body + " with alternative bean!";
- }
-}
-----
-
-And you need to activate (a.k.a. _select_ in CDI terminology) this
-alternative bean in your tests. If your using the `CamelCdiRunner` JUnit
-runner, you can do that with the `@Beans` annotation provided by the
-Camel CDI test module, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-@Beans(alternatives = AlternativeBean.class)
-public class CamelCdiTest {
-
- @Test
- public void testAlternativeBean(@Uri("direct:in") ProducerTemplate producer
- @Uri("mock:out") MockEndpoint mock) throws InterruptedException {
- mock.expectedMessageCount(1);
- mock.expectedBodiesReceived("test with alternative bean!");
-
- producer.sendBody("test");
-
- MockEndpoint.assertIsSatisfied(1L, TimeUnit.SECONDS, mock);
- }
-
- static class TestRoute extends RouteBuilder {
-
- @Override
- public void configure() {
- from("direct:out").routeId("test").to("mock:out");
- }
- }
-}
-----
-
-If you're using Arquillian as testing framework, you need to activate the
-alternative in your deployment method, e.g.:
-
-[source,java]
-----
-@RunWith(Arquillian.class)
-public class CamelCdiTest {
-
- @Deployment
- public static Archive deployment() {
- return ShrinkWrap.create(JavaArchive.class)
- // Camel CDI
- .addPackage(CdiCamelExtension.class.getPackage())
- // Test classes
- .addPackage(Application.class.getPackage())
- // Bean archive deployment descriptor
- .addAsManifestResource(
- new StringAsset(
- Descriptors.create(BeansDescriptor.class)
- .getOrCreateAlternatives()
- .stereotype(MockAlternative.class.getName()).up()
- .exportAsString()),
- "beans.xml");
- }
-
- //...
-}
-----
-
-[[CDITesting-Camelcontextcustomization]]
-== Camel context customization
-
-You may need to customize your Camel contexts for testing purpose, for
-example disabling JMX management to avoid TCP port allocation conflict.
-You can do that by declaring a custom Camel context bean in your test
-class, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- @Default
- @Named("camel-test-cdi")
- @ApplicationScoped
- static class CustomCamelContext extends DefaultCamelContext {
-
- @PostConstruct
- void customize() {
- disableJMX();
- }
- }
-}
-----
-
-In that example, the custom Camel context bean declared in the test
-class will be used during the test execution instead of the default
-Camel context bean provided by the Camel CDI component.
-
-[[CDITesting-RoutesadvisingwithadviceWith]]
-== Routes advising with `adviceWith`
-
-`AdviceWith` is used for testing Camel routes where you
-can _advice_ an existing route before its being tested. It allows to
-add http://camel.apache.org/intercept.html[Intercept] or _weave_ routes
-for testing purpose, for example using
-the xref:ROOT:mock-component.adoc[Mock] component.
-
-It is recommended to only advice routes which are not started already.
-To meet that requirement, you can use the `CamelContextStartingEvent`
-event by declaring an observer method in which you use `adviceWith` to
-add a `mock` endpoint at the end of your Camel route, e.g.:
-
-[source,java]
-----
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- void advice(@Observes CamelContextStartingEvent event,
- @Uri("mock:test") MockEndpoint messages,
- ModelCamelContext context) throws Exception {
-
- context.getRouteDefinition("route")
- .adviceWith(context, new AdviceWithRouteBuilder() {
- @Override
- public void configure() {
- weaveAddLast().to("mock:test");
- }
- });
- }
-}
-----
-
-[[CDITesting-JUnitrules]]
-== JUnit rules
-
-Camel CDI test starts the CDI container after all the JUnit class rules
-have executed.
-
-That way, you can use JUnit class rules to initialize (resp. clean-up)
-resources that your test classes would require during their execution
-before the container initializes (resp. after the container has
-shutdown). For example, you could use an embedded JMS broker
-like https://activemq.apache.org/artemis/[ActiveMQ Artemis] to test your
-Camel JMS application, e.g.:
-
-[source,java]
-----
-import org.apache.activemq.artemis.jms.server.embedded.EmbeddedJMS;
-
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- @ClassRule
- public static final ExternalResource resources = new ExternalResource() {
-
- private final EmbeddedJMS jms = new EmbeddedJMS();
-
- @Override
- protected void before() throws Exception {
- jms.start();
- }
-
- @Override
- protected void after() throws Exception {
- jms.stop();
- }
- };
-
- @Inject
- @Uri("jms:destination")
- private ProducerTemplate producer;
-
- @Test
- public void sendMessage() {
- producer.sendBody("message");
- }
-}
-----
-
-Another use case is to assert the behavior of your application after it
-has shutdown. In that case, you can use the `Verifier` rule, e.g.:
-
-[source,java]
-----
-import org.junit.rules.Verifier;
-
-@RunWith(CamelCdiRunner.class)
-public class CamelCdiTest {
-
- @ClassRule
- public static Verifier verifier = new Verifier() {
-
- @Override
- protected void verify() {
- // Executes after the CDI container has shutdown
- }
- };
-}
-----
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedDecorator.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedDecorator.java
deleted file mode 100644
index 60957aa..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedDecorator.java
+++ /dev/null
@@ -1,84 +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.cdi;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Annotated;
-
-class AnnotatedDecorator implements Annotated {
-
- private final Annotated decorated;
-
- private final Set<Annotation> annotations;
-
- AnnotatedDecorator(Annotated decorated, Set<Annotation> annotations) {
- this.decorated = decorated;
- this.annotations = annotations;
- }
-
- @Override
- public Type getBaseType() {
- return decorated.getBaseType();
- }
-
- @Override
- public Set<Type> getTypeClosure() {
- return decorated.getTypeClosure();
- }
-
- @Override
- public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
- T annotation = getDecoratingAnnotation(annotationType);
- if (annotation != null) {
- return annotation;
- } else {
- return decorated.getAnnotation(annotationType);
- }
- }
-
- @Override
- public Set<Annotation> getAnnotations() {
- Set<Annotation> annotations = new HashSet<>(this.annotations);
- annotations.addAll(decorated.getAnnotations());
- return Collections.unmodifiableSet(annotations);
- }
-
- @Override
- public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
- return getDecoratingAnnotation(annotationType) != null || decorated.isAnnotationPresent(annotationType);
- }
-
- @SuppressWarnings("unchecked")
- private <T extends Annotation> T getDecoratingAnnotation(Class<T> annotationType) {
- for (Annotation annotation : annotations) {
- if (annotationType.isAssignableFrom(annotation.annotationType())) {
- return (T) annotation;
- }
- }
- return null;
- }
-
- @Override
- public <T extends Annotation> Set<T> getAnnotations(Class<T> annotationType) {
- return decorated.getAnnotations(annotationType);
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedMethodDecorator.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedMethodDecorator.java
deleted file mode 100644
index fb12dbc..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedMethodDecorator.java
+++ /dev/null
@@ -1,71 +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.cdi;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-
-import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.AnnotatedParameter;
-import javax.enterprise.inject.spi.AnnotatedType;
-
-final class AnnotatedMethodDecorator<X> extends AnnotatedDecorator implements AnnotatedMethod<X> {
-
- private final AnnotatedMethod<X> decoratedMethod;
-
- AnnotatedMethodDecorator(AnnotatedMethod<X> decoratedMethod, Annotation decoratingAnnotation) {
- super(decoratedMethod, Collections.singleton(decoratingAnnotation));
- this.decoratedMethod = decoratedMethod;
- }
-
- @Override
- public Method getJavaMember() {
- return decoratedMethod.getJavaMember();
- }
-
- @Override
- public boolean isStatic() {
- return decoratedMethod.isStatic();
- }
-
- @Override
- public AnnotatedType<X> getDeclaringType() {
- return decoratedMethod.getDeclaringType();
- }
-
- @Override
- public List<AnnotatedParameter<X>> getParameters() {
- return decoratedMethod.getParameters();
- }
-
- @Override
- public String toString() {
- return decoratedMethod.toString();
- }
-
- @Override
- public int hashCode() {
- return decoratedMethod.hashCode();
- }
-
- @Override
- public boolean equals(Object object) {
- return decoratedMethod.equals(object);
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedTypeDecorator.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedTypeDecorator.java
deleted file mode 100644
index c02386e..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnnotatedTypeDecorator.java
+++ /dev/null
@@ -1,80 +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.cdi;
-
-import java.lang.annotation.Annotation;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.AnnotatedConstructor;
-import javax.enterprise.inject.spi.AnnotatedField;
-import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.AnnotatedType;
-
-final class AnnotatedTypeDecorator<X> extends AnnotatedDecorator implements AnnotatedType<X> {
-
- private final AnnotatedType<X> decoratedType;
-
- private final Set<AnnotatedMethod<? super X>> decoratedMethods;
-
- AnnotatedTypeDecorator(AnnotatedType<X> decoratedType, Annotation decoratingAnnotation) {
- this(decoratedType, decoratingAnnotation, Collections.<AnnotatedMethod<? super X>> emptySet());
- }
-
- AnnotatedTypeDecorator(AnnotatedType<X> decoratedType, Annotation decoratingAnnotation,
- Set<AnnotatedMethod<? super X>> decoratedMethods) {
- this(decoratedType, Collections.singleton(decoratingAnnotation), decoratedMethods);
- }
-
- AnnotatedTypeDecorator(AnnotatedType<X> decoratedType, Set<AnnotatedMethod<? super X>> decoratedMethods) {
- this(decoratedType, Collections.<Annotation> emptySet(), decoratedMethods);
- }
-
- AnnotatedTypeDecorator(AnnotatedType<X> decoratedType, Set<Annotation> decoratingAnnotations,
- Set<AnnotatedMethod<? super X>> decoratedMethods) {
- super(decoratedType, decoratingAnnotations);
- this.decoratedType = decoratedType;
- this.decoratedMethods = decoratedMethods;
- }
-
- @Override
- public Class<X> getJavaClass() {
- return decoratedType.getJavaClass();
- }
-
- @Override
- public Set<AnnotatedConstructor<X>> getConstructors() {
- return decoratedType.getConstructors();
- }
-
- @Override
- public Set<AnnotatedMethod<? super X>> getMethods() {
- Set<AnnotatedMethod<? super X>> methods = new HashSet<>(decoratedType.getMethods());
- for (AnnotatedMethod<? super X> method : decoratedMethods) {
- methods.remove(method);
- methods.add(method);
- }
-
- return Collections.unmodifiableSet(methods);
- }
-
- @Override
- public Set<AnnotatedField<? super X>> getFields() {
- return decoratedType.getFields();
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnyLiteral.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnyLiteral.java
deleted file mode 100644
index 7f3867a..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/AnyLiteral.java
+++ /dev/null
@@ -1,30 +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.cdi;
-
-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/Beans.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/Beans.java
deleted file mode 100644
index 65ee3aa..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/Beans.java
+++ /dev/null
@@ -1,97 +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.cdi;
-
-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;
-
-/**
- * Annotation to be used to customise the deployment configured by the {@code CamelCdiRunner}.
- *
- * @see CamelCdiRunner
- */
-@Documented
-@Inherited
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.TYPE)
-public @interface Beans {
-
- /**
- * Returns the list of <a href="http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#alternatives">alternatives</a> to
- * be selected in the application.
- * <p/>
- * Note that the declared alternatives are globally selected for the entire application. For example, if you have
- * the following named bean in your application:
- *
- * <pre>
- * <code>
- * {@literal @}Named("foo")
- * public class FooBean {
- *
- * }
- * </code>
- * </pre>
- *
- * It can be replaced in your test by declaring the following alternative bean:
- *
- * <pre>
- * <code>
- * {@literal @}Alternative
- * {@literal @}Named("foo")
- * public class AlternativeBean {
- *
- * }
- * </code>
- * </pre>
- *
- * And adding the {@code @Beans} annotation to you test class to activate it:
- *
- * <pre>
- * <code>
- * {@literal @}RunWith(CamelCdiRunner.class)
- * {@literal @}Beans(alternatives = AlternativeBean.class)
- * public class TestWithAlternative {
- *
- * }
- * </code>
- * </pre>
- *
- * @see javax.enterprise.inject.Alternative
- */
- Class<?>[] alternatives() default {};
-
- /**
- * Returns the list of classes to be added as beans in the application.
- *
- * That can be used to add classes to the deployment for test purpose in addition to the test class which is
- * automatically added as bean.
- *
- */
- Class<?>[] classes() default {};
-
- /**
- * Returns the list of classes whose packages are to be added for beans discovery.
- *
- * That can be used to add packages to the deployment for test purpose in addition to the test class which is
- * automatically added as bean.
- */
- Class<?>[] packages() default {};
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiContext.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiContext.java
deleted file mode 100644
index 2b7d386..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiContext.java
+++ /dev/null
@@ -1,46 +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.cdi;
-
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.enterprise.inject.spi.BeanManager;
-
-final class CamelCdiContext {
-
- private final AtomicReference<BeanManager> manager = new AtomicReference<>();
-
- BeanManager getBeanManager() {
- BeanManager manager = this.manager.get();
- if (manager == null) {
- throw new IllegalStateException("Bean manager is not set!");
- }
- return manager;
- }
-
- void setBeanManager(BeanManager manager) {
- if (!this.manager.compareAndSet(null, manager)) {
- throw new IllegalStateException("Bean manager already set!");
- }
- }
-
- void unsetBeanManager() {
- if (manager.getAndSet(null) == null) {
- throw new IllegalStateException("Bean manager is not set!");
- }
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiDeployment.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiDeployment.java
deleted file mode 100644
index e46c26f..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiDeployment.java
+++ /dev/null
@@ -1,82 +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.cdi;
-
-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.rules.TestRule;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-import org.junit.runners.model.TestClass;
-
-final class CamelCdiDeployment implements TestRule {
-
- private final CamelCdiContext context;
-
- private final Weld weld;
-
- CamelCdiDeployment(TestClass test, CamelCdiContext context) {
- this.context = context;
-
- 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(test.getJavaClass().getDeclaredClasses())
- .addBeanClass(test.getJavaClass())
- .addExtension(new CdiCamelExtension());
-
- // Apply deployment customization provided by the @Beans annotation
- // if present on the test class
- if (test.getJavaClass().isAnnotationPresent(Beans.class)) {
- Beans beans = test.getJavaClass().getAnnotation(Beans.class);
- weld.addExtension(new CamelCdiTestExtension(beans));
- for (Class<?> alternative : beans.alternatives()) {
- // It is not necessary to add the alternative class with WELD-2218
- // anymore, though it's kept for previous versions
- weld.addBeanClass(alternative)
- .addAlternative(alternative);
- }
- for (Class<?> clazz : beans.classes()) {
- weld.addBeanClass(clazz);
- }
- weld.addPackages(false, beans.packages());
- }
- }
-
- @Override
- public Statement apply(final Statement base, Description description) {
- return new Statement() {
-
- @Override
- public void evaluate() throws Throwable {
- WeldContainer container = weld.initialize();
- context.setBeanManager(container.getBeanManager());
- try {
- base.evaluate();
- } finally {
- container.shutdown();
- context.unsetBeanManager();
- }
- }
- };
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiRunner.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiRunner.java
deleted file mode 100644
index d64a624..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiRunner.java
+++ /dev/null
@@ -1,98 +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.cdi;
-
-import java.lang.annotation.Annotation;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-
-import org.junit.rules.TestRule;
-import org.junit.runners.BlockJUnit4ClassRunner;
-import org.junit.runners.model.FrameworkMethod;
-import org.junit.runners.model.InitializationError;
-import org.junit.runners.model.Statement;
-
-public class CamelCdiRunner extends BlockJUnit4ClassRunner {
-
- private final CamelCdiContext context = new CamelCdiContext();
-
- public CamelCdiRunner(Class<?> clazz) throws InitializationError {
- super(clazz);
- }
-
- @Override
- protected void validateConstructor(List<Throwable> errors) {
- // The test class is instantiated as a CDI bean so we bypass the
- // default JUnit test class constructor constraints validation.
- }
-
- @Override
- protected void validatePublicVoidNoArgMethods(
- Class<? extends Annotation> annotation, boolean isStatic, List<Throwable> errors) {
- // Overrides the default validation to allow test methods with
- // parameters so that we can inject CDI references.
- List<FrameworkMethod> methods = getTestClass().getAnnotatedMethods(annotation);
- for (FrameworkMethod eachTestMethod : methods) {
- eachTestMethod.validatePublicVoid(isStatic, errors);
- }
- }
-
- @Override
- protected List<FrameworkMethod> getChildren() {
- List<FrameworkMethod> children = super.getChildren();
- boolean hasDefinedOrder = false;
- for (FrameworkMethod method : children) {
- if (method.getAnnotation(Order.class) != null) {
- hasDefinedOrder = true;
- }
- }
- if (hasDefinedOrder) {
- List<FrameworkMethod> sorted = new ArrayList<>(children);
- Collections.sort(sorted, new FrameworkMethodSorter());
- return sorted;
- }
- return children;
- }
-
- @Override
- protected List<TestRule> classRules() {
- List<TestRule> rules = super.classRules();
- // Add the CDI container rule before all the other class rules
- // so that it's the last one in FIFO
- rules.add(0, new CamelCdiDeployment(getTestClass(), context));
- return rules;
- }
-
- @Override
- protected Object createTest() {
- BeanManager manager = context.getBeanManager();
- Set<Bean<?>> beans = manager.getBeans(getTestClass().getJavaClass(), AnyLiteral.INSTANCE);
- Bean<?> bean = beans.iterator().next();
- // TODO: manage lifecycle of @Dependent beans
- return manager.getReference(bean, bean.getBeanClass(), manager.createCreationalContext(bean));
- }
-
- @Override
- protected Statement methodInvoker(FrameworkMethod method, Object test) {
- return new FrameworkMethodCdiInjection(method, test, context);
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiTestExtension.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiTestExtension.java
deleted file mode 100644
index fa5b763..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/CamelCdiTestExtension.java
+++ /dev/null
@@ -1,71 +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.cdi;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.annotation.Priority;
-import javax.enterprise.event.Observes;
-import javax.enterprise.inject.Alternative;
-import javax.enterprise.inject.spi.AnnotatedMethod;
-import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.Extension;
-import javax.enterprise.inject.spi.ProcessAnnotatedType;
-import javax.enterprise.inject.spi.WithAnnotations;
-
-import static javax.interceptor.Interceptor.Priority.APPLICATION;
-
-final class CamelCdiTestExtension implements Extension {
-
- private final Beans beans;
-
- CamelCdiTestExtension(Beans beans) {
- this.beans = beans;
- }
-
- /**
- * Activates the alternatives declared with {@code @Beans} globally for the application.
- * <p/>
- * For every types and every methods of every types declared with {@link Beans#alternatives()}, the {@code Priority}
- * annotation is added so that the corresponding alternatives are selected globally for the entire application.
- *
- * @see Beans
- */
- private <T> void alternatives(@Observes @WithAnnotations(Alternative.class) ProcessAnnotatedType<T> pat) {
- AnnotatedType<T> type = pat.getAnnotatedType();
-
- if (!Arrays.asList(beans.alternatives()).contains(type.getJavaClass())) {
- // Only select globally the alternatives that are declared with @Beans
- return;
- }
-
- Set<AnnotatedMethod<? super T>> methods = new HashSet<>();
- for (AnnotatedMethod<? super T> method : type.getMethods()) {
- if (method.isAnnotationPresent(Alternative.class) && !method.isAnnotationPresent(Priority.class)) {
- methods.add(new AnnotatedMethodDecorator<>(method, PriorityLiteral.of(APPLICATION)));
- }
- }
-
- if (type.isAnnotationPresent(Alternative.class) && !type.isAnnotationPresent(Priority.class)) {
- pat.setAnnotatedType(new AnnotatedTypeDecorator<>(type, PriorityLiteral.of(APPLICATION), methods));
- } else if (!methods.isEmpty()) {
- pat.setAnnotatedType(new AnnotatedTypeDecorator<>(type, methods));
- }
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkAnnotatedParameter.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkAnnotatedParameter.java
deleted file mode 100644
index dee1121..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkAnnotatedParameter.java
+++ /dev/null
@@ -1,91 +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.cdi;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.AnnotatedCallable;
-import javax.enterprise.inject.spi.AnnotatedParameter;
-import javax.enterprise.inject.spi.BeanManager;
-
-final class FrameworkAnnotatedParameter<X> implements AnnotatedParameter<X> {
-
- private final int position;
-
- private final Type type;
-
- private final Set<Annotation> annotations;
-
- private final BeanManager manager;
-
- FrameworkAnnotatedParameter(Method method, int position, BeanManager manager) {
- this.position = position;
- this.type = method.getGenericParameterTypes()[position];
- this.annotations = new HashSet<>(Arrays.asList(method.getParameterAnnotations()[position]));
- this.manager = manager;
- }
-
- @Override
- public AnnotatedCallable<X> getDeclaringCallable() {
- return null;
- }
-
- @Override
- public int getPosition() {
- return position;
- }
-
- @Override
- public <Y extends Annotation> Y getAnnotation(Class<Y> type) {
- for (Annotation annotation : getAnnotations()) {
- if (annotation.annotationType() == type) {
- return type.cast(annotation);
- }
- }
- return null;
- }
-
- @Override
- public Set<Annotation> getAnnotations() {
- return Collections.unmodifiableSet(annotations);
- }
-
- @Override
- public Type getBaseType() {
- return type;
- }
-
- @Override
- public Set<Type> getTypeClosure() {
- if (type instanceof Class) {
- return manager.createAnnotatedType((Class) type).getTypeClosure();
- } else {
- return Collections.singleton(type);
- }
- }
-
- @Override
- public boolean isAnnotationPresent(Class<? extends Annotation> type) {
- return getAnnotation(type) != null;
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodCdiInjection.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodCdiInjection.java
deleted file mode 100644
index d23095b..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodCdiInjection.java
+++ /dev/null
@@ -1,53 +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.cdi;
-
-import java.lang.reflect.Type;
-
-import javax.enterprise.inject.spi.BeanManager;
-
-import org.junit.runners.model.FrameworkMethod;
-import org.junit.runners.model.Statement;
-
-final class FrameworkMethodCdiInjection extends Statement {
-
- private final FrameworkMethod method;
-
- private final Object test;
-
- private final CamelCdiContext context;
-
- FrameworkMethodCdiInjection(FrameworkMethod method, Object test, CamelCdiContext context) {
- this.method = method;
- this.test = test;
- this.context = context;
- }
-
- @Override
- public void evaluate() throws Throwable {
- BeanManager manager = context.getBeanManager();
- Type[] types = method.getMethod().getGenericParameterTypes();
- Object[] parameters = new Object[types.length];
- for (int i = 0; i < types.length; i++) {
- // TODO: use a proper CreationalContext...
- parameters[i] = manager.getInjectableReference(new FrameworkMethodInjectionPoint(method.getMethod(), i, manager),
- manager.createCreationalContext(null));
- }
-
- method.invokeExplosively(test, parameters);
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodInjectionPoint.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodInjectionPoint.java
deleted file mode 100644
index ec79490..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodInjectionPoint.java
+++ /dev/null
@@ -1,88 +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.cdi;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Annotated;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.InjectionPoint;
-
-final class FrameworkMethodInjectionPoint implements InjectionPoint {
-
- private final Method method;
-
- private final FrameworkAnnotatedParameter annotated;
-
- private final Type type;
-
- private final Set<Annotation> qualifiers;
-
- FrameworkMethodInjectionPoint(Method method, int position, BeanManager manager) {
- this.method = method;
- this.annotated = new FrameworkAnnotatedParameter(method, position, manager);
- this.type = method.getGenericParameterTypes()[position];
- this.qualifiers = new HashSet<>();
- for (Annotation annotation : method.getParameterAnnotations()[position]) {
- if (manager.isQualifier(annotation.annotationType())) {
- qualifiers.add(annotation);
- }
- }
- }
-
- @Override
- public Bean<?> getBean() {
- return null;
- }
-
- @Override
- public Member getMember() {
- return method;
- }
-
- @Override
- public Set<Annotation> getQualifiers() {
- return Collections.unmodifiableSet(qualifiers);
- }
-
- @Override
- public Type getType() {
- return type;
- }
-
- @Override
- public boolean isDelegate() {
- return false;
- }
-
- @Override
- public boolean isTransient() {
- return false;
- }
-
- @Override
- public Annotated getAnnotated() {
- return annotated;
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodSorter.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodSorter.java
deleted file mode 100644
index 6820ec7..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/FrameworkMethodSorter.java
+++ /dev/null
@@ -1,37 +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.cdi;
-
-import java.util.Comparator;
-
-import org.junit.runners.model.FrameworkMethod;
-
-final class FrameworkMethodSorter implements Comparator<FrameworkMethod> {
-
- @Override
- public int compare(FrameworkMethod m1, FrameworkMethod m2) {
- int i1 = 0;
- int i2 = 0;
- if (m1.getMethod().isAnnotationPresent(Order.class)) {
- i1 = m1.getMethod().getAnnotation(Order.class).value();
- }
- if (m2.getMethod().isAnnotationPresent(Order.class)) {
- i2 = m2.getMethod().getAnnotation(Order.class).value();
- }
- return i1 < i2 ? -1 : (i1 == i2 ? 0 : 1);
- }
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/Order.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/Order.java
deleted file mode 100644
index 4acf98c..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/Order.java
+++ /dev/null
@@ -1,32 +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.cdi;
-
-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;
-
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface Order {
-
- int value();
-
-}
diff --git a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/PriorityLiteral.java b/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/PriorityLiteral.java
deleted file mode 100644
index 2f6ff6f..0000000
--- a/components/camel-test-cdi/src/main/java/org/apache/camel/test/cdi/PriorityLiteral.java
+++ /dev/null
@@ -1,38 +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.cdi;
-
-import javax.annotation.Priority;
-import javax.enterprise.util.AnnotationLiteral;
-
-final class PriorityLiteral extends AnnotationLiteral<Priority> implements Priority {
-
- private final int priority;
-
- private PriorityLiteral(int priority) {
- this.priority = priority;
- }
-
- static PriorityLiteral of(int priority) {
- return new PriorityLiteral(priority);
- }
-
- @Override
- public int value() {
- return priority;
- }
-}
diff --git a/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java b/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java
deleted file mode 100644
index 4171106..0000000
--- a/components/camel-test-cdi/src/test/java/org/apache/camel/test/cdi/FilterTest.java
+++ /dev/null
@@ -1,73 +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.cdi;
-
-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.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-// START SNIPPET: example
-// tag::example[]
-@RunWith(CamelCdiRunner.class)
-public class FilterTest {
-
- @EndpointInject("mock:result")
- protected MockEndpoint resultEndpoint;
-
- @Produce("direct:start")
- protected ProducerTemplate template;
-
- @Before
- 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();
- }
-
- static class ContextConfig extends RouteBuilder {
-
- @Override
- 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-cdi/src/test/resources/log4j2.properties b/components/camel-test-cdi/src/test/resources/log4j2.properties
deleted file mode 100644
index 290318f..0000000
--- a/components/camel-test-cdi/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,28 +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.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-test-cdi.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d %-5p %c{1} - %m %n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
diff --git a/components/camel-test-junit5/pom.xml b/components/camel-test-junit5/pom.xml
deleted file mode 100644
index 5e03d26..0000000
--- a/components/camel-test-junit5/pom.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.camel</groupId>
- <artifactId>components</artifactId>
- <version>3.9.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>camel-test-junit5</artifactId>
- <packaging>jar</packaging>
-
- <name>Camel :: Test :: JUnit5</name>
- <description>Camel unit testing with JUnit 5</description>
-
- <properties>
- <firstVersion>3.0.0</firstVersion>
- <label>testing,java</label>
- <title>Test JUnit5</title>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core-engine</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-core-languages</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-management</artifactId>
- <scope>test</scope>
- </dependency>
-
- <!-- common deps used in tests -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-bean</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-browse</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-controlbus</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-dataformat</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-dataset</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-direct</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-directvm</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-file</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-language</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-log</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-mock</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-ref</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-rest</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-saga</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-scheduler</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-seda</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-stub</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-timer</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-validator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-vm</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-xpath</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-xslt</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-engine</artifactId>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-params</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-xml-jaxb</artifactId>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-</project>
diff --git a/components/camel-test-junit5/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/components/camel-test-junit5/src/generated/resources/META-INF/services/org/apache/camel/other.properties
deleted file mode 100644
index 1ad70bb..0000000
--- a/components/camel-test-junit5/src/generated/resources/META-INF/services/org/apache/camel/other.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-name=test-junit5
-groupId=org.apache.camel
-artifactId=camel-test-junit5
-version=3.9.0-SNAPSHOT
-projectName=Camel :: Test :: JUnit5
-projectDescription=Camel unit testing with JUnit 5
diff --git a/components/camel-test-junit5/src/generated/resources/test-junit5.json b/components/camel-test-junit5/src/generated/resources/test-junit5.json
deleted file mode 100644
index 65ebd04..0000000
--- a/components/camel-test-junit5/src/generated/resources/test-junit5.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "other": {
- "kind": "other",
- "name": "test-junit5",
- "title": "Test JUnit5",
- "description": "Camel unit testing with JUnit 5",
- "deprecated": false,
- "firstVersion": "3.0.0",
- "label": "testing,java",
- "supportLevel": "Stable",
- "groupId": "org.apache.camel",
- "artifactId": "camel-test-junit5",
- "version": "3.9.0-SNAPSHOT"
- }
-}
diff --git a/components/camel-test-junit5/src/main/docs/test-junit5.adoc b/components/camel-test-junit5/src/main/docs/test-junit5.adoc
deleted file mode 100644
index dac0b78..0000000
--- a/components/camel-test-junit5/src/main/docs/test-junit5.adoc
+++ /dev/null
@@ -1,93 +0,0 @@
-[[test-junit5-other]]
-= Test JUnit5 Component
-:docTitle: Test JUnit5
-:artifactId: camel-test-junit5
-:description: Camel unit testing with JUnit 5
-:since: 3.0
-:supportLevel: Stable
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/others/test-junit5.adoc[opts=optional]
-
-*Since Camel {since}*
-
-The `camel-test-junit5` module is used for unit testing Camel.
-
-The class `org.apache.camel.test.junit5.CamelTestSupport` provides a base JUnit class which you would extend
-and implement your Camel unit test.
-
-== Simple unit test example
-
-As shown below is a basic junit test which uses `camel-test-junit5`. The `createRouteBuilder` method is used
-for build the routes to be tested. Then the methods with `@Test` annotations are JUnit test methods which
-will be executed. The base class `CamelTestSupport` has a number of helper methods to configure testing,
-see more at the javadoc of this class.
-
-[source,java]
-----
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-public class SimpleMockTest extends CamelTestSupport {
-
- @Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").to("mock:result");
- }
- };
- }
-
-}
-----
-
-== Migrating Camel Tests from JUnit 4 to JUnit 5
-Find below some hints to help in migrating camel tests from JUnit 4 to JUnit 5.
-
-=== Referencing the Camel Test JUnit5 library in your project
-Projects using `camel-test` would need to use `camel-test-junit5`. For instance, maven users would update their pom.xml file as below:
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-junit5</artifactId>
- <scope>test</scope>
-</dependency>
-----
-
-Tips: It's possible to run JUnit4 & JUnit5 based camel tests side by side including the following dependencies `camel-test`,
-`camel-test-junit5` and `junit-vintage-engine`. This configuration allows to migrate a camel test at once.
-
-=== Typical migration steps linked to JUnit 5 support in Camel Test
-* Imports of `org.apache.camel.test.junit4.\*` should be replaced with `org.apache.camel.test.junit5.*`
-* `TestSupport` static methods should be imported where needed, for instance `import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf`
-* Usage of the field `CamelTestSupport.log` should be replaced by another logger, for instance `org.slf4j.LoggerFactory.getLogger(MyCamelTest.class);`
-* Usage of the method `CamelTestSupport.createRegistry` should be replaced by `CamelTestSupport.createCamelRegistry()`
-* Overrides of `isCreateCamelContextPerClass()` returning `false` should be removed
-* Overrides of `isCreateCamelContextPerClass()` returning `true` should be replaced by `@TestInstance(Lifecycle.PER_CLASS)`
-
-
-=== Typical migration steps linked to JUnit 5 itself
-Once Camel related steps have been performed, there are still typical JUnit 5 migration steps to remember:
-
-* New JUnit 5 assertions should be imported where needed, for instance `import static org.junit.jupiter.api.Assertions.assertEquals`
-* Assertion messages should be moved to the last parameter where needed, for instance `assertEquals("message", 2, 1)` becomes `assertEquals(2, 1, "message")`
-* `org.junit.Test` should be changed in favor of `org.junit.jupiter.api.Test`
-* `org.junit.Ignore` should be changed in favor of `org.junit.jupiter.api.Disabled`
-* `org.junit.Before` should be changed in favor of `org.junit.jupiter.api.BeforeEach`
-* `org.junit.After` should be changed in favor of `org.junit.jupiter.api.AfterEach`
-* `org.junit.BeforeClass` should be changed in favor of `import org.junit.jupiter.api.BeforeAll`
-* `org.junit.AfterClass` should be changed in favor of `import org.junit.jupiter.api.AfterAll`
-* Built-in `assertThat` from third-party assertion libraries should be used. For instance, use `org.hamcrest.MatcherAssert.assertThat` from `java-hamcrest`
-
-Depending on the context, more involved tips might be needed, please check the https://junit.org/junit5/docs/current/user-guide/[JUnit 5 User Guide] then.
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
deleted file mode 100644
index 3adc24d..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinder.java
+++ /dev/null
@@ -1,93 +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;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Finds currently available server ports.
- */
-public final class AvailablePortFinder {
-
- private static final Logger LOG = LoggerFactory.getLogger(AvailablePortFinder.class);
-
- /**
- * Creates a new instance.
- */
- private AvailablePortFinder() {
- // Do nothing
- }
-
- /**
- * Gets the next available port.
- *
- * @throws IllegalStateException if there are no ports available
- * @return the available port
- */
- public static int getNextAvailable() {
- return probePort(0);
- }
-
- /**
- * Gets the next available port in the given range.
- *
- * @param fromPort port number start range.
- * @param toPort port number end range.
- *
- * @throws IllegalStateException if there are no ports available
- * @return the available port
- */
- public static int getNextAvailable(int fromPort, int toPort) {
- for (int i = fromPort; i <= toPort; i++) {
- try {
- return probePort(i);
- } catch (IllegalStateException e) {
- // do nothing, let's try the next port
- }
- }
- throw new IllegalStateException("Cannot find free port");
- }
-
- /**
- * Probe a port to see if it is free
- *
- * @param port an integer port number to be tested. If port is 0, then the next available port is
- * returned.
- * @throws IllegalStateException if the port is not free or, in case of port 0, if there are no ports available at
- * all.
- * @return the port number itself if the port is free or, in case of port 0, the first
- * available port number.
- */
- private static int probePort(int port) {
- try (ServerSocket ss = new ServerSocket()) {
- ss.setReuseAddress(true);
- ss.bind(new InetSocketAddress((InetAddress) null, port), 1);
- int probedPort = ss.getLocalPort();
- LOG.info("Available port is -> {}", probedPort);
- return probedPort;
- } catch (IOException e) {
- throw new IllegalStateException("Cannot find free port", e);
- }
- }
-
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinderPropertiesFunction.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinderPropertiesFunction.java
deleted file mode 100644
index 078f0d6..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/AvailablePortFinderPropertiesFunction.java
+++ /dev/null
@@ -1,115 +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;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.camel.spi.PropertiesFunction;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.util.StringHelper;
-
-/**
- * A {@link PropertiesFunction} that reserves network ports and place them in a cache for reuse.
- * <p/>
- * The first time the function is invoked for a given name, an unused network port is determined and cached in an hash
- * map with the given name as key so each time this function is invoked for the same name, the previously discovered
- * port will be returned.
- * <p/>
- * This is useful for testing purpose where you can write a route like:
- *
- * <pre>
- * {@code
- * from("undertow:http://0.0.0.0:{{available-port:server-port}}")
- * .to("mock:result");
- * }
- * </pre>
- *
- * And then you can invoke with {@link org.apache.camel.ProducerTemplate} like:
- *
- * <pre>
- * {@code
- * template.sendBody("undertow:http://0.0.0.0:{{available-port:server-port}}", "the body");
- * }
- * </pre>
- *
- * Doing so avoid the need to compute the port and pass it to the various method or store it as a global variable in the
- * test class.
- *
- * @see AvailablePortFinder
- */
-public class AvailablePortFinderPropertiesFunction implements PropertiesFunction {
- private final Map<String, String> portMapping;
-
- public AvailablePortFinderPropertiesFunction() {
- this.portMapping = new ConcurrentHashMap<>();
- }
-
- @Override
- public String getName() {
- return "available-port";
- }
-
- @Override
- public String apply(String remainder) {
- if (ObjectHelper.isEmpty(remainder)) {
- return remainder;
- }
-
- String name = StringHelper.before(remainder, ":");
- String range = StringHelper.after(remainder, ":");
-
- if (name == null) {
- name = remainder;
- }
-
- final Integer from;
- final Integer to;
-
- if (range != null) {
- String f = StringHelper.before(range, "-");
- if (ObjectHelper.isEmpty(f)) {
- throw new IllegalArgumentException(
- "Unable to parse from range, range should be defined in the as from-to, got: " + range);
- }
-
- String t = StringHelper.after(range, "-");
- if (ObjectHelper.isEmpty(t)) {
- throw new IllegalArgumentException(
- "Unable to parse to range, range should be defined in the as from-to, got: " + range);
- }
-
- from = Integer.parseInt(f);
- to = Integer.parseInt(t);
- } else {
- from = null;
- to = null;
- }
-
- return this.portMapping.computeIfAbsent(name, n -> {
- final int port;
-
- if (from != null && to != null) {
- port = AvailablePortFinder.getNextAvailable(from, to);
- } else {
- port = AvailablePortFinder.getNextAvailable();
- }
-
- return Integer.toString(port);
- });
- }
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/CamelRouteCoverageDumper.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/CamelRouteCoverageDumper.java
deleted file mode 100644
index a04d9fd..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/CamelRouteCoverageDumper.java
+++ /dev/null
@@ -1,200 +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;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-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 org.apache.camel.Route;
-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.model.ModelCamelContext;
-import org.apache.camel.util.IOHelper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A <code>CamelRouteCoverageDumper</code> instance dumps the route coverage of a given camel test.
- */
-public class CamelRouteCoverageDumper {
-
- private static final Logger LOG = LoggerFactory.getLogger(CamelRouteCoverageDumper.class);
-
- public void dump(
- ManagedCamelContextMBean managedCamelContext, ModelCamelContext context, String dumpDir, String dumpFilename,
- String testClass, String testName,
- long testTimeTaken)
- throws Exception {
- logCoverageSummary(managedCamelContext, context);
-
- String routeCoverageAsXml = managedCamelContext.dumpRoutesCoverageAsXml();
- String combined = "<camelRouteCoverage>\n" + gatherTestDetailsAsXml(testClass, testName, testTimeTaken)
- + routeCoverageAsXml + "\n</camelRouteCoverage>";
-
- File dumpFile = new File(dumpDir);
- // ensure dir exists
- dumpFile.mkdirs();
- dumpFile = new File(dumpDir, dumpFilename);
-
- LOG.info("Dumping route coverage to file: {}", dumpFile);
- InputStream is = new ByteArrayInputStream(combined.getBytes());
- OutputStream os = new FileOutputStream(dumpFile, false);
- IOHelper.copyAndCloseInput(is, os);
- IOHelper.close(os);
- }
-
- /**
- * Groups all processors from Camel context by route id.
- */
- private Map<String, List<ManagedProcessorMBean>> findProcessorsForEachRoute(MBeanServer server, ModelCamelContext context)
- 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(String testClass, String testName, long timeTaken) {
- StringBuilder sb = new StringBuilder();
- sb.append("<test>\n");
- sb.append(" <class>").append(testClass).append("</class>\n");
- sb.append(" <method>").append(testName).append("</method>\n");
- sb.append(" <time>").append(timeTaken).append("</time>\n");
- sb.append("</test>\n");
- return sb.toString();
- }
-
- /**
- * Logs route coverage summary, including which routes are uncovered and what is the coverage of each processor in
- * each route.
- */
- private void logCoverageSummary(ManagedCamelContextMBean managedCamelContext, ModelCamelContext context) 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, context);
-
- // 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());
- }
-
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/ExcludingPackageScanClassResolver.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/ExcludingPackageScanClassResolver.java
deleted file mode 100644
index ce04f9e..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/ExcludingPackageScanClassResolver.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;
-
-import java.util.Collections;
-import java.util.Set;
-
-import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
-import org.apache.camel.impl.scan.AssignableToPackageScanFilter;
-import org.apache.camel.impl.scan.InvertingPackageScanFilter;
-
-public class ExcludingPackageScanClassResolver extends DefaultPackageScanClassResolver {
-
- public void setExcludedClasses(Set<Class<?>> excludedClasses) {
- Set<Class<?>> parents = excludedClasses == null ? Collections.<Class<?>> emptySet() : excludedClasses;
- addFilter(new InvertingPackageScanFilter(new AssignableToPackageScanFilter(parents)));
- }
-
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/TestSupportNodeIdFactory.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/TestSupportNodeIdFactory.java
deleted file mode 100644
index e66d42a..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/TestSupportNodeIdFactory.java
+++ /dev/null
@@ -1,30 +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;
-
-import org.apache.camel.impl.engine.DefaultNodeIdFactory;
-
-public class TestSupportNodeIdFactory extends DefaultNodeIdFactory {
-
- /**
- * Start tests with fresh counters
- */
- public static void resetCounters() {
- resetAllCounters();
- }
-
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
deleted file mode 100644
index 258ecb2..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/CamelTestSupport.java
+++ /dev/null
@@ -1,1028 +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;
-
-import java.lang.annotation.Annotation;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-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.RoutesBuilder;
-import org.apache.camel.RuntimeCamelException;
-import org.apache.camel.Service;
-import org.apache.camel.ServiceStatus;
-import org.apache.camel.api.management.ManagedCamelContext;
-import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.InterceptSendToMockEndpointStrategy;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.debugger.DefaultDebugger;
-import org.apache.camel.model.Model;
-import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.model.ProcessorDefinition;
-import org.apache.camel.spi.CamelBeanPostProcessor;
-import org.apache.camel.spi.Language;
-import org.apache.camel.spi.PropertiesComponent;
-import org.apache.camel.spi.Registry;
-import org.apache.camel.support.BreakpointSupport;
-import org.apache.camel.support.EndpointHelper;
-import org.apache.camel.test.CamelRouteCoverageDumper;
-import org.apache.camel.util.StopWatch;
-import org.apache.camel.util.StringHelper;
-import org.apache.camel.util.TimeUtils;
-import org.apache.camel.util.URISupport;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.TestInstance.Lifecycle;
-import org.junit.jupiter.api.extension.AfterAllCallback;
-import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
-import org.junit.jupiter.api.extension.BeforeAllCallback;
-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.
- */
-public abstract class CamelTestSupport
- implements BeforeEachCallback, AfterAllCallback, BeforeAllCallback, 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";
-
- // CHECKSTYLE:OFF
- 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 Properties extra;
- protected volatile ModelCamelContext context;
- protected volatile ProducerTemplate template;
- protected volatile FluentProducerTemplate fluentTemplate;
- protected volatile ConsumerTemplate consumer;
- protected volatile Service camelContextService;
- @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 static final ThreadLocal<AtomicInteger> TESTS = new ThreadLocal<>();
- private static final ThreadLocal<CamelTestSupport> INSTANCE = new ThreadLocal<>();
- private String currentTestName;
- private boolean isCreateCamelContextPerClass = false;
- private CamelRouteCoverageDumper routeCoverageDumper = new CamelRouteCoverageDumper();
- // CHECKSTYLE:ON
-
- @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();
- }
-
- @Override
- public void beforeAll(ExtensionContext context) {
- isCreateCamelContextPerClass
- = context.getTestInstanceLifecycle().filter(lc -> lc.equals(Lifecycle.PER_CLASS)).isPresent();
- }
-
- @Override
- public void afterAll(ExtensionContext context) {
- CamelTestSupport support = INSTANCE.get();
- if (support != null && support.isCreateCamelContextPerClass()) {
- try {
- support.tearDownCreateCamelContextPerClass();
- } catch (Exception e) {
- // ignore
- }
- }
- }
-
- /**
- * 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;
- }
-
- /**
- * Tells whether {@link CamelContext} should be setup per test or per class.
- * <p/>
- * By default it will be setup/teardown per test method. This method returns <code>true</code> when the camel test
- * class is annotated with @TestInstance(TestInstance.Lifecycle.PER_CLASS).
- * <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 final boolean isCreateCamelContextPerClass() {
- return isCreateCamelContextPerClass;
- }
-
- /**
- * 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 matching the given pattern, which follows the following rules:
- * <p>
- * - Match by route id - Match by route input endpoint uri
- * <p>
- * The matching is using exact match, by wildcard and regular expression.
- * <p>
- * 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:*
- * <p>
- * Multiple patterns can be separated by comma, for example to exclude both foo and bar routes, use:
- * exclude=foo*,bar*
- * <p>
- * Exclude takes precedence over include.
- */
- public String getRouteFilterIncludePattern() {
- return null;
- }
-
- /**
- * Used for filtering routes matching the given pattern, which follows the following rules:
- * <p>
- * - Match by route id - Match by route input endpoint uri
- * <p>
- * The matching is using exact match, by wildcard and regular expression.
- * <p>
- * 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:*
- * <p>
- * Multiple patterns can be separated by comma, for example to exclude both foo and bar routes, use:
- * exclude=foo*,bar*
- * <p>
- * Exclude takes precedence over include.
- */
- public String getRouteFilterExcludePattern() {
- return null;
- }
-
- /**
- * Gets the name of the current test being executed.
- */
- public final String getCurrentTestName() {
- return currentTestName;
- }
-
- /**
- * 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()) {
- INSTANCE.set(this);
- AtomicInteger v = TESTS.get();
- if (v == null) {
- v = new AtomicInteger();
- TESTS.set(v);
- }
- if (v.getAndIncrement() == 0) {
- LOG.debug("Setup CamelContext before running first test");
- // test is per class, so only setup once (the first time)
- doSpringBootCheck();
- setupResources();
- doPreSetup();
- doSetUp();
- doPostSetup();
- } else {
- LOG.debug("Reset between test methods");
- // and in between tests we must do IoC and reset mocks
- postProcessTest();
- resetMocks();
- }
- } 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.");
- }
- }
-
- 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);
- // 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.getPropertiesComponent();
- if (extra == null) {
- 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()) {
- AdviceWith.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: {} ({} millis)", TimeUtils.printDuration(time), time);
-
- // 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 JAR as dependency and/or override useJmx() method to enable JMX in the unit test classes.");
- } else {
- routeCoverageDumper.dump(managedCamelContext, context, dir, name, getClass().getName(), currentTestName,
- timeTaken());
- }
- }
- LOG.info("********************************************************************************");
-
- if (isCreateCamelContextPerClass()) {
- // will tear down test specially in afterAll callback
- } else {
- LOG.debug("tearDown()");
- doStopTemplates(consumer, template, fluentTemplate);
- doStopCamelContext(context, camelContextService);
- doPostTearDown();
- cleanupResources();
- }
- }
-
- void tearDownCreateCamelContextPerClass() throws Exception {
- LOG.debug("tearDownCreateCamelContextPerClass()");
- TESTS.remove();
- doStopTemplates(threadConsumer.get(), threadTemplate.get(), threadFluentTemplate.get());
- doStopCamelContext(threadCamelContext.get(), threadService.get());
- 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
- }
-
- /**
- * 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;
- }
-
- /**
- * 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 used 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 CamelBeanPostProcessor} to this instance.
- * <p>
- * 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 bean post processor if the test class is not dependency
- // injected already by Spring Framework
- boolean spring = hasClassAnnotation("org.springframework.boot.test.context.SpringBootTest",
- "org.springframework.context.annotation.ComponentScan");
- if (!spring) {
- context.getExtension(ExtendedCamelContext.class).getBeanPostProcessor().postProcessBeforeInitialization(this,
- getClass().getName());
- context.getExtension(ExtendedCamelContext.class).getBeanPostProcessor().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) {
- 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) {
- 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 {
- Registry registry = createCamelRegistry();
-
- CamelContext retContext;
- if (registry != null) {
- retContext = new DefaultCamelContext(registry);
- } else {
- retContext = new DefaultCamelContext();
- }
-
- return retContext;
- }
-
- /**
- * 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}.
- * <p>
- * 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;
- }
-
- /**
- * 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 TestSupport.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 TestSupport.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. This implementation will lookup existing mock endpoints and match on the mock queue name, eg
- * mock:foo and mock:foo?retainFirst=5 would match as the queue name is foo.
- *
- * @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 {
- // look for existing mock endpoints that have the same queue name, and
- // to
- // do that we need to normalize uri and strip out query parameters and
- // whatnot
- String n;
- try {
- n = URISupport.normalizeUri(uri);
- } catch (Exception e) {
- throw RuntimeCamelException.wrapRuntimeException(e);
- }
- // strip query
- int idx = n.indexOf('?');
- if (idx != -1) {
- n = n.substring(0, idx);
- }
- final String target = n;
-
- // lookup endpoints in registry and try to find it
- MockEndpoint found = (MockEndpoint) context.getEndpointRegistry().values().stream()
- .filter(e -> e instanceof MockEndpoint).filter(e -> {
- String t = e.getEndpointUri();
- // strip query
- int idx2 = t.indexOf('?');
- if (idx2 != -1) {
- t = t.substring(0, idx2);
- }
- return t.equals(target);
- }).findFirst().orElse(null);
-
- if (found != null) {
- return found;
- }
-
- if (create) {
- return resolveMandatoryEndpoint(uri, MockEndpoint.class);
- } else {
- 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, 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, 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 TestSupport.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);
-
- TestSupport.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);
-
- TestSupport.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() {
- DefaultCamelContext.setDisableJmx(true);
- }
-
- /**
- * Enables the JMX agent. Must be called before the {@link #setUp()} method.
- */
- protected void enableJMX() {
- DefaultCamelContext.setDisableJmx(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-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java
deleted file mode 100644
index ffc0172..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/EndpointUriFactoryTestSupport.java
+++ /dev/null
@@ -1,47 +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;
-
-import java.util.Map;
-
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.spi.EndpointUriFactory;
-import org.junit.jupiter.api.Test;
-
-public abstract class EndpointUriFactoryTestSupport extends CamelTestSupport {
-
- @Test
- public void buildUri() {
- // let's just see if the route starts successfully
- }
-
- protected abstract String scheme();
-
- protected abstract Map<String, Object> pathParameters();
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- public void configure() throws Exception {
- EndpointUriFactory factory = getContext().adapt(ExtendedCamelContext.class).getEndpointUriFactory(scheme());
- String uri = factory.buildUri(scheme(), pathParameters(), false);
- from(uri).to("mock:out");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/ExchangeTestSupport.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/ExchangeTestSupport.java
deleted file mode 100644
index 14727c1..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/ExchangeTestSupport.java
+++ /dev/null
@@ -1,57 +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;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
-import org.apache.camel.support.DefaultExchange;
-import org.junit.jupiter.api.BeforeEach;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-/**
- * A base class for a test which requires a {@link org.apache.camel.CamelContext} and a populated {@link Exchange}
- */
-public abstract class ExchangeTestSupport extends CamelTestSupport {
- protected Exchange exchange;
-
- /**
- * A factory method to create an Exchange implementation
- */
- protected Exchange createExchange() {
- return new DefaultExchange(context);
- }
-
- /**
- * A strategy method to populate an exchange with some example values for use by language plugins
- */
- protected void populateExchange(Exchange exchange) {
- Message in = exchange.getIn();
- in.setHeader("foo", "abc");
- in.setHeader("bar", 123);
- in.setBody("<hello id='m123'>world!</hello>");
- }
-
- @Override
- @BeforeEach
- public void setUp() throws Exception {
- super.setUp();
- exchange = createExchange();
- assertNotNull(exchange, "No exchange created!");
- populateExchange(exchange);
- }
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/LanguageTestSupport.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/LanguageTestSupport.java
deleted file mode 100644
index c2f2241..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/LanguageTestSupport.java
+++ /dev/null
@@ -1,100 +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;
-
-import org.apache.camel.Exchange;
-import org.apache.camel.Expression;
-import org.apache.camel.spi.Language;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-/**
- * A useful base class for testing the language plugins in Camel
- */
-public abstract class LanguageTestSupport extends ExchangeTestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(LanguageTestSupport.class);
-
- protected abstract String getLanguageName();
-
- /**
- * Asserts that the given predicate expression evaluated on the current language and message exchange evaluates to
- * true
- */
- protected void assertPredicate(String expression) {
- assertPredicate(exchange, expression, true);
- }
-
- /**
- * Asserts that the given predicate expression evaluated on the current language and message exchange evaluates to
- * false
- */
- protected void assertPredicateFails(String expression) {
- assertPredicate(exchange, expression, false);
- }
-
- /**
- * Asserts that the given predicate expression evaluated on the current language and message exchange evaluates to
- * the expected value
- */
- protected void assertPredicate(String expression, boolean expected) {
- assertPredicate(exchange, expression, expected);
- }
-
- protected void assertPredicate(Exchange exchange, String expression, boolean expected) {
- assertPredicate(getLanguageName(), expression, exchange, expected);
- }
-
- /**
- * Asserts that this language expression evaluates to the given value on the given exchange
- */
- protected void assertExpression(Exchange exchange, String expressionText, Object expectedValue) {
- assertExpression(exchange, getLanguageName(), expressionText, expectedValue);
- }
-
- /**
- * Asserts that this language expression evaluates to the given value on the current exchange
- */
- protected void assertExpression(String expressionText, Object expectedValue) {
- assertExpression(exchange, expressionText, expectedValue);
- }
-
- /**
- * Asserts that the expression evaluates to one of the two given values
- */
- protected void assertExpression(String expressionText, String expectedValue, String orThisExpectedValue) {
- Language language = assertResolveLanguage(getLanguageName());
-
- Expression expression = language.createExpression(expressionText);
- assertNotNull(expression, "No Expression could be created for text: " + expressionText + " language: " + language);
-
- Object value;
- if (expectedValue != null) {
- value = expression.evaluate(exchange, expectedValue.getClass());
- } else {
- value = expression.evaluate(exchange, Object.class);
- }
- LOG.debug("Evaluated expression: {} on exchange: {} result: {}", expression, exchange, value);
-
- assertTrue(expectedValue.equals(value) || orThisExpectedValue.equals(value),
- "Expression: " + expression + " on Exchange: " + exchange);
- }
-
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java
deleted file mode 100644
index 1670bbb..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/TestSupport.java
+++ /dev/null
@@ -1,539 +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;
-
-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;
-
-/**
- * Provides utility methods for camel test purpose (builders, assertions, endpoint resolutions, file helpers).
- */
-public final class TestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(TestSupport.class);
-
- private TestSupport() {
- }
-
- // -------------------------------------------------------------------------
- // 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 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
- // -----------------------------------------------------------------------
-
- /**
- * Asserts that a given value is of an expected type.
- */
- 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);
- }
-
- /**
- * Asserts that a given endpoint has an expected uri.
- */
- public static void assertEndpointUri(Endpoint endpoint, String expectedUri) {
- assertNotNull(endpoint, "Endpoint is null when expecting endpoint for: " + expectedUri);
- assertEquals(expectedUri, endpoint.getEndpointUri(), "Endpoint uri for: " + endpoint);
- }
-
- /**
- * Asserts that the In message on the exchange contains an header with a given name and expected value.
- */
- public static Object assertInMessageHeader(Exchange exchange, String headerName, Object expectedValue) {
- return assertMessageHeader(exchange.getIn(), headerName, expectedValue);
- }
-
- /**
- * Asserts that the message on the exchange contains an header with a given name and expected value.
- */
- public static Object assertOutMessageHeader(Exchange exchange, String headerName, Object expectedValue) {
- return assertMessageHeader(exchange.getMessage(), headerName, expectedValue);
- }
-
- /**
- * Asserts that the given exchange has a given expectedBody on the IN message.
- */
- public static void assertInMessageBodyEquals(Exchange exchange, Object expectedBody) throws InvalidPayloadException {
- assertNotNull(exchange, "Should have a response exchange");
-
- Object actualBody;
- if (expectedBody == null) {
- actualBody = exchange.getIn().getMandatoryBody();
- assertEquals(expectedBody, actualBody, "in body of: " + exchange);
- } else {
- actualBody = exchange.getIn().getMandatoryBody(expectedBody.getClass());
- }
- assertEquals(expectedBody, actualBody, "in body of: " + exchange);
-
- LOG.debug("Received response: {} with in: {}", exchange, exchange.getIn());
- }
-
- /**
- * Asserts that the given exchange has a given expectedBody on the message.
- */
- public static void assertMessageBodyEquals(Exchange exchange, Object expectedBody) throws InvalidPayloadException {
- assertNotNull(exchange, "Should have a response exchange!");
-
- Object actualBody;
- if (expectedBody == null) {
- actualBody = exchange.getMessage().getMandatoryBody();
- assertEquals(expectedBody, actualBody, "output body of: " + exchange);
- } else {
- actualBody = exchange.getMessage().getMandatoryBody(expectedBody.getClass());
- }
- assertEquals(expectedBody, actualBody, "output body of: " + exchange);
-
- LOG.debug("Received response: {} with out: {}", exchange, exchange.getMessage());
- }
-
- /**
- * Asserts that a given message contains an header with a given name and expected value.
- */
- public static Object assertMessageHeader(Message message, String headerName, Object expectedValue) {
- Object actualValue = message.getHeader(headerName);
- assertEquals(expectedValue, actualValue, "Header: " + headerName + " on Message: " + message);
- return actualValue;
- }
-
- /**
- * Asserts that the given expression when evaluated returns the given answer.
- */
- public static Object assertExpression(Expression expression, Exchange exchange, Object expectedAnswer) {
- Object actualAnswer;
- if (expectedAnswer != null) {
- actualAnswer = expression.evaluate(exchange, expectedAnswer.getClass());
- } else {
- actualAnswer = expression.evaluate(exchange, Object.class);
- }
-
- LOG.debug("Evaluated expression: {} on exchange: {} result: {}", expression, exchange, actualAnswer);
-
- assertEquals(expectedAnswer, actualAnswer, "Expression: " + expression + " on Exchange: " + exchange);
- return actualAnswer;
- }
-
- /**
- * Asserts that a given predicate returns <code>true</code> on a given exchange.
- */
- public static void assertPredicateMatches(Predicate predicate, Exchange exchange) {
- assertPredicate(predicate, exchange, true);
- }
-
- /**
- * Asserts that a given predicate returns <code>false</code> on a given 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.getMessage(), 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 expectedValue) {
- if (expectedValue) {
- PredicateAssertHelper.assertMatches(predicate, "Predicate failed: ", exchange);
- }
- boolean actualValue = predicate.matches(exchange);
-
- LOG.debug("Evaluated predicate: {} on exchange: {} result: {}", predicate, exchange, actualValue);
-
- assertEquals(expectedValue, actualValue, "Predicate: " + predicate + " on Exchange: " + exchange);
- return actualValue;
- }
-
- /**
- * Asserts that a given list has a single element.
- */
- 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 given list has a given expected size.
- */
- public static <T> List<T> assertListSize(List<T> list, int expectedSize) {
- return assertListSize("List", list, expectedSize);
- }
-
- /**
- * Asserts that a list is of the given size. When the assertion is broken, the error message starts with a given
- * prefix.
- */
- public static <T> List<T> assertListSize(String brokenAssertionMessagePrefix, List<T> list, int expectedSize) {
- assertEquals(expectedSize, list.size(),
- brokenAssertionMessagePrefix + " should be of size: " + expectedSize + " but is: " + list);
- return list;
- }
-
- /**
- * Asserts that a given collection has a given size.
- */
- public static <T> Collection<T> assertCollectionSize(Collection<T> list, int expectedSize) {
- return assertCollectionSize("List", list, expectedSize);
- }
-
- /**
- * Asserts that a given collection has a given size. When the assertion is broken, the error message starts with a
- * given prefix.
- */
- public static <
- T> Collection<T> assertCollectionSize(String brokenAssertionMessagePrefix, Collection<T> list, int expectedSize) {
- assertEquals(expectedSize, list.size(),
- brokenAssertionMessagePrefix + " should be of size: " + expectedSize + " but is: " + list);
- return list;
- }
-
- /**
- * 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, "Text should not be null!");
- assertTrue(text.contains(containedText), "Text: " + text + " does not contain: " + containedText);
- }
-
- /**
- * Asserts that two given directories are equal. 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);
- }
-
- /**
- * Asserts that two given directories are equal. 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);
- }
- }
-
- /**
- * Asserts that a given 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");
- }
-
- /**
- * Asserts that a given 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");
- }
-
- /**
- * Asserts that a given 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");
- }
-
- // -----------------------------------------------------------------------
- // Other helpers, resolution, file, getRouteList
- // -----------------------------------------------------------------------
-
- /**
- * Resolves an endpoint and asserts that it is found.
- */
- public static Endpoint resolveMandatoryEndpoint(CamelContext context, String endpointUri) {
- Endpoint endpoint = context.getEndpoint(endpointUri);
-
- assertNotNull(endpoint, "No endpoint found for URI: " + endpointUri);
-
- return endpoint;
- }
-
- /**
- * Resolves an endpoint and asserts that it is found.
- */
- public static <
- T extends Endpoint> T resolveMandatoryEndpoint(CamelContext context, String endpointUri, Class<T> endpointType) {
- T endpoint = context.getEndpoint(endpointUri, endpointType);
-
- assertNotNull(endpoint, "No endpoint found for URI: " + endpointUri);
-
- return endpoint;
- }
-
- /**
- * Creates an exchange with the given body.
- */
- public static Exchange createExchangeWithBody(CamelContext camelContext, Object body) {
- Exchange exchange = new DefaultExchange(camelContext);
- Message message = exchange.getIn();
- message.setBody(body);
- return exchange;
- }
-
- /**
- * 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;
- }
-
- /**
- * Recursively delete a directory, useful to zapping test data. Deletion will be attempted up to five time before
- * giving up.
- *
- * @param file the directory to be deleted
- * @return <tt>false</tt> when an error occur while deleting directory
- */
- public static boolean deleteDirectory(String file) {
- return deleteDirectory(new File(file));
- }
-
- /**
- * Recursively delete a directory, useful to zapping test data. Deletion will be attempted up to five time before
- * giving up.
- *
- * @param file the directory to be deleted
- * @return <tt>false</tt> when an error occur while 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;
- }
-
- /**
- * Recursively delete a directory. Deletion will be attempted a single time before giving up.
- *
- * @param file the directory to be deleted
- */
- public 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: {} failed", file.getAbsolutePath());
- }
- }
-
- /**
- * Creates a given directory.
- *
- * @param file the directory to be created
- */
- public static void createDirectory(String file) {
- File dir = new File(file);
- dir.mkdirs();
- }
-
- /**
- * Tells whether the current Operating System is the given expected platform.
- * <p/>
- * Uses <tt>os.name</tt> from the system properties to determine the Operating System.
- *
- * @param expectedPlatform such as Windows
- * @return <tt>true</tt> when the current Operating System is the expected platform, <tt>false</tt>
- * otherwise.
- */
- public static boolean isPlatform(String expectedPlatform) {
- String osName = System.getProperty("os.name").toLowerCase(Locale.US);
- return osName.contains(expectedPlatform.toLowerCase(Locale.US));
- }
-
- /**
- * Tells whether the current Java Virtual Machine has been issued by a given expected vendor.
- * <p/>
- * Uses <tt>java.vendor</tt> from the system properties to determine the vendor.
- *
- * @param expectedVendor such as IBM
- * @return <tt>true</tt> when the current Java Virtual Machine has been issued by the expected
- * vendor, <tt>false</tt> otherwise.
- */
- public static boolean isJavaVendor(String expectedVendor) {
- String javaVendor = System.getProperty("java.vendor").toLowerCase(Locale.US);
- return javaVendor.contains(expectedVendor.toLowerCase(Locale.US));
- }
-
- /**
- * Tells whether the current Java version is 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;
-
- }
-
- /**
- * Tells whether the current Java version is 1.8 and build_no 261 and later.
- *
- * @return <tt>true</tt> if its Java 1.8.0_261 and later, <tt>false</tt> if its not (for example Java 1.8.0_251)
- */
- // CHECKSTYLE:OFF
- public static boolean isJava18_261_later() {
- boolean ret;
- String version = System.getProperty("java.version");
- try {
- ret = version != null && version.startsWith("1.8.0_")
- && Integer.parseInt(version.substring(6)) >= 261;
- } catch (NumberFormatException ex) {
- ret = false;
- }
- return ret;
- }
- // CHECKSTYLE:ON
-
- /**
- * Tells whether the current Java version is 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-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameter.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameter.java
deleted file mode 100644
index e5a1fac..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameter.java
+++ /dev/null
@@ -1,25 +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.params;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Parameter {
- int value() default 0;
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameterized.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameterized.java
deleted file mode 100644
index 048585b..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameterized.java
+++ /dev/null
@@ -1,30 +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.params;
-
-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.ANNOTATION_TYPE, ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@ExtendWith(ParameterizedExtension.class)
-public @interface Parameterized {
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java
deleted file mode 100644
index ac61a0e..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/ParameterizedExtension.java
+++ /dev/null
@@ -1,150 +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.params;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.junit.jupiter.api.extension.Extension;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.TestInstancePostProcessor;
-import org.junit.jupiter.api.extension.TestInstantiationException;
-import org.junit.jupiter.api.extension.TestTemplateInvocationContext;
-import org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider;
-import org.junit.jupiter.params.converter.DefaultArgumentConverter;
-import org.junit.jupiter.params.provider.Arguments;
-import org.junit.platform.commons.util.CollectionUtils;
-import org.junit.platform.commons.util.ReflectionUtils;
-
-import static org.junit.jupiter.params.provider.Arguments.arguments;
-import static org.junit.platform.commons.util.AnnotationUtils.isAnnotated;
-
-public class ParameterizedExtension implements TestTemplateInvocationContextProvider {
-
- @Override
- public boolean supportsTestTemplate(ExtensionContext context) {
- return context.getTestMethod()
- .map(m -> isAnnotated(m, Test.class))
- .orElse(false);
- }
-
- @Override
- public java.util.stream.Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(
- ExtensionContext extensionContext) {
- Class<?> testClass = extensionContext.getRequiredTestClass();
- try {
- List<Method> parameters = getParametersMethods(testClass);
- if (parameters.size() != 1) {
- throw new IllegalStateException(
- "Class " + testClass.getName() + " should provide a single method annotated with @"
- + Parameters.class.getSimpleName());
- }
- Object params = parameters.iterator().next().invoke(null);
- return CollectionUtils.toStream(params)
- .map(ParameterizedExtension::toArguments)
- .map(Arguments::get)
- .map(ParameterizedTemplate::new);
- } catch (Exception e) {
- throw new IllegalStateException("Unable to generate test templates for class " + testClass.getName(), e);
- }
- }
-
- private List<Method> getParametersMethods(Class<?> testClass) {
- List<Method> parameters = java.util.stream.Stream.of(testClass.getDeclaredMethods())
- .filter(m -> Modifier.isStatic(m.getModifiers()))
- .filter(m -> m.getAnnotation(Parameters.class) != null)
- .collect(Collectors.toList());
- if (parameters.isEmpty() && testClass != null) {
- return getParametersMethods(testClass.getSuperclass());
- } else {
- return parameters;
- }
- }
-
- private static Arguments toArguments(Object item) {
- // Nothing to do except cast.
- if (item instanceof Arguments) {
- return (Arguments) item;
- }
- // Pass all multidimensional arrays "as is", in contrast to Object[].
- // See https://github.com/junit-team/junit5/issues/1665
- if (ReflectionUtils.isMultidimensionalArray(item)) {
- return arguments(item);
- }
- // Special treatment for one-dimensional reference arrays.
- // See https://github.com/junit-team/junit5/issues/1665
- if (item instanceof Object[]) {
- return arguments((Object[]) item);
- }
- // Pass everything else "as is".
- return arguments(item);
- }
-
- public static class ParameterizedTemplate implements TestTemplateInvocationContext {
-
- private final Object[] params;
-
- public ParameterizedTemplate(Object[] params) {
- this.params = params;
- }
-
- @Override
- public String getDisplayName(int invocationIndex) {
- return "[" + invocationIndex + "] "
- + java.util.stream.Stream.of(params).map(Object::toString).collect(Collectors.joining(", "));
- }
-
- @Override
- public java.util.List<Extension> getAdditionalExtensions() {
- return Arrays.asList(
- (TestInstancePostProcessor) this::postProcessTestInstance);
- }
-
- protected void postProcessTestInstance(Object testInstance, ExtensionContext context) throws Exception {
- Class<?> clazz = testInstance.getClass();
- java.util.List<Field> fields = hierarchy(clazz)
- .map(Class::getDeclaredFields)
- .flatMap(Stream::of)
- .filter(f -> isAnnotated(f, Parameter.class))
- .sorted(Comparator.comparing(f -> (Integer) f.getAnnotation(Parameter.class).value()))
- .collect(Collectors.toList());
- if (params.length != fields.size()) {
- throw new TestInstantiationException(
- "Expected " + fields.size() + " parameters bug got " + params.length + " when instantiating "
- + clazz.getName());
- }
- for (int i = 0; i < fields.size(); i++) {
- Field f = fields.get(i);
- f.setAccessible(true);
- f.set(testInstance, DefaultArgumentConverter.INSTANCE.convert(params[i], f.getType()));
- }
- }
-
- protected Stream<Class<?>> hierarchy(Class<?> clazz) {
- Class<?> superclass = clazz.getSuperclass();
- return Stream.concat(Stream.of(clazz), superclass != null ? hierarchy(superclass) : Stream.empty());
- }
-
- }
-
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameters.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameters.java
deleted file mode 100644
index cabf2e5..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Parameters.java
+++ /dev/null
@@ -1,28 +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.params;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface Parameters {
- String name() default "{index}";
-}
diff --git a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Test.java b/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Test.java
deleted file mode 100644
index d00bcdc..0000000
--- a/components/camel-test-junit5/src/main/java/org/apache/camel/test/junit5/params/Test.java
+++ /dev/null
@@ -1,27 +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.params;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-import org.junit.jupiter.api.TestTemplate;
-
-@Retention(RetentionPolicy.RUNTIME)
-@TestTemplate
-public @interface Test {
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/AvailablePortFinderTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/AvailablePortFinderTest.java
deleted file mode 100644
index c4fdf09..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/AvailablePortFinderTest.java
+++ /dev/null
@@ -1,60 +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;
-
-import java.net.DatagramSocket;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.MulticastSocket;
-import java.net.ServerSocket;
-
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-public class AvailablePortFinderTest {
-
- @Test
- public void testNotAvailableTcpPort() throws Exception {
- int p1 = AvailablePortFinder.getNextAvailable();
- ServerSocket socket = new ServerSocket(p1);
- int p2 = AvailablePortFinder.getNextAvailable();
- assertFalse(p1 == p2, "Port " + p1 + " Port2 " + p2);
- socket.close();
- }
-
- @Test
- public void testNotAvailableUdpPort() throws Exception {
- int p1 = AvailablePortFinder.getNextAvailable();
- DatagramSocket socket = new DatagramSocket(p1);
- int p2 = AvailablePortFinder.getNextAvailable();
- assertFalse(p1 == p2, "Port " + p1 + " Port2 " + p2);
- socket.close();
- }
-
- @Test
- public void testNotAvailableMulticastPort() throws Exception {
- int p1 = AvailablePortFinder.getNextAvailable();
- MulticastSocket socket = new MulticastSocket(null);
- socket.setReuseAddress(false); // true is default for MulticastSocket, we wan to fail if port is occupied
- socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), p1));
- int p2 = AvailablePortFinder.getNextAvailable();
- assertFalse(p1 == p2, "Port " + p1 + " Port2 " + p2);
- socket.close();
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/CamelTestSupportTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/CamelTestSupportTest.java
deleted file mode 100644
index 4c8453f..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/CamelTestSupportTest.java
+++ /dev/null
@@ -1,75 +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;
-
-import org.apache.camel.NoSuchEndpointException;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-
-public class CamelTestSupportTest extends CamelTestSupport {
-
- @Override
- @BeforeEach
- public void setUp() throws Exception {
- replaceRouteFromWith("routeId", "direct:start");
- super.setUp();
- }
-
- @Test
- public void replacesFromEndpoint() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Test
- public void exceptionThrownWhenEndpointNotFoundAndNoCreate() {
- assertThrows(NoSuchEndpointException.class, () -> {
- getMockEndpoint("mock:bogus", false);
- });
- }
-
- @Test
- public void exceptionThrownWhenEndpointNotAMockEndpoint() {
- assertThrows(NoSuchEndpointException.class, () -> {
- getMockEndpoint("direct:something", false);
- });
- }
-
- @Test
- public void autoCreateNonExisting() {
- MockEndpoint mock = getMockEndpoint("mock:bogus2", true);
- assertNotNull(mock);
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:something").id("routeId").to("mock:result");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternExcludeTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternExcludeTest.java
deleted file mode 100644
index 378c71a..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternExcludeTest.java
+++ /dev/null
@@ -1,56 +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;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class RouteFilterPatternExcludeTest extends CamelTestSupport {
-
- @Override
- public String getRouteFilterExcludePattern() {
- return "bar*";
- }
-
- @Test
- public void testRouteFilter() throws Exception {
- assertEquals(1, context.getRoutes().size());
- assertEquals(1, context.getRouteDefinitions().size());
- assertEquals("foo", context.getRouteDefinitions().get(0).getId());
-
- getMockEndpoint("mock:foo").expectedMessageCount(1);
-
- template.sendBody("direct:foo", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:foo").routeId("foo").to("mock:foo");
-
- from("direct:bar").routeId("bar").to("mock:bar");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternIncludeExcludeTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternIncludeExcludeTest.java
deleted file mode 100644
index 57e72f4..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternIncludeExcludeTest.java
+++ /dev/null
@@ -1,63 +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;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class RouteFilterPatternIncludeExcludeTest extends CamelTestSupport {
-
- @Override
- public String getRouteFilterIncludePattern() {
- return "foo*";
- }
-
- @Override
- public String getRouteFilterExcludePattern() {
- return "jms:*";
- }
-
- @Test
- public void testRouteFilter() throws Exception {
- assertEquals(1, context.getRoutes().size());
- assertEquals(1, context.getRouteDefinitions().size());
- assertEquals("foo", context.getRouteDefinitions().get(0).getId());
-
- getMockEndpoint("mock:foo").expectedMessageCount(1);
-
- template.sendBody("direct:foo", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:foo").routeId("foo").to("mock:foo");
-
- from("direct:bar").routeId("bar").to("mock:bar");
-
- from("jms:beer").routeId("foolish").to("mock:beer");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternIncludeTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternIncludeTest.java
deleted file mode 100644
index eb848c7..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/RouteFilterPatternIncludeTest.java
+++ /dev/null
@@ -1,56 +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;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-public class RouteFilterPatternIncludeTest extends CamelTestSupport {
-
- @Override
- public String getRouteFilterIncludePattern() {
- return "foo*";
- }
-
- @Test
- public void testRouteFilter() throws Exception {
- assertEquals(1, context.getRoutes().size());
- assertEquals(1, context.getRouteDefinitions().size());
- assertEquals("foo", context.getRouteDefinitions().get(0).getId());
-
- getMockEndpoint("mock:foo").expectedMessageCount(1);
-
- template.sendBody("direct:foo", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:foo").routeId("foo").to("mock:foo");
-
- from("direct:bar").routeId("bar").to("mock:bar");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithLambdaTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithLambdaTest.java
deleted file mode 100644
index 2df582b..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithLambdaTest.java
+++ /dev/null
@@ -1,56 +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.patterns;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-public class AdviceWithLambdaTest extends CamelTestSupport {
-
- @Override
- public boolean isUseAdviceWith() {
- return true;
- }
-
- @Test
- public void testAdviceWith() throws Exception {
- getMockEndpoint("mock:result").expectedMessageCount(1);
-
- // advice the route in one line
- AdviceWith.adviceWith(context, "foo", a -> a.weaveAddLast().to("mock:result"));
-
- // start Camel
- context.start();
-
- template.sendBody("direct:start", "Bye World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").routeId("foo").to("log:foo");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithNotStartedTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithNotStartedTest.java
deleted file mode 100644
index 7e18af5..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AdviceWithNotStartedTest.java
+++ /dev/null
@@ -1,74 +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.patterns;
-
-import java.util.concurrent.RejectedExecutionException;
-
-import org.apache.camel.CamelExecutionException;
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-import static org.apache.camel.test.junit5.TestSupport.assertIsInstanceOf;
-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 {
- AdviceWith.adviceWith(context.getRouteDefinition("foo"), context, new AdviceWithRouteBuilder() {
- @Override
- public void configure() {
- 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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").routeId("foo").to("log:foo");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AsyncSendMockTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AsyncSendMockTest.java
deleted file mode 100644
index b8ce24a..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/AsyncSendMockTest.java
+++ /dev/null
@@ -1,51 +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.patterns;
-
-import org.apache.camel.support.DefaultExchange;
-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.assertTrue;
-
-public class AsyncSendMockTest extends CamelTestSupport {
- private static final Logger LOG = LoggerFactory.getLogger(AsyncSendMockTest.class);
-
- @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) {
- LOG.warn("Failed to make async call to api: {}", e.getMessage(), e);
- assertTrue(false, "Failed to make async call to api");
- }
- }
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/CreateCamelContextPerTestFalseTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/CreateCamelContextPerTestFalseTest.java
deleted file mode 100644
index 149edb9..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/CreateCamelContextPerTestFalseTest.java
+++ /dev/null
@@ -1,116 +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.patterns;
-
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.camel.CamelContext;
-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.AfterAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
-@TestInstance(TestInstance.Lifecycle.PER_METHOD)
-public class CreateCamelContextPerTestFalseTest extends CamelTestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(CreateCamelContextPerTestFalseTest.class);
-
- private static final AtomicInteger CREATED_CONTEXTS = new AtomicInteger();
- private static final AtomicInteger POST_TEAR_DOWN = new AtomicInteger();
-
- @EndpointInject("mock:result")
- protected MockEndpoint resultEndpoint;
-
- @Produce("direct:start")
- protected ProducerTemplate template;
-
- @Override
- protected CamelContext createCamelContext() throws Exception {
- LOG.info("createCamelContext()");
- CREATED_CONTEXTS.incrementAndGet();
- return super.createCamelContext();
- }
-
- @Override
- protected void doPostTearDown() throws Exception {
- LOG.info("doPostTearDown()");
- POST_TEAR_DOWN.incrementAndGet();
- super.doPostTearDown();
- }
-
- @Test
- public void testSendMatchingMessage() throws Exception {
- String expectedBody = "<matched/>";
-
- resultEndpoint.expectedBodiesReceived(expectedBody);
-
- template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
- resultEndpoint.assertIsSatisfied();
-
- assertTrue(CREATED_CONTEXTS.get() >= 1, "Should create 1 or more CamelContext per test class");
- }
-
- @Test
- public void testSendAnotherMatchingMessage() throws Exception {
- String expectedBody = "<matched/>";
-
- resultEndpoint.expectedBodiesReceived(expectedBody);
-
- template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
- resultEndpoint.assertIsSatisfied();
-
- assertTrue(CREATED_CONTEXTS.get() >= 1, "Should create 1 or more CamelContext per test class");
- }
-
- @Test
- public void testSendNotMatchingMessage() throws Exception {
- resultEndpoint.expectedMessageCount(0);
-
- template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
-
- resultEndpoint.assertIsSatisfied();
-
- assertTrue(CREATED_CONTEXTS.get() >= 1, "Should create 1 or more CamelContext per test class");
- }
-
- @AfterAll
- public static void validateTearDown() {
- assertEquals(3, CREATED_CONTEXTS.get());
- assertEquals(3, POST_TEAR_DOWN.get());
- }
-
- @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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/CreateCamelContextPerTestTrueTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/CreateCamelContextPerTestTrueTest.java
deleted file mode 100644
index 222fe62..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/CreateCamelContextPerTestTrueTest.java
+++ /dev/null
@@ -1,148 +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.patterns;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.apache.camel.CamelContext;
-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.apache.camel.util.StopWatch;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public class CreateCamelContextPerTestTrueTest extends CamelTestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(CreateCamelContextPerTestTrueTest.class);
-
- private static final AtomicInteger CREATED_CONTEXTS = new AtomicInteger();
- private static final AtomicInteger POST_TEAR_DOWN = new AtomicInteger();
- private static final CountDownLatch LATCH = new CountDownLatch(1);
-
- @EndpointInject("mock:result")
- protected MockEndpoint resultEndpoint;
-
- @Produce("direct:start")
- protected ProducerTemplate template;
-
- @Override
- protected CamelContext createCamelContext() throws Exception {
- LOG.info("createCamelContext()");
- CREATED_CONTEXTS.incrementAndGet();
- return super.createCamelContext();
- }
-
- @Override
- protected void doPostTearDown() throws Exception {
- LOG.info("doPostTearDown()");
- POST_TEAR_DOWN.incrementAndGet();
- super.doPostTearDown();
- LATCH.await(5, TimeUnit.SECONDS);
- }
-
- @Test
- public void testSendMatchingMessage() throws Exception {
- String expectedBody = "<matched/>";
-
- resultEndpoint.expectedBodiesReceived(expectedBody);
-
- template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
- resultEndpoint.assertIsSatisfied();
-
- assertEquals(1, CREATED_CONTEXTS.get(), "Should only create 1 CamelContext per test class");
- assertEquals(0, POST_TEAR_DOWN.get(), "Should not call postTearDown yet");
- }
-
- @Test
- public void testSendAnotherMatchingMessage() throws Exception {
- String expectedBody = "<matched/>";
-
- resultEndpoint.expectedBodiesReceived(expectedBody);
-
- template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
- resultEndpoint.assertIsSatisfied();
-
- assertEquals(1, CREATED_CONTEXTS.get(), "Should only create 1 CamelContext per test class");
- assertEquals(0, POST_TEAR_DOWN.get(), "Should not call postTearDown yet");
- }
-
- @Test
- public void testSendNotMatchingMessage() throws Exception {
- resultEndpoint.expectedMessageCount(0);
-
- template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
-
- resultEndpoint.assertIsSatisfied();
-
- assertEquals(1, CREATED_CONTEXTS.get(), "Should only create 1 CamelContext per test class");
- assertEquals(0, POST_TEAR_DOWN.get(), "Should not call postTearDown yet");
- }
-
- @AfterAll
- public static void shouldTearDown() {
- // we are called before doPostTearDown so lets wait for that to be
- // called
- Runnable r = () -> {
- try {
- StopWatch watch = new StopWatch();
- while (watch.taken() < 5000) {
- LOG.debug("Checking for tear down called correctly");
- if (POST_TEAR_DOWN.get() == 1) {
- LATCH.countDown();
- break;
- } else {
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- break;
- }
- }
- }
- } finally {
- LOG.info("Should only call postTearDown 1 time per test class, called: " + POST_TEAR_DOWN.get());
- assertEquals(1, POST_TEAR_DOWN.get(), "Should only call postTearDown 1 time per test class");
- }
- };
- Thread t = new Thread(r);
- t.setDaemon(false);
- t.setName("shouldTearDown checker");
- t.start();
- }
-
- @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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugJUnit5Test.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugJUnit5Test.java
deleted file mode 100644
index 33a5915..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugJUnit5Test.java
+++ /dev/null
@@ -1,89 +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.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;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DebugJUnit5Test extends CamelTestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(DebugJUnit5Test.class);
-
- // 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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- // 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugNoLazyTypeConverterTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugNoLazyTypeConverterTest.java
deleted file mode 100644
index 2f894b9..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugNoLazyTypeConverterTest.java
+++ /dev/null
@@ -1,89 +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.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;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DebugNoLazyTypeConverterTest extends CamelTestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(DebugNoLazyTypeConverterTest.class);
-
- // 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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- // 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugTest.java
deleted file mode 100644
index c0fff80..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/DebugTest.java
+++ /dev/null
@@ -1,89 +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.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;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DebugTest extends CamelTestSupport {
-
- private static final Logger LOG = LoggerFactory.getLogger(DebugTest.class);
-
- // 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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- // 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterCreateCamelContextPerClassTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterCreateCamelContextPerClassTest.java
deleted file mode 100644
index be38b86..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterCreateCamelContextPerClassTest.java
+++ /dev/null
@@ -1,59 +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.patterns;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
-
-/**
- * Tests filtering using Camel Test
- */
-// START SNIPPET: example
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public class FilterCreateCamelContextPerClassTest extends CamelTestSupport {
-
- @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");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterFluentTemplateTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterFluentTemplateTest.java
deleted file mode 100644
index e4cef04..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterFluentTemplateTest.java
+++ /dev/null
@@ -1,75 +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.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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterJUnit5Test.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterJUnit5Test.java
deleted file mode 100644
index e946d6b..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterJUnit5Test.java
+++ /dev/null
@@ -1,69 +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.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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterTest.java
deleted file mode 100644
index a2455ce..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/FilterTest.java
+++ /dev/null
@@ -1,75 +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.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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/GetMockEndpointTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/GetMockEndpointTest.java
deleted file mode 100644
index 4709eff..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/GetMockEndpointTest.java
+++ /dev/null
@@ -1,45 +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.patterns;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-public class GetMockEndpointTest extends CamelTestSupport {
-
- @Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").to("mock:result?failFast=false");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsAndSkipJUnit5Test.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsAndSkipJUnit5Test.java
deleted file mode 100644
index 2e6b160..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsAndSkipJUnit5Test.java
+++ /dev/null
@@ -1,68 +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.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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsFileTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsFileTest.java
deleted file mode 100644
index b8ce79b..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsFileTest.java
+++ /dev/null
@@ -1,71 +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.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;
-
-import static org.apache.camel.test.junit5.TestSupport.deleteDirectory;
-
-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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsJUnit5Test.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsJUnit5Test.java
deleted file mode 100644
index c131d8c..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsJUnit5Test.java
+++ /dev/null
@@ -1,74 +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.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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsTest.java
deleted file mode 100644
index 2bef92a..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/IsMockEndpointsTest.java
+++ /dev/null
@@ -1,65 +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.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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- 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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MockEndpointFailNoHeaderTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MockEndpointFailNoHeaderTest.java
deleted file mode 100644
index 8746df2..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MockEndpointFailNoHeaderTest.java
+++ /dev/null
@@ -1,63 +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.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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java
deleted file mode 100644
index 95d7263..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MyProduceBean.java
+++ /dev/null
@@ -1,32 +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.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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java
deleted file mode 100644
index 0188296..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/MySender.java
+++ /dev/null
@@ -1,25 +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.patterns;
-
-/**
- *
- */
-public interface MySender {
-
- void send(String body);
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
deleted file mode 100644
index af2a99e..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/ProduceBeanTest.java
+++ /dev/null
@@ -1,46 +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.patterns;
-
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-/**
- *
- */
-public class ProduceBeanTest extends CamelTestSupport {
-
- @Test
- public void testProduceBean() throws Exception {
- getMockEndpoint("mock:result").expectedMessageCount(1);
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RouteBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").bean(MyProduceBean.class, "doSomething");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/RouteBuilderConfigureExceptionTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/RouteBuilderConfigureExceptionTest.java
deleted file mode 100644
index d1ab53b..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/RouteBuilderConfigureExceptionTest.java
+++ /dev/null
@@ -1,54 +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.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() {
- try {
- super.setUp();
- fail("Should have thrown exception");
- } catch (Exception e) {
- // expected
- }
- }
-
- @Test
- public void testFoo() {
- }
-
- @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-junit5/src/test/java/org/apache/camel/test/junit5/patterns/RouteProcessorDumpRouteCoverageTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/RouteProcessorDumpRouteCoverageTest.java
deleted file mode 100644
index 4262300..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/RouteProcessorDumpRouteCoverageTest.java
+++ /dev/null
@@ -1,70 +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.patterns;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.TestReporter;
-
-import static org.apache.camel.test.junit5.TestSupport.assertFileExists;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-public class RouteProcessorDumpRouteCoverageTest extends CamelTestSupport {
-
- @Override
- public boolean isDumpRouteCoverage() {
- return true;
- }
-
- @Test
- public void testProcessorJunit5() {
- String out = template.requestBody("direct:start", "Hello World", String.class);
- assertEquals("Bye World", out);
- }
-
- @Test
- public void testProcessorJunit5WithTestParameterInjection(TestInfo info, TestReporter testReporter) {
- assertNotNull(info);
- assertNotNull(testReporter);
- String out = template.requestBody("direct:start", "Hello World", String.class);
- assertEquals("Bye World", out);
- }
-
- @AfterAll
- public static void checkDumpFilesCreatedAfterTests() {
- // should create that file when test is done
- assertFileExists("target/camel-route-coverage/RouteProcessorDumpRouteCoverageTest-testProcessorJunit5.xml");
- assertFileExists(
- "target/camel-route-coverage/RouteProcessorDumpRouteCoverageTest-testProcessorJunit5WithTestParameterInjection.xml");
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").process(exchange -> exchange.getMessage().setBody("Bye World"));
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockEndpointsTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockEndpointsTest.java
deleted file mode 100644
index 40f2f3b..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockEndpointsTest.java
+++ /dev/null
@@ -1,50 +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.patterns;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-public class SimpleMockEndpointsTest extends CamelTestSupport {
-
- @Override
- public String isMockEndpointsAndSkip() {
- return "seda:queue";
- }
-
- @Test
- public void testMockAndSkip() throws Exception {
- getMockEndpoint("mock:seda:queue").expectedBodiesReceived("Bye Camel");
-
- template.sendBody("seda:start", "Camel");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("seda:start").transform(simple("Bye ${body}")).to("seda:queue");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
deleted file mode 100644
index be5ed41..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleMockTest.java
+++ /dev/null
@@ -1,45 +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.patterns;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-public class SimpleMockTest extends CamelTestSupport {
-
- @Test
- public void testMock() throws Exception {
- getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("direct:start").to("mock:result");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleNotifyBuilderTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleNotifyBuilderTest.java
deleted file mode 100644
index 3dbef5a..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleNotifyBuilderTest.java
+++ /dev/null
@@ -1,53 +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.patterns;
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.NotifyBuilder;
-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.assertTrue;
-
-public class SimpleNotifyBuilderTest extends CamelTestSupport {
-
- @Test
- public void testNotifyBuilder() {
- 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() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("seda:start").transform(simple("Bye ${body}")).to("seda:queue");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleWeaveAddMockLastTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleWeaveAddMockLastTest.java
deleted file mode 100644
index 4293758..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/SimpleWeaveAddMockLastTest.java
+++ /dev/null
@@ -1,59 +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.patterns;
-
-import org.apache.camel.RoutesBuilder;
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.test.junit5.CamelTestSupport;
-import org.junit.jupiter.api.Test;
-
-public class SimpleWeaveAddMockLastTest extends CamelTestSupport {
-
- public boolean isUseAdviceWith() {
- return true;
- }
-
- @Test
- public void testWeaveAddMockLast() throws Exception {
- AdviceWith.adviceWith(context.getRouteDefinitions().get(0), context, new AdviceWithRouteBuilder() {
- @Override
- public void configure() {
- weaveAddLast().to("mock:result");
- }
- });
- context.start();
-
- getMockEndpoint("mock:result").expectedBodiesReceived("Bye Camel");
-
- template.sendBody("seda:start", "Camel");
-
- assertMockEndpointsSatisfied();
- }
-
- @Override
- protected RoutesBuilder createRouteBuilder() {
- return new RouteBuilder() {
- @Override
- public void configure() {
- from("seda:start").transform(simple("Bye ${body}")).to("seda:queue");
- }
- };
- }
-
-}
diff --git a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/UseOverridePropertiesWithPropertiesComponentTest.java b/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
deleted file mode 100644
index 761ae43..0000000
--- a/components/camel-test-junit5/src/test/java/org/apache/camel/test/junit5/patterns/UseOverridePropertiesWithPropertiesComponentTest.java
+++ /dev/null
@@ -1,76 +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.patterns;
-
-import java.util.Properties;
-
-import org.apache.camel.builder.AdviceWith;
-import org.apache.camel.builder.AdviceWithRouteBuilder;
-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;
-
-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");
- }
- };
- AdviceWith.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");
- }
- };
- }
-}
diff --git a/components/camel-test-junit5/src/test/resources/log4j2.properties b/components/camel-test-junit5/src/test/resources/log4j2.properties
deleted file mode 100644
index 53994e6..0000000
--- a/components/camel-test-junit5/src/test/resources/log4j2.properties
+++ /dev/null
@@ -1,30 +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.
-## ---------------------------------------------------------------------------
-
-appender.file.type = File
-appender.file.name = file
-appender.file.fileName = target/camel-test.log
-appender.file.layout.type = PatternLayout
-appender.file.layout.pattern = %d %-5p %c{1} - %m %n
-appender.out.type = Console
-appender.out.name = out
-appender.out.layout.type = PatternLayout
-appender.out.layout.pattern = [%30.30t] %-30.30c{1} %-5p %m%n
-logger.springframework.name = org.springframework
-logger.springframework.level = WARN
-rootLogger.level = INFO
-rootLogger.appenderRef.file.ref = file
diff --git a/components/camel-test-spring-junit5/pom.xml b/components/camel-test-spring-junit5/pom.xml
deleted file mode 100644
index 963feab..0000000
--- a/components/camel-test-spring-junit5/pom.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-<?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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.camel</groupId>
- <artifactId>components</artifactId>
- <version>3.9.0-SNAPSHOT</version>
- </parent>
-
- <artifactId>camel-test-spring-junit5</artifactId>
- <packaging>jar</packaging>
-
- <name>Camel :: Test :: Spring:: JUnit5</name>
- <description>Camel unit testing with Spring and JUnit 5</description>
-
- <properties>
- <firstVersion>3.0.0</firstVersion>
- <label>testing,java,spring</label>
- <title>Test Spring JUnit5</title>
- <spring-version>${spring5-version}</spring-version>
- </properties>
-
- <dependencies>
-
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-junit5</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-spring-xml</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- </dependency>
-
- <!-- test dependencies -->
- <dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-management</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-slf4j-impl</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-</project>
diff --git a/components/camel-test-spring-junit5/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/components/camel-test-spring-junit5/src/generated/resources/META-INF/services/org/apache/camel/other.properties
deleted file mode 100644
index ea7d2ba..0000000
--- a/components/camel-test-spring-junit5/src/generated/resources/META-INF/services/org/apache/camel/other.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-# Generated by camel build tools - do NOT edit this file!
-name=test-spring-junit5
-groupId=org.apache.camel
-artifactId=camel-test-spring-junit5
-version=3.9.0-SNAPSHOT
-projectName=Camel :: Test :: Spring:: JUnit5
-projectDescription=Camel unit testing with Spring and JUnit 5
diff --git a/components/camel-test-spring-junit5/src/generated/resources/test-spring-junit5.json b/components/camel-test-spring-junit5/src/generated/resources/test-spring-junit5.json
deleted file mode 100644
index d86be98..0000000
--- a/components/camel-test-spring-junit5/src/generated/resources/test-spring-junit5.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "other": {
- "kind": "other",
- "name": "test-spring-junit5",
- "title": "Test Spring JUnit5",
- "description": "Camel unit testing with Spring and JUnit 5",
- "deprecated": false,
- "firstVersion": "3.0.0",
- "label": "testing,java,spring",
- "supportLevel": "Stable",
- "groupId": "org.apache.camel",
- "artifactId": "camel-test-spring-junit5",
- "version": "3.9.0-SNAPSHOT"
- }
-}
diff --git a/components/camel-test-spring-junit5/src/main/docs/test-spring-junit5.adoc b/components/camel-test-spring-junit5/src/main/docs/test-spring-junit5.adoc
deleted file mode 100644
index 122635f..0000000
--- a/components/camel-test-spring-junit5/src/main/docs/test-spring-junit5.adoc
+++ /dev/null
@@ -1,148 +0,0 @@
-[[test-spring-junit5-other]]
-= Test Spring JUnit5 Component
-:docTitle: Test Spring JUnit5
-:artifactId: camel-test-spring-junit5
-:description: Camel unit testing with Spring and JUnit 5
-:since: 3.0
-:supportLevel: Stable
-include::{cq-version}@camel-quarkus:ROOT:partial$reference/others/test-spring-junit5.adoc[opts=optional]
-
-*Since Camel {since}*
-
-The `camel-test-spring-junit5` module makes it possible to test Camel Spring based applications with JUnit 5.
-
-Testing is a crucial part of any development or integration work. The Spring Framework offers a number of features that makes it easy to test while using Spring for Inversion of Control.
-
-There are multiple approaches to test Camel Spring 5.x based routes with JUnit 5.
-
-== Extending the CamelSpringTestSupport class
-An approach is to extend `org.apache.camel.test.spring.junit5.CamelSpringTestSupport`, for instance:
-----
-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/patterns/SimpleMockTest.xml");
- }
-
- @Test
- public void testMock() throws Exception {
- String expectedBody = "Hello World";
- resultEndpoint.expectedBodiesReceived(expectedBody);
- template.sendBodyAndHeader(expectedBody, "foo", "bar");
- resultEndpoint.assertIsSatisfied();
- }
-}
-----
-
-This approach provides feature parity with `org.apache.camel.test.junit5.CamelTestSupport` from xref:test-junit5.adoc[camel-test-junit5] but does not support Spring annotations on the test class such as `@Autowired`, `@DirtiesContext`, and `@ContextConfiguration`.
-
-Instead of instantiating the `CamelContext` and routes programmatically, this class relies on a Spring context to wire the needed components together. If your test extends this class, you must provide the Spring context by implementing the following method.
-[source,java]
-----
-protected abstract AbstractApplicationContext createApplicationContext();
-----
-
-== Using the @CamelSpringTest annotation
-Another approach involves the usage of the `org.apache.camel.test.spring.junit5.CamelSpringTest` annotation, for instance:
-----
-@CamelSpringTest
-@ContextConfiguration
-@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
-public class CamelSpringPlainTest {
-
- @Autowired
- protected CamelContext camelContext;
-
- @EndpointInject("mock:a")
- protected MockEndpoint mockA;
-
- @EndpointInject("mock:b")
- protected MockEndpoint mockB;
-
- @Produce("direct:start")
- protected ProducerTemplate start;
-
- @Test
- public void testPositive() throws Exception {
- assertEquals(ServiceStatus.Started, camelContext.getStatus());
-
- mockA.expectedBodiesReceived("David");
- mockB.expectedBodiesReceived("Hello David");
-
- start.sendBody("David");
-
- MockEndpoint.assertIsSatisfied(camelContext);
- }
-
- @Test
- public void testAnotherCase() throws Exception {
- ...
- }
-}
-----
-
-The above test will load the route from `org/apache/camel/test/spring/CamelSpringPlainTest-context.xml` which looks like below:
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<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.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/spring/test.properties" />
- </bean>
-</beans>
-----
-
-This approach supports both Camel and Spring annotations, such as `@Autowired`, `@DirtiesContext`, and `@ContextConfiguration`.
-However, it does NOT have feature parity with `org.apache.camel.test.junit5.CamelTestSupport`.
-
-== Migrating Camel Spring Tests from JUnit 4 to JUnit 5
-Find below some hints to help in migrating Camel Spring tests from JUnit 4 to JUnit 5.
-
-=== Referencing the Camel Test Spring JUnit 5 library in your project
-Projects using `camel-test-spring` would need to use `camel-test-spring-junit5`. For instance, maven users would update their pom.xml file as below:
-----
-<dependency>
- <groupId>org.apache.camel</groupId>
- <artifactId>camel-test-spring-junit5</artifactId>
- <scope>test</scope>
-</dependency>
-----
-
-Tips: It's possible to run JUnit 4 & JUnit 5 based Camel Spring tests side by side including the following dependencies `camel-test-spring`,
-`camel-test-spring-junit5` and `junit-vintage-engine`. This configuration allows to migrate a Camel Spring test at once.
-
-=== Typical migration steps linked to JUnit 5 support in Camel Test Spring
-* Migration steps linked to xref:test-junit5.adoc[JUnit 5 support in Camel Test itself] should have been applied first
-* Imports of `org.apache.camel.test.spring.\*` should be replaced with `org.apache.camel.test.spring.junit5.*`
-* Usage of `@RunWith(CamelSpringRunner.class)` should be replaced with `@CamelSpringTest`
-* Usage of `@BootstrapWith(CamelTestContextBootstrapper.class)` should be replaced with `@CamelSpringTest`
-* Usage of `@RunWith(CamelSpringBootRunner.class)` should be replaced with `@CamelSpringBootTest`
diff --git a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
deleted file mode 100644
index f11f331..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelAnnotationsHandler.java
+++ /dev/null
@@ -1,409 +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.spring.junit5;
-
-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.StringJoiner;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Function;
-
-import org.apache.camel.ExtendedCamelContext;
-import org.apache.camel.api.management.ManagedCamelContext;
-import org.apache.camel.api.management.mbean.ManagedCamelContextMBean;
-import org.apache.camel.component.mock.InterceptSendToMockEndpointStrategy;
-import org.apache.camel.impl.DefaultCamelContext;
-import org.apache.camel.impl.debugger.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.junit5.CamelTestSupport;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.core.annotation.AnnotationUtils;
-
-public final class CamelAnnotationsHandler {
-
- private static final Logger LOGGER = LoggerFactory.getLogger(CamelAnnotationsHandler.class);
-
- private CamelAnnotationsHandler() {
- }
-
- /**
- * Cleanup/restore global state to defaults / pre-test values after the test setup is complete.
- *
- * @param testClass the test class being executed
- */
- public static void cleanup(Class<?> testClass) {
- DefaultCamelContext.clearOptions();
- }
-
- /**
- * Handles @ExcludeRoutes to make it easier to exclude other routes when testing with Spring.
- *
- * @param context the initialized Spring context
- * @param testClass the test class being executed
- */
- public static void handleExcludeRoutes(ConfigurableApplicationContext context, Class<?> testClass) {
- String key = SpringCamelContext.EXCLUDE_ROUTES;
- String exists = System.getProperty(key);
- if (exists != null) {
- LOGGER.warn("The JVM property " + key + " is set, but not supported anymore.");
- }
-
- if (testClass.isAnnotationPresent(ExcludeRoutes.class)) {
- Class<?>[] routes = testClass.getAnnotation(ExcludeRoutes.class).value();
- // need to setup this as a JVM system property
- StringJoiner routesBuilder = new StringJoiner(",");
- for (Class<?> clazz : routes) {
- routesBuilder.add(clazz.getName());
- }
- String value = routesBuilder.toString();
- LOGGER.info("@ExcludeRoutes annotation found. Setting up JVM property {}={}", key, value);
- DefaultCamelContext.setExcludeRoutes(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) {
- 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.");
- DefaultCamelContext.setDisableJmx(true);
- } else {
- LOGGER.info("Enabling Camel JMX as DisableJmx annotation was found and disableJmx is set to false.");
- DefaultCamelContext.setDisableJmx(false);
- }
- } else if (!testClass.isAnnotationPresent(EnableRouteCoverage.class)) {
- // route coverage need JMX so do not disable it by default
- LOGGER.info(
- "Disabling Camel JMX globally for tests by default. Use the DisableJMX annotation to override the default setting.");
- DefaultCamelContext.setDisableJmx(true);
- } else {
- LOGGER.info("Enabling Camel JMX as EnableRouteCoverage is used.");
- DefaultCamelContext.setDisableJmx(false);
- }
- }
-
- /**
- * Handles disabling of JMX on Camel contexts based on {@link EnableRouteCoverage}.
- *
- * @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 = CamelSpringTestHelper.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 = CamelSpringTestHelper.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 postProcessBeforeInitialization(Object bean, String beanName) {
- if (bean instanceof PropertiesComponent) {
- PropertiesComponent pc = (PropertiesComponent) bean;
- LOGGER.info("Using {} properties to override any existing properties on the PropertiesComponent",
- extra.size());
- 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
- */
- 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-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringBootExecutionListener.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringBootExecutionListener.java
deleted file mode 100644
index 1b836dd..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringBootExecutionListener.java
+++ /dev/null
@@ -1,125 +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.spring.junit5;
-
-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);
- private static final String PROPERTY_SKIP_STARTING_CAMEL_CONTEXT = "skipStartingCamelContext";
-
- /**
- * Returns the precedence that is used by Spring to choose the appropriate execution order of test listeners.
- *
- * See {@link SpringTestExecutionListenerSorter#getPrecedence(Class)} for more.
- */
- @Override
- public int getOrder() {
- return SpringTestExecutionListenerSorter.getPrecedence(getClass());
- }
-
- @Override
- public void beforeTestClass(TestContext testContext) throws Exception {
- // prevent other extensions to start the Camel context
- preventContextStart();
- }
-
- @Override
- public void prepareTestInstance(TestContext testContext) throws Exception {
- LOG.info("CamelSpringBootExecutionListener preparing: {}", testContext.getTestClass());
-
- Class<?> testClass = testContext.getTestClass();
-
- // need to prepare this before we load spring application context
- CamelAnnotationsHandler.handleDisableJmx(null, testClass);
- CamelAnnotationsHandler.handleExcludeRoutes(null, testClass);
-
- // prevent the Camel context to be started to be able to extend it.
- preventContextStart();
- ConfigurableApplicationContext context = (ConfigurableApplicationContext) testContext.getApplicationContext();
-
- CamelAnnotationsHandler.handleUseOverridePropertiesWithPropertiesComponent(context, testClass);
-
- // 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);
-
- System.clearProperty(PROPERTY_SKIP_STARTING_CAMEL_CONTEXT);
- SpringCamelContext.setNoStart(false);
- }
-
- /**
- * Sets the {@link SpringCamelContext#setNoStart(boolean)} and the system property
- * <code>skipStartingCamelContext</code>to <code>true</code> to let us customizing the Camel context with
- * {@link CamelAnnotationsHandler} before it has been started. It's needed as early as possible to prevent other
- * extensions to start it <b>and</b> before every test run.
- */
- private void preventContextStart() {
- SpringCamelContext.setNoStart(true);
- System.setProperty(PROPERTY_SKIP_STARTING_CAMEL_CONTEXT, "true");
- }
-
- @Override
- public void beforeTestMethod(TestContext testContext) throws Exception {
- LOG.info("CamelSpringBootExecutionListener 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(PROPERTY_SKIP_STARTING_CAMEL_CONTEXT);
-
- // route coverage need to know the test method
- CamelAnnotationsHandler.handleRouteCoverage(context, testClass, s -> testName);
-
- LOG.info("Initialized CamelSpringBootExecutionListener now ready to start CamelContext");
- CamelAnnotationsHandler.handleCamelContextStartup(context, testClass);
- }
-
- @Override
- public void afterTestMethod(TestContext testContext) throws Exception {
- LOG.info("CamelSpringBootExecutionListener 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-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringBootTest.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringBootTest.java
deleted file mode 100644
index bbe8e68..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringBootTest.java
+++ /dev/null
@@ -1,42 +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.spring.junit5;
-
-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.TestExecutionListeners;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
-
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ ElementType.TYPE })
-@ExtendWith(SpringExtension.class)
-@TestExecutionListeners(
- value = {
- CamelSpringTestContextLoaderTestExecutionListener.class,
- CamelSpringBootExecutionListener.class,
- StopWatchTestExecutionListener.class
- },
- mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
-public @interface CamelSpringBootTest {
-
-}
diff --git a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTest.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTest.java
deleted file mode 100644
index 7ddfd4a..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTest.java
+++ /dev/null
@@ -1,43 +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.spring.junit5;
-
-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,
- StopWatchTestExecutionListener.class
- },
- mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
-public @interface CamelSpringTest {
-
-}
diff --git a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestContextLoader.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestContextLoader.java
deleted file mode 100644
index 3b5275a..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestContextLoader.java
+++ /dev/null
@@ -1,241 +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.spring.junit5;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-
-import org.apache.camel.spring.SpringCamelContext;
-import org.apache.camel.test.ExcludingPackageScanClassResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.annotation.AnnotatedBeanDefinitionReader;
-import org.springframework.context.annotation.AnnotationConfigUtils;
-import org.springframework.context.support.GenericApplicationContext;
-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;
-
-/**
- * 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 {
- CamelAnnotationsHandler.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 {
- CamelAnnotationsHandler.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
- CamelAnnotationsHandler.handleDisableJmx(context, testClass);
- CamelAnnotationsHandler.handleExcludeRoutes(context, testClass);
- CamelAnnotationsHandler.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
- CamelAnnotationsHandler.handleRouteCoverage(context, testClass, s -> getTestMethod().getName());
- CamelAnnotationsHandler.handleProvidesBreakpoint(context, testClass);
- CamelAnnotationsHandler.handleShutdownTimeout(context, testClass);
- CamelAnnotationsHandler.handleMockEndpoints(context, testClass);
- CamelAnnotationsHandler.handleMockEndpointsAndSkip(context, testClass);
-
- // CamelContext(s) startup
- CamelAnnotationsHandler.handleCamelContextStartup(context, testClass);
-
- return context;
- }
-
- protected void loadBeanDefinitions(GenericApplicationContext context, MergedContextConfiguration mergedConfig) {
- new XmlBeanDefinitionReader(context).loadBeanDefinitions(mergedConfig.getLocations());
- new AnnotatedBeanDefinitionReader(context).register(mergedConfig.getClasses());
- }
-
- 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;
- }
-
- /**
- * 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-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestContextLoaderTestExecutionListener.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestContextLoaderTestExecutionListener.java
deleted file mode 100644
index b3eef1d..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestContextLoaderTestExecutionListener.java
+++ /dev/null
@@ -1,46 +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.spring.junit5;
-
-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 {
-
- /**
- * Returns the precedence that is used by Spring to choose the appropriate execution order of test listeners.
- *
- * See {@link SpringTestExecutionListenerSorter#getPrecedence(Class)} for more.
- */
- @Override
- public int getOrder() {
- return SpringTestExecutionListenerSorter.getPrecedence(getClass());
- }
-
- @Override
- public void prepareTestInstance(TestContext testContext) throws Exception {
- CamelSpringTestHelper.setTestClass(testContext.getTestClass());
- CamelSpringTestHelper.setTestContext(testContext);
- }
-}
diff --git a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestHelper.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestHelper.java
deleted file mode 100644
index 2f886c1..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestHelper.java
+++ /dev/null
@@ -1,116 +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.spring.junit5;
-
-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<String> originalExcludeRoutesValue = 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 String getOriginalExcludeRoutes() {
- return originalExcludeRoutesValue.get();
- }
-
- public static void setOriginalExcludeRoutesValue(String originalValue) {
- originalExcludeRoutesValue.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-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestSupport.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestSupport.java
deleted file mode 100644
index f1e10e64..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelSpringTestSupport.java
+++ /dev/null
@@ -1,221 +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.spring.junit5;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-
-import org.apache.camel.CamelContext;
-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.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.support.AbstractApplicationContext;
-import org.springframework.context.support.GenericApplicationContext;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.fail;
-
-/**
- * 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>@CamelSpringBootTest</code>.
- */
-public abstract class CamelSpringTestSupport extends CamelTestSupport {
-
- protected static ThreadLocal<AbstractApplicationContext> threadAppContext = new ThreadLocal<>();
- protected static Object lock = new Object();
-
- private static final Logger LOG = LoggerFactory.getLogger(CamelSpringTestSupport.class);
-
- 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();
- 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);
- assertNotNull(value, "No spring bean found for name <" + name + ">");
- if (type.isInstance(value)) {
- return type.cast(value);
- } else {
- 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-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelTestContextBootstrapper.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelTestContextBootstrapper.java
deleted file mode 100644
index 6120d02..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/CamelTestContextBootstrapper.java
+++ /dev/null
@@ -1,31 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/DisableJmx.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/DisableJmx.java
deleted file mode 100644
index 0ea3d9b..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/DisableJmx.java
+++ /dev/null
@@ -1,43 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/EnableRouteCoverage.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/EnableRouteCoverage.java
deleted file mode 100644
index 8222427..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/EnableRouteCoverage.java
+++ /dev/null
@@ -1,41 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/ExcludeRoutes.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/ExcludeRoutes.java
deleted file mode 100644
index 69916e4..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/ExcludeRoutes.java
+++ /dev/null
@@ -1,44 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/MockEndpoints.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/MockEndpoints.java
deleted file mode 100644
index 0d95e32..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/MockEndpoints.java
+++ /dev/null
@@ -1,43 +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.spring.junit5;
-
-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.component.mock.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-junit5/src/main/java/org/apache/camel/test/spring/junit5/MockEndpointsAndSkip.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/MockEndpointsAndSkip.java
deleted file mode 100644
index 8abb2b1..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/MockEndpointsAndSkip.java
+++ /dev/null
@@ -1,43 +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.spring.junit5;
-
-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.component.mock.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-junit5/src/main/java/org/apache/camel/test/spring/junit5/ProvidesBreakpoint.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/ProvidesBreakpoint.java
deleted file mode 100644
index 0f11c8d..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/ProvidesBreakpoint.java
+++ /dev/null
@@ -1,36 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/RouteCoverageDumper.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/RouteCoverageDumper.java
deleted file mode 100644
index e664a3a..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/RouteCoverageDumper.java
+++ /dev/null
@@ -1,85 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/RouteCoverageEventNotifier.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/RouteCoverageEventNotifier.java
deleted file mode 100644
index 3642323..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/RouteCoverageEventNotifier.java
+++ /dev/null
@@ -1,50 +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.spring.junit5;
-
-import java.util.function.Function;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.spi.CamelEvent;
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/ShutdownTimeout.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/ShutdownTimeout.java
deleted file mode 100644
index 4db7a12..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/ShutdownTimeout.java
+++ /dev/null
@@ -1,47 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/SpringTestExecutionListenerSorter.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/SpringTestExecutionListenerSorter.java
deleted file mode 100644
index fae17fd..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/SpringTestExecutionListenerSorter.java
+++ /dev/null
@@ -1,45 +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.spring.junit5;
-
-import org.springframework.core.Ordered;
-
-/**
- * This class centralizes the order of execution of spring test execution listeners:
- * <ol>
- * <li>{@link CamelSpringTestContextLoaderTestExecutionListener}</li>
- * <li>{@link StopWatchTestExecutionListener}</li>
- * <li>Spring default listeners</li>
- * </ol>
- */
-public final class SpringTestExecutionListenerSorter {
-
- private SpringTestExecutionListenerSorter() {
- }
-
- public static int getPrecedence(Class<?> clazz) {
- if (clazz == StopWatchTestExecutionListener.class) {
- return Ordered.HIGHEST_PRECEDENCE + 4000;
- } else if (clazz == CamelSpringBootExecutionListener.class) {
- return Ordered.HIGHEST_PRECEDENCE + 3000;
- } else if (clazz == CamelSpringTestContextLoaderTestExecutionListener.class) {
- return Ordered.HIGHEST_PRECEDENCE + 1000;
- }
- throw new IllegalArgumentException("Impossible to get the precedence of the class " + clazz.getName() + ".");
- }
-
-}
diff --git a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/StopWatchTestExecutionListener.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/StopWatchTestExecutionListener.java
deleted file mode 100644
index f83a556..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/StopWatchTestExecutionListener.java
+++ /dev/null
@@ -1,73 +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.spring.junit5;
-
-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.junit5.CamelTestSupport}.
- */
-public class StopWatchTestExecutionListener extends AbstractTestExecutionListener {
-
- protected static ThreadLocal<StopWatch> threadStopWatch = new ThreadLocal<>();
-
- /**
- * Returns the precedence that is used by Spring to choose the appropriate execution order of test listeners.
- *
- * See {@link SpringTestExecutionListenerSorter#getPrecedence(Class)} for more.
- */
- @Override
- public int getOrder() {
- return SpringTestExecutionListenerSorter.getPrecedence(getClass());
- }
-
- /**
- * 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: {} ({} millis)", TimeUtils.printDuration(time), time);
- log.info("********************************************************************************");
-
- threadStopWatch.remove();
- }
- }
-
-}
diff --git a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/UseAdviceWith.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/UseAdviceWith.java
deleted file mode 100644
index 160d6c4..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/UseAdviceWith.java
+++ /dev/null
@@ -1,46 +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.spring.junit5;
-
-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-junit5/src/main/java/org/apache/camel/test/spring/junit5/UseOverridePropertiesWithPropertiesComponent.java b/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/UseOverridePropertiesWithPropertiesComponent.java
deleted file mode 100644
index bd2cf30..0000000
--- a/components/camel-test-spring-junit5/src/main/java/org/apache/camel/test/spring/junit5/UseOverridePropertiesWithPropertiesComponent.java
+++ /dev/null
@@ -1,35 +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.spring.junit5;
-
-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;
... 15426 lines suppressed ...