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 2020/03/24 14:05:06 UTC
[camel-karaf] 03/07: Camel-Karaf: Added
tests/camel-blueprint-cxf-test
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-karaf.git
commit f661c8510a0529117f5ee99dc04c395adc963eb8
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Tue Mar 24 13:09:02 2020 +0100
Camel-Karaf: Added tests/camel-blueprint-cxf-test
---
tests/camel-blueprint-cxf-test/pom.xml | 219 +++++++++++++++++++++
.../src/main/resources/META-INF/LICENSE.txt | 203 +++++++++++++++++++
.../src/main/resources/META-INF/NOTICE.txt | 11 ++
.../apache/camel/component/cxf/CXFTestSupport.java | 83 ++++++++
.../apache/camel/component/cxf/HelloService.java | 34 ++++
.../camel/component/cxf/HelloServiceImpl.java | 56 ++++++
.../component/cxf/jaxrs/testbean/Customer.java | 75 +++++++
.../cxf/jaxrs/testbean/CustomerService.java | 148 ++++++++++++++
.../jaxrs/testbean/CustomerServiceResource.java | 37 ++++
.../camel/component/cxf/jaxrs/testbean/Order.java | 67 +++++++
.../component/cxf/jaxrs/testbean/Product.java | 41 ++++
.../test/cxf/blueprint/CxfConsumerSoap12Test.java | 85 ++++++++
.../test/cxf/blueprint/CxfConsumerWSRMTest.java | 77 ++++++++
.../test/cxf/blueprint/CxfEndpointBeansTest.java | 132 +++++++++++++
.../blueprint/CxfPayloadProviderRouterTest.java | 129 ++++++++++++
.../test/cxf/blueprint/CxfRsEndpointBeansTest.java | 98 +++++++++
.../cxf/blueprint/CxfTransportBlueprintTest.java | 48 +++++
.../camel/test/cxf/blueprint/MyProcessor.java | 43 ++++
.../src/test/resources/log4j2.properties | 30 +++
.../test/cxf/blueprint/CxfConsumerSoap12Beans.xml | 59 ++++++
.../test/cxf/blueprint/CxfConsumerWSRMBeans.xml | 99 ++++++++++
.../camel/test/cxf/blueprint/CxfEndpointBeans.xml | 113 +++++++++++
.../blueprint/CxfPayloadProviderRouterBeans.xml | 76 +++++++
.../test/cxf/blueprint/CxfRsEndpointBeans.xml | 79 ++++++++
.../camel/test/cxf/blueprint/CxfTransportBeans.xml | 53 +++++
tests/pom.xml | 93 +++++++++
26 files changed, 2188 insertions(+)
diff --git a/tests/camel-blueprint-cxf-test/pom.xml b/tests/camel-blueprint-cxf-test/pom.xml
new file mode 100644
index 0000000..19461fa
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/pom.xml
@@ -0,0 +1,219 @@
+<?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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>tests</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>camel-blueprint-cxf-test</artifactId>
+ <name>Camel Karaf :: Integration Tests :: Blueprint CXF Tests</name>
+ <description>Tests the camel-cxf blueprint features</description>
+
+ <properties>
+ <skipTests>true</skipTests>
+ </properties>
+
+ <dependencies>
+ <!-- assuming camel is pulling aries 1.0.0, pull asm 4.0 first -->
+ <dependency>
+ <groupId>org.ow2.asm</groupId>
+ <artifactId>asm-all</artifactId>
+ <version>5.2</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- TODO OSGi hell with starting up Karaf 4.x for this test -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-http</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf.jaas</groupId>
+ <artifactId>org.apache.karaf.jaas.jasypt</artifactId>
+ <version>${karaf4-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf.jaas</groupId>
+ <artifactId>org.apache.karaf.jaas.boot</artifactId>
+ <version>${karaf4-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.jasypt</groupId>
+ <artifactId>jasypt</artifactId>
+ <version>${jasypt-version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-test</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>camel-test-blueprint</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- exclude bluerprint from camel-cxf as we have them already from camel-blueprint
+ and we need to avoid duplicate JARs in the classpath as then blueprint start up twice -->
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-cxf</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>org.apache.aries.blueprint.core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.aries.blueprint</groupId>
+ <artifactId>org.apache.aries.blueprint.api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.aries.quiesce</groupId>
+ <artifactId>org.apache.aries.quiesce.api</artifactId>
+ </exclusion>
+ <!-- exclude additional unneeded components -->
+ <exclusion>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-spring</artifactId>
+ </exclusion>
+ </exclusions>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-bindings-soap</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-transports-http-jetty</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-features-clustering</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-testutils</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- for ws-* tests -->
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-ws-addr</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-ws-policy</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-ws-rm</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- for jaxrs providers test -->
+ <dependency>
+ <groupId>org.apache.cxf</groupId>
+ <artifactId>cxf-rt-rs-extension-providers</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- osgi -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>osgi.cmpn</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- logging -->
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-api</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-slf4j-impl</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>java9+</id>
+ <activation>
+ <jdk>[9,)</jdk>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <!--ignore tests until CXF-7520 is resolved and released-->
+ <exclude>**/**</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project>
diff --git a/tests/camel-blueprint-cxf-test/src/main/resources/META-INF/LICENSE.txt b/tests/camel-blueprint-cxf-test/src/main/resources/META-INF/LICENSE.txt
new file mode 100644
index 0000000..6b0b127
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/main/resources/META-INF/LICENSE.txt
@@ -0,0 +1,203 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed 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.
+
diff --git a/tests/camel-blueprint-cxf-test/src/main/resources/META-INF/NOTICE.txt b/tests/camel-blueprint-cxf-test/src/main/resources/META-INF/NOTICE.txt
new file mode 100644
index 0000000..2e215bf
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/main/resources/META-INF/NOTICE.txt
@@ -0,0 +1,11 @@
+ =========================================================================
+ == NOTICE file corresponding to the section 4 d of ==
+ == the Apache License, Version 2.0, ==
+ == in this case for the Apache Camel distribution. ==
+ =========================================================================
+
+ This product includes software developed by
+ The Apache Software Foundation (http://www.apache.org/).
+
+ Please read the different LICENSE files present in the licenses directory of
+ this distribution.
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/CXFTestSupport.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/CXFTestSupport.java
new file mode 100644
index 0000000..89148f2
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/CXFTestSupport.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf;
+
+import org.apache.camel.test.AvailablePortFinder;
+
+/**
+ * For test cases that use unique contexts, they can share the
+ * ports which will make things a bit faster as ports aren't opened
+ * and closed all the time.
+ */
+/*
+ * REVIST this class is a copy of the same named class in org.apache.camel.component.cxf's test folder.
+ * It should go into some reusable test-util jar so that it can be used from other test packages
+ */
+public final class CXFTestSupport {
+
+ static final int PORT1 = AvailablePortFinder.getNextAvailable();
+ static final int PORT2 = AvailablePortFinder.getNextAvailable();
+ static final int PORT3 = AvailablePortFinder.getNextAvailable();
+ static final int PORT4 = AvailablePortFinder.getNextAvailable();
+ static final int PORT5 = AvailablePortFinder.getNextAvailable();
+ static final int PORT6 = AvailablePortFinder.getNextAvailable();
+
+ static {
+ //set them as system properties so Spring can use the property placeholder
+ //things to set them into the URL's in the spring contexts
+ System.setProperty("CXFTestSupport.port1", Integer.toString(PORT1));
+ System.setProperty("CXFTestSupport.port2", Integer.toString(PORT2));
+ System.setProperty("CXFTestSupport.port3", Integer.toString(PORT3));
+ System.setProperty("CXFTestSupport.port4", Integer.toString(PORT4));
+ System.setProperty("CXFTestSupport.port5", Integer.toString(PORT5));
+ System.setProperty("CXFTestSupport.port6", Integer.toString(PORT6));
+ System.setProperty("org.apache.cxf.transports.http_jetty.DontClosePort", "true");
+ }
+
+ private CXFTestSupport() {
+ }
+
+ public static int getPort(String name) {
+ int port = AvailablePortFinder.getNextAvailable();
+ System.setProperty(name, Integer.toString(port));
+ return port;
+ }
+
+ public static int getPort1() {
+ return PORT1;
+ }
+
+ public static int getPort2() {
+ return PORT2;
+ }
+
+ public static int getPort3() {
+ return PORT3;
+ }
+
+ public static int getPort4() {
+ return PORT4;
+ }
+
+ public static int getPort5() {
+ return PORT5;
+ }
+
+ public static int getPort6() {
+ return PORT6;
+ }
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/HelloService.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/HelloService.java
new file mode 100644
index 0000000..cc4f1ed
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/HelloService.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf;
+
+import java.util.List;
+
+public interface HelloService {
+ String sayHello();
+
+ void ping();
+
+ int getInvocationCount();
+
+ String echo(String text) throws Exception;
+
+ Boolean echoBoolean(Boolean bool);
+
+ String complexParameters(List<String> par1, List<String> par2);
+
+}
\ No newline at end of file
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/HelloServiceImpl.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/HelloServiceImpl.java
new file mode 100644
index 0000000..a016eee
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/HelloServiceImpl.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf;
+
+import java.util.List;
+
+public class HelloServiceImpl implements HelloService {
+ int count;
+
+ @Override
+ public String sayHello() {
+ return "Hello";
+ }
+
+ @Override
+ public void ping() {
+ count++;
+
+ }
+
+ @Override
+ public int getInvocationCount() {
+ return count;
+ }
+
+ @Override
+ public String echo(String text) throws Exception {
+ return text;
+ }
+
+ @Override
+ public Boolean echoBoolean(Boolean bool) {
+ return bool;
+ }
+
+ @Override
+ public String complexParameters(List<String> par1, List<String> par2) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Customer.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Customer.java
new file mode 100644
index 0000000..e0b740c
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Customer.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.jaxrs.testbean;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.camel.util.ObjectHelper;
+
+@XmlRootElement(name = "Customer")
+public class Customer {
+ private long id;
+ private String name;
+
+ public Customer() {
+ }
+
+ public Customer(long id, String name) {
+ setId(id);
+ setName(name);
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (id ^ (id >>> 32));
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof Customer)) {
+ return false;
+ }
+
+ if (this == obj) {
+ return true;
+ }
+
+ Customer other = (Customer) obj;
+ return id == other.id && ObjectHelper.equal(name, other.name);
+ }
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java
new file mode 100644
index 0000000..5ddd9c9
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerService.java
@@ -0,0 +1,148 @@
+/*
+ * 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.component.cxf.jaxrs.testbean;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.Response;
+
+@Path("/customerservice/")
+public class CustomerService {
+ private final AtomicLong currentId = new AtomicLong(123L);
+ private final Map<Long, Customer> customers = new ConcurrentHashMap<>();
+ private final Map<Long, Order> orders = new ConcurrentHashMap<>();
+
+ public CustomerService() {
+ init();
+ }
+
+ @GET
+ @Path("/customers/{id}/")
+ public Customer getCustomer(@PathParam("id") String id) {
+ long idNumber = Long.parseLong(id);
+ Customer c = customers.get(idNumber);
+ return c;
+ }
+
+ @GET
+ @Path("/customers")
+ public Customer getCustomerByQueryParam(@QueryParam("id") String id) {
+ long idNumber = Long.parseLong(id);
+ Customer c = customers.get(idNumber);
+ return c;
+ }
+
+ @GET
+ @Path("/customers/")
+ @Produces("application/xml")
+ public List<Customer> getCustomers() {
+ List<Customer> list = new ArrayList<>(customers.values());
+ return list;
+ }
+
+
+ @PUT
+ @Path("/customers/")
+ public Response updateCustomer(Customer customer) {
+ Customer c = customers.get(customer.getId());
+ Response r;
+ if (c != null) {
+ customers.put(customer.getId(), customer);
+ r = Response.ok().build();
+ } else {
+ r = Response.status(406).entity("Cannot find the customer!").build();
+ }
+
+ return r;
+ }
+
+ @POST
+ @Path("/customers/")
+ public Response addCustomer(Customer customer) {
+ customer.setId(currentId.incrementAndGet());
+
+ customers.put(customer.getId(), customer);
+
+ return Response.ok(customer).build();
+ }
+
+ @POST
+ @Path("/customersUniqueResponseCode/")
+ public Response addCustomerUniqueResponseCode(Customer customer) {
+ customer.setId(currentId.incrementAndGet());
+
+ customers.put(customer.getId(), customer);
+
+ return Response.status(201).entity(customer).build();
+ }
+
+ @DELETE
+ @Path("/customers/{id}/")
+ public Response deleteCustomer(@PathParam("id") String id) {
+ long idNumber = Long.parseLong(id);
+ Customer c = customers.get(idNumber);
+
+ Response r;
+ if (c != null) {
+ r = Response.ok().build();
+ customers.remove(idNumber);
+ } else {
+ r = Response.notModified().build();
+ }
+ if (idNumber == currentId.get()) {
+ currentId.decrementAndGet();
+ }
+ return r;
+ }
+
+ @Path("/orders/{orderId}/")
+ public Order getOrder(@PathParam("orderId") String orderId) {
+ long idNumber = Long.parseLong(orderId);
+ Order c = orders.get(idNumber);
+ return c;
+ }
+
+ final void init() {
+ Customer c = new Customer();
+ c.setName("John");
+ c.setId(123);
+ customers.put(c.getId(), c);
+
+ c = new Customer();
+ c.setName("Dan");
+ c.setId(113);
+ customers.put(c.getId(), c);
+
+ Order o = new Order();
+ o.setDescription("order 223");
+ o.setId(223);
+ orders.put(o.getId(), o);
+ }
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerServiceResource.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerServiceResource.java
new file mode 100644
index 0000000..99ee8ed
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/CustomerServiceResource.java
@@ -0,0 +1,37 @@
+/*
+ * 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.component.cxf.jaxrs.testbean;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Response;
+
+// START SNIPPET: example
+@Path("/customerservice/")
+public interface CustomerServiceResource {
+
+ @GET
+ @Path("/customers/{id}/")
+ Customer getCustomer(@PathParam("id") String id);
+
+ @PUT
+ @Path("/customers/")
+ Response updateCustomer(Customer customer);
+}
+// END SNIPPET: example
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Order.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Order.java
new file mode 100644
index 0000000..4f01acb
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Order.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.jaxrs.testbean;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "Order")
+public class Order {
+ private long id;
+ private String description;
+ private Map<Long, Product> products = new HashMap<>();
+
+ public Order() {
+ init();
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String d) {
+ this.description = d;
+ }
+
+ @GET
+ @Path("products/{productId}/")
+ public Product getProduct(@PathParam("productId")int productId) {
+ Product p = products.get(new Long(productId));
+ return p;
+ }
+
+ final void init() {
+ Product p = new Product();
+ p.setId(323);
+ p.setDescription("product 323");
+ products.put(p.getId(), p);
+ }
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Product.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Product.java
new file mode 100644
index 0000000..d363af1
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/component/cxf/jaxrs/testbean/Product.java
@@ -0,0 +1,41 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.cxf.jaxrs.testbean;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "Product")
+public class Product {
+ private long id;
+ private String description;
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String d) {
+ this.description = d;
+ }
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Test.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Test.java
new file mode 100644
index 0000000..2bd643b
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Test.java
@@ -0,0 +1,85 @@
+/*
+ * 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.cxf.blueprint;
+
+import java.util.Properties;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import org.apache.camel.component.cxf.CXFTestSupport;
+import org.apache.camel.component.cxf.CxfEndpoint;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
+import org.apache.cxf.binding.BindingConfiguration;
+import org.apache.cxf.binding.soap.SoapBindingConfiguration;
+import org.apache.hello_world_soap_http.Greeter;
+import org.junit.Test;
+
+public class CxfConsumerSoap12Test extends CamelBlueprintTestSupport {
+ private static final QName SERVICE_NAME = new QName("http://apache.org/hello_world_soap_http",
+ "SOAPService");
+ private static final QName PORT_NAME = new QName("http://apache.org/hello_world_soap_http",
+ "SoapPort");
+
+ @Override
+ protected Properties useOverridePropertiesWithPropertiesComponent() {
+ Properties extra = new Properties();
+ extra.put("router.address", "http://localhost:" + CXFTestSupport.getPort1() + "/CxfConsumerSoap12Test/router");
+ return extra;
+ }
+
+ @Override
+ protected String getBlueprintDescriptor() {
+ return "org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Beans.xml";
+ }
+
+ @Override
+ public boolean isCreateCamelContextPerClass() {
+ return true;
+ }
+
+ @Test
+ public void testCxfEndpointBeanDefinitionParser() {
+ CxfEndpoint routerEndpoint = context.getEndpoint("routerEndpoint", CxfEndpoint.class);
+ assertEquals("Got the wrong endpoint address", routerEndpoint.getAddress(),
+ "http://localhost:" + CXFTestSupport.getPort1() + "/CxfConsumerSoap12Test/router");
+ assertEquals("Got the wrong endpont service class",
+ "org.apache.hello_world_soap_http.Greeter",
+ routerEndpoint.getServiceClass().getName());
+ BindingConfiguration binding = routerEndpoint.getBindingConfig();
+ assertTrue("Got no soap binding", binding instanceof SoapBindingConfiguration);
+ assertEquals("Got the wrong soap version", "http://schemas.xmlsoap.org/wsdl/soap12/",
+ ((SoapBindingConfiguration)binding).getVersion().getBindingId());
+ assertTrue("Mtom not enabled", ((SoapBindingConfiguration)binding).isMtomEnabled());
+ }
+
+ @Test
+ public void testInvokeGreeter() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(1);
+
+ Service service = Service.create(SERVICE_NAME);
+ service.addPort(PORT_NAME, "http://www.w3.org/2003/05/soap/bindings/HTTP/",
+ "http://localhost:" + CXFTestSupport.getPort1() + "/CxfConsumerSoap12Test/router");
+ Greeter greeter = service.getPort(PORT_NAME, Greeter.class);
+
+ greeter.greetMeOneWay("test");
+
+ assertMockEndpointsSatisfied();
+ }
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMTest.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMTest.java
new file mode 100644
index 0000000..141975c
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.cxf.blueprint;
+
+import java.util.Properties;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import org.apache.camel.component.cxf.CXFTestSupport;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.hello_world_soap_http.Greeter;
+import org.junit.Test;
+
+public class CxfConsumerWSRMTest extends CamelBlueprintTestSupport {
+ private static final QName SERVICE_NAME = new QName("http://apache.org/hello_world_soap_http",
+ "SOAPService");
+ private static final QName PORT_NAME = new QName("http://apache.org/hello_world_soap_http",
+ "SoapPort");
+
+ @Override
+ protected Properties useOverridePropertiesWithPropertiesComponent() {
+ Properties extra = new Properties();
+ extra.put("router.address", "http://localhost:" + CXFTestSupport.getPort1() + "/CxfConsumerWSRMTest/router");
+ return extra;
+ }
+
+ @Override
+ protected String getBlueprintDescriptor() {
+ return "org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMBeans.xml";
+ }
+
+ @Override
+ public boolean isCreateCamelContextPerClass() {
+ return true;
+ }
+
+ @Test
+ public void testInvokeGreeter() throws Exception {
+ MockEndpoint mock = getMockEndpoint("mock:result");
+ mock.expectedMessageCount(1);
+
+ Bus clientBus = context.getRegistry().lookupByNameAndType("client-bus", Bus.class);
+ assertNotNull(clientBus);
+
+ BusFactory.setThreadDefaultBus(clientBus);
+ try {
+ Service service = Service.create(SERVICE_NAME);
+ service.addPort(PORT_NAME, "http://schemas.xmlsoap.org/soap/",
+ "http://localhost:" + CXFTestSupport.getPort1() + "/CxfConsumerWSRMTest/router");
+ Greeter greeter = service.getPort(PORT_NAME, Greeter.class);
+
+ greeter.greetMeOneWay("test");
+ } finally {
+ BusFactory.setThreadDefaultBus(null);
+ }
+
+ assertMockEndpointsSatisfied();
+ }
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfEndpointBeansTest.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfEndpointBeansTest.java
new file mode 100644
index 0000000..1b05426
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfEndpointBeansTest.java
@@ -0,0 +1,132 @@
+/*
+ * 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.cxf.blueprint;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import javax.xml.namespace.QName;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.cxf.CXFTestSupport;
+import org.apache.camel.component.cxf.CxfEndpoint;
+import org.apache.camel.component.cxf.common.message.CxfConstants;
+import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
+import org.apache.camel.util.URISupport;
+import org.apache.cxf.clustering.FailoverFeature;
+import org.apache.cxf.transport.http.HTTPException;
+import org.junit.Test;
+
+public class CxfEndpointBeansTest extends CamelBlueprintTestSupport {
+
+ @Override
+ protected String getBlueprintDescriptor() {
+ return "org/apache/camel/test/cxf/blueprint/CxfEndpointBeans.xml";
+ }
+
+ @Override
+ protected String getBundleDirectives() {
+ return "blueprint.aries.xml-validation:=false";
+ }
+
+ @Override
+ protected Properties useOverridePropertiesWithPropertiesComponent() {
+ Properties extra = new Properties();
+ extra.put("router.address", "http://localhost:" + CXFTestSupport.getPort1() + "/CxfEndpointBeansRouterTest/router");
+ extra.put("service.address", "http://localhost:" + CXFTestSupport.getPort2() + "/CxfEndpointBeansRouterTest/service");
+ extra.put("test.address", "http://localhost:" + CXFTestSupport.getPort3() + "/testEndpoint");
+ return extra;
+ }
+
+ @Test
+ public void testCxfBusInjection() {
+ CxfEndpoint serviceEndpoint = context.getEndpoint("cxf:bean:serviceEndpoint", CxfEndpoint.class);
+ CxfEndpoint routerEndpoint = context.getEndpoint("cxf:bean:routerEndpoint", CxfEndpoint.class);
+ assertEquals("These endpoints don't share the same bus", serviceEndpoint.getBus().getId(), routerEndpoint.getBus().getId());
+ }
+
+ @Test
+ public void testCxfFeatureSetting() {
+ CxfEndpoint routerEndpoint = context.getEndpoint("cxf:bean:routerEndpoint", CxfEndpoint.class);
+ assertEquals("Get a wrong size of features.", 1, routerEndpoint.getFeatures().size());
+ assertTrue("Get a wrong feature instance.", routerEndpoint.getFeatures().get(0) instanceof FailoverFeature);
+ }
+
+
+ @Test
+ public void testCxfEndpointBeanDefinitionParser() {
+ CxfEndpoint routerEndpoint = context.getEndpoint("routerEndpoint", CxfEndpoint.class);
+ assertEquals("Got the wrong endpoint address", routerEndpoint.getAddress(),
+ "http://localhost:" + CXFTestSupport.getPort1() + "/CxfEndpointBeansRouterTest/router");
+ assertEquals("Got the wrong endpont service class",
+ "org.apache.camel.component.cxf.HelloService",
+ routerEndpoint.getServiceClass().getName());
+ }
+
+ @Test
+ public void testCreateCxfEndpointFromURI() throws Exception {
+ CxfEndpoint endpoint1 = context.getEndpoint("cxf:bean:routerEndpoint?address=http://localhost:9000/test1", CxfEndpoint.class);
+ CxfEndpoint endpoint2 = context.getEndpoint("cxf:bean:routerEndpoint?address=http://localhost:8000/test2", CxfEndpoint.class);
+ assertEquals("Get a wrong endpoint address.", "http://localhost:9000/test1", endpoint1.getAddress());
+ assertEquals("Get a wrong endpoint address.", "http://localhost:8000/test2", endpoint2.getAddress());
+
+ // the uri will always be normalized
+ String uri1 = URISupport.normalizeUri("cxf://bean:routerEndpoint?address=http://localhost:9000/test1");
+ String uri2 = URISupport.normalizeUri("cxf://bean:routerEndpoint?address=http://localhost:8000/test2");
+ assertEquals("Get a wrong endpoint key.", uri1, endpoint1.getEndpointKey());
+ assertEquals("Get a wrong endpoint key.", uri2, endpoint2.getEndpointKey());
+ }
+
+ @Test
+ public void testCxfBusConfiguration() throws Exception {
+ // get the camelContext from application context
+ ProducerTemplate template = context.createProducerTemplate();
+
+ Exchange reply = template.request("cxf:bean:serviceEndpoint", new Processor() {
+ public void process(final Exchange exchange) {
+ final List<String> params = new ArrayList<>();
+ params.add("hello");
+ exchange.getIn().setBody(params);
+ exchange.getIn().setHeader(CxfConstants.OPERATION_NAME, "echo");
+ }
+ });
+
+ Exception ex = reply.getException();
+ assertTrue("Should get the fault here",
+ ex instanceof org.apache.cxf.interceptor.Fault
+ || ex instanceof HTTPException);
+ }
+
+ @Test
+ public void testCxfBeanWithCamelPropertiesHolder() throws Exception {
+ // get the camelContext from application context
+ CxfEndpoint testEndpoint = context.getEndpoint("cxf:bean:testEndpoint", CxfEndpoint.class);
+ QName endpointName = QName.valueOf("{http://org.apache.camel.component.cxf}myEndpoint");
+ QName serviceName = QName.valueOf("{http://org.apache.camel.component.cxf}myService");
+
+ assertEquals("Got a wrong address",
+ "http://localhost:" + CXFTestSupport.getPort3() + "/testEndpoint", testEndpoint.getAddress());
+ assertEquals("Got a wrong bindingId", "http://schemas.xmlsoap.org/wsdl/soap12/", testEndpoint.getBindingId());
+ assertEquals("Got a wrong transportId", "http://cxf.apache.org/transports/http", testEndpoint.getTransportId());
+ assertEquals("Got a wrong endpointName", endpointName, testEndpoint.getPortName());
+ assertEquals("Got a wrong WsdlURL", "wsdl/test.wsdl", testEndpoint.getWsdlURL());
+ assertEquals("Got a wrong serviceName", serviceName, testEndpoint.getServiceName());
+ }
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterTest.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterTest.java
new file mode 100644
index 0000000..9bf3e61
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterTest.java
@@ -0,0 +1,129 @@
+/*
+ * 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.cxf.blueprint;
+
+import java.util.Properties;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Endpoint;
+import javax.xml.ws.Service;
+
+import org.apache.camel.component.cxf.CXFTestSupport;
+import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
+import org.apache.cxf.interceptor.Fault;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.AbstractPhaseInterceptor;
+import org.apache.cxf.phase.Phase;
+import org.apache.hello_world_soap_http.Greeter;
+import org.apache.hello_world_soap_http.GreeterImpl;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CxfPayloadProviderRouterTest extends CamelBlueprintTestSupport {
+ protected static Endpoint endpoint;
+ protected static GreeterImpl implementor;
+
+ private final QName serviceName = new QName("http://apache.org/hello_world_soap_http",
+ "SOAPService");
+ private final QName routerPortName = new QName("http://apache.org/hello_world_soap_http",
+ "RouterPort");
+
+ @AfterClass
+ public static void stopService() {
+ if (endpoint != null) {
+ endpoint.stop();
+ }
+ }
+
+ @BeforeClass
+ public static void startService() {
+ implementor = new GreeterImpl();
+ String address = "http://localhost:" + CXFTestSupport.getPort1() + "/CxfPayLoadProviderRouterTest/SoapContext/SoapPort";
+ endpoint = Endpoint.publish(address, implementor);
+ }
+
+ @Override
+ protected Properties useOverridePropertiesWithPropertiesComponent() {
+ Properties extra = new Properties();
+ extra.put("router.address", "http://localhost:" + CXFTestSupport.getPort2() + "/CxfPayloadProviderRouterTest/CamelContext/RouterPort");
+ extra.put("service.address", "http://localhost:" + CXFTestSupport.getPort1() + "/CxfPayLoadProviderRouterTest/SoapContext/SoapPort");
+ return extra;
+ }
+
+ @Override
+ protected String getBlueprintDescriptor() {
+ return "org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterBeans.xml";
+ }
+
+ @Test
+ public void testPublishEndpointUrl() throws Exception {
+ final String path = "CxfPayloadProviderRouterTest/CamelContext/RouterPort";
+ String response = template.requestBody("http://localhost:" + CXFTestSupport.getPort2() + "/" + path
+ + "?wsdl", null, String.class);
+ assertTrue("Can't find the right service location.", response.indexOf(path) > 0);
+ }
+
+ @Test
+ public void testInvokeGreetMeOverProvider() throws Exception {
+ Service service = Service.create(serviceName);
+ service.addPort(routerPortName, "http://schemas.xmlsoap.org/soap/",
+ "http://localhost:" + CXFTestSupport.getPort2() + "/"
+ + getClass().getSimpleName() + "/CamelContext/RouterPort");
+ Greeter greeter = service.getPort(routerPortName, Greeter.class);
+ org.apache.cxf.endpoint.Client client = org.apache.cxf.frontend.ClientProxy.getClient(greeter);
+ VerifyInboundInterceptor icp = new VerifyInboundInterceptor();
+ client.getInInterceptors().add(icp);
+
+ int ic = implementor.getInvocationCount();
+
+ icp.setCalled(false);
+ String reply = greeter.greetMe("test");
+ assertEquals("Got the wrong reply ", "Hello test", reply);
+ assertTrue("No Inbound message received", icp.isCalled());
+ assertEquals("The target service not invoked", ++ic, implementor.getInvocationCount());
+
+ icp.setCalled(false);
+ greeter.greetMeOneWay("call greetMe OneWay !");
+ assertFalse("An unnecessary inbound message", icp.isCalled());
+ // wait a few seconds for the async oneway service to be invoked
+ Thread.sleep(3000);
+ assertEquals("The target service not invoked", ++ic, implementor.getInvocationCount());
+ }
+
+ static class VerifyInboundInterceptor extends AbstractPhaseInterceptor<Message> {
+ private boolean called;
+
+ VerifyInboundInterceptor() {
+ super(Phase.USER_PROTOCOL);
+ }
+
+ @Override
+ public void handleMessage(Message message) throws Fault {
+ called = true;
+ }
+
+ public boolean isCalled() {
+ return called;
+ }
+
+ public void setCalled(boolean b) {
+ called = b;
+ }
+
+ }
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeansTest.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeansTest.java
new file mode 100644
index 0000000..76e8e9f
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeansTest.java
@@ -0,0 +1,98 @@
+/*
+ * 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.cxf.blueprint;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.ws.rs.ProcessingException;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Produce;
+import org.apache.camel.ProducerTemplate;
+import org.apache.camel.component.cxf.common.message.CxfConstants;
+import org.apache.camel.component.cxf.jaxrs.CxfRsEndpoint;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class CxfRsEndpointBeansTest extends CamelBlueprintTestSupport {
+
+ @Produce("direct:startURLOverride")
+ private ProducerTemplate pT;
+
+ @Override
+ protected String getBlueprintDescriptor() {
+ return "org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeans.xml";
+ }
+
+ @Override
+ protected String getBundleDirectives() {
+ return "blueprint.aries.xml-validation:=false";
+ }
+
+ @Test
+ public void testCxfBusInjection() {
+
+ CxfRsEndpoint serviceEndpoint = context.getEndpoint("cxfrs:bean:serviceEndpoint", CxfRsEndpoint.class);
+ CxfRsEndpoint routerEndpoint = context.getEndpoint("cxfrs:bean:routerEndpoint", CxfRsEndpoint.class);
+ JAXRSServerFactoryBean server = routerEndpoint.createJAXRSServerFactoryBean();
+ JAXRSClientFactoryBean client = serviceEndpoint.createJAXRSClientFactoryBean();
+ assertEquals("These cxfrs endpoints don't share the same bus", server.getBus().getId(), client.getBus().getId());
+ }
+
+ @Test
+ public void testDestinationOverrideURLHandling() {
+
+ try {
+ context.getRouteController().startRoute("url-override-route");
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ List<String> expected = Arrays.asList(
+ "foo1",
+ "foo2",
+ "foo1",
+ "foo2",
+ "foo1");
+
+ expected.forEach(host -> pT.send(exchange -> {
+ Message in = exchange.getIn();
+ in.setHeader(CxfConstants.CAMEL_CXF_RS_USING_HTTP_API, false);
+ in.setHeader(CxfConstants.OPERATION_NAME, "getCustomer");
+ in.setBody("Scott");
+ in.setHeader(Exchange.ACCEPT_CONTENT_TYPE, "application/json");
+ in.setHeader(Exchange.DESTINATION_OVERRIDE_URL, "http://" + host);
+ in.setHeader(Exchange.HTTP_METHOD, "GET");
+ }));
+
+ MockEndpoint mockEndpoint = getMockEndpoint("mock:resultURLOverride");
+ Assert.assertArrayEquals(expected.toArray(),
+ mockEndpoint.getExchanges().stream()
+ .map(exchange -> exchange.getProperty(Exchange.EXCEPTION_CAUGHT, ProcessingException.class).getCause().toString())
+ .map(exceptionMessage -> exceptionMessage.split("\\: ")[1])
+ .collect(Collectors.toList()).toArray());
+
+ }
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfTransportBlueprintTest.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfTransportBlueprintTest.java
new file mode 100644
index 0000000..a56ba78
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/CxfTransportBlueprintTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.cxf.blueprint;
+
+import org.apache.camel.test.blueprint.CamelBlueprintTestSupport;
+import org.junit.Test;
+
+public class CxfTransportBlueprintTest extends CamelBlueprintTestSupport {
+
+ @Override
+ protected String getBlueprintDescriptor() {
+ return "org/apache/camel/test/cxf/blueprint/CxfTransportBeans.xml";
+ }
+
+ @Override
+ // camel-cxf blueprint schema doesn't publihsed yet
+ protected String getBundleDirectives() {
+ return "blueprint.aries.xml-validation:=false";
+ }
+
+ @Test
+ public void testPublishEndpointUrl() throws Exception {
+ final String request = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
+ + "<soap:Body>"
+ + "<ns1:echo xmlns:ns1=\"http://cxf.component.camel.apache.org/\">"
+ + "<arg0 xmlns=\"http://cxf.component.camel.apache.org/\">hello world</arg0>"
+ + "</ns1:echo></soap:Body></soap:Envelope>";
+ String response = template.requestBody("direct:client", request, String.class);
+ assertNotNull("We should get some response here", response);
+ assertTrue("Get a wrong response.", response.indexOf("hello world") > 0 && response.indexOf("echoResponse") > 0);
+ }
+
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/MyProcessor.java b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/MyProcessor.java
new file mode 100644
index 0000000..51f48a4
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/java/org/apache/camel/test/cxf/blueprint/MyProcessor.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.test.cxf.blueprint;
+
+import java.util.List;
+
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
+import org.apache.camel.Processor;
+import org.apache.camel.component.cxf.common.message.CxfConstants;
+
+/**
+ *
+ */
+public class MyProcessor implements Processor {
+
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ Thread.sleep(1000);
+ Message in = exchange.getIn();
+ // Get the parameter list
+ List<?> parameter = in.getBody(List.class);
+ // Get the operation name
+ String operation = (String)in.getHeader(CxfConstants.OPERATION_NAME);
+ Object result = operation + " " + (String)parameter.get(0);
+ exchange.getOut().setBody(result);
+ }
+
+}
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/log4j2.properties b/tests/camel-blueprint-cxf-test/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..34f87ee
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/log4j2.properties
@@ -0,0 +1,30 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+appender.out.type = File
+appender.out.name = out
+appender.out.fileName = target/camel-test-blueprint-cxf.log
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.stdout.type = Console
+appender.stdout.name = stdout
+appender.stdout.layout.type = PatternLayout
+appender.stdout.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+logger.io.name = org.ops4j.io
+logger.io.level = WARN
+rootLogger.level = INFO
+rootLogger.appenderRef.out.ref = out
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Beans.xml b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Beans.xml
new file mode 100644
index 0000000..1475bcc
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfConsumerSoap12Beans.xml
@@ -0,0 +1,59 @@
+<?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.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
+ xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
+ xmlns:soap="http://cxf.apache.org/blueprint/bindings/soap"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xmlns:s="http://cxf.apache.org/hello_world_soap_http"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+ http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
+ http://cxf.apache.org/blueprint/bindings/soap http://cxf.apache.org/schemas/configuration/blueprint/soap.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
+ http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <!-- blueprint property placeholders -->
+ <cm:property-placeholder persistent-id="my-placeholders">
+ <cm:default-properties>
+ <cm:property name="router.address" value="http://localhost:9000/routerEndpoint" />
+ </cm:default-properties>
+ </cm:property-placeholder>
+
+ <cxf:cxfEndpoint id="routerEndpoint" address="{{router.address}}"
+ serviceClass="org.apache.hello_world_soap_http.Greeter">
+ <cxf:properties>
+ <entry key="dataFormat" value="PAYLOAD"/>
+ <entry key="org.apache.cxf.oneway.robust" value="true"/>
+ </cxf:properties>
+ <cxf:binding>
+ <soap:soapBinding mtomEnabled="true" version="1.2"/>
+ </cxf:binding>
+ </cxf:cxfEndpoint>
+
+ <camel:camelContext id="camel">
+ <camel:route>
+ <camel:from uri="cxf:bean:routerEndpoint?synchronous=true" />
+ <camel:to uri="mock:result" />
+ </camel:route>
+ </camel:camelContext>
+
+</blueprint>
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMBeans.xml b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMBeans.xml
new file mode 100644
index 0000000..20ec2d4
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfConsumerWSRMBeans.xml
@@ -0,0 +1,99 @@
+<?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.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
+ xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
+ xmlns:cxf-core="http://cxf.apache.org/blueprint/core"
+ xmlns:soap="http://cxf.apache.org/blueprint/bindings/soap"
+ xmlns:wsa="http://cxf.apache.org/ws/addressing"
+ xmlns:wsrm-policy="http://schemas.xmlsoap.org/ws/2005/02/rm/policy"
+ xmlns:wsrm-mgr="http://cxf.apache.org/ws/rm/manager"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xmlns:s="http://cxf.apache.org/hello_world_soap_http"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+ http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
+ http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
+ http://cxf.apache.org/blueprint/bindings/soap http://cxf.apache.org/schemas/configuration/blueprint/soap.xsd
+ http://schemas.xmlsoap.org/ws/2005/02/rm/policy http://schemas.xmlsoap.org/ws/2005/02/rm/wsrm-policy.xsd
+ http://cxf.apache.org/ws/rm/manager http://cxf.apache.org/schemas/configuration/wsrm-manager.xsd
+ http://cxf.apache.org/ws/addressing http://cxf.apache.org/schemas/ws-addr-conf.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
+ http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <!-- blueprint property placeholders -->
+ <cm:property-placeholder persistent-id="my-placeholders">
+ <cm:default-properties>
+ <cm:property name="router.address" value="http://localhost:9000/routerEndpoint" />
+ </cm:default-properties>
+ </cm:property-placeholder>
+
+ <cxf-core:bus id="router-bus" bus="router-bus">
+ <cxf-core:features>
+ <cxf-core:logging />
+ <wsa:addressing/>
+ <wsrm-mgr:reliableMessaging>
+ <wsrm-policy:RMAssertion>
+ <wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
+ <wsrm-policy:AcknowledgementInterval Milliseconds="0"/>
+ </wsrm-policy:RMAssertion>
+ <wsrm-mgr:sourcePolicy>
+ </wsrm-mgr:sourcePolicy>
+ <wsrm-mgr:destinationPolicy>
+ <wsrm-mgr:acksPolicy intraMessageThreshold="0" />
+ </wsrm-mgr:destinationPolicy>
+ </wsrm-mgr:reliableMessaging>
+ </cxf-core:features>
+ </cxf-core:bus>
+
+ <cxf-core:bus id="client-bus" bus="client-bus">
+ <cxf-core:features>
+ <cxf-core:logging />
+ <wsa:addressing/>
+ <wsrm-mgr:reliableMessaging>
+ <wsrm-policy:RMAssertion>
+ <wsrm-policy:BaseRetransmissionInterval Milliseconds="4000"/>
+ <wsrm-policy:AcknowledgementInterval Milliseconds="0"/>
+ </wsrm-policy:RMAssertion>
+ <wsrm-mgr:sourcePolicy>
+ </wsrm-mgr:sourcePolicy>
+ <wsrm-mgr:destinationPolicy>
+ <wsrm-mgr:acksPolicy intraMessageThreshold="0" />
+ </wsrm-mgr:destinationPolicy>
+ </wsrm-mgr:reliableMessaging>
+ </cxf-core:features>
+ </cxf-core:bus>
+
+ <cxf:cxfEndpoint id="routerEndpoint" address="{{router.address}}"
+ serviceClass="org.apache.hello_world_soap_http.Greeter" bus="router-bus">
+ <cxf:properties>
+ <entry key="dataFormat" value="PAYLOAD"/>
+ </cxf:properties>
+ </cxf:cxfEndpoint>
+
+ <camel:camelContext id="camel">
+ <camel:route>
+ <camel:from uri="cxf:bean:routerEndpoint?synchronous=true" />
+ <camel:to uri="mock:result" />
+ </camel:route>
+ </camel:camelContext>
+
+</blueprint>
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfEndpointBeans.xml b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfEndpointBeans.xml
new file mode 100644
index 0000000..2510846
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfEndpointBeans.xml
@@ -0,0 +1,113 @@
+<?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.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
+ xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
+ xmlns:cxf-cluster="http://cxf.apache.org/clustering"
+ xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xmlns:s="http://cxf.apache.org/hello_world_soap_http"
+ xmlns:enc="http://karaf.apache.org/xmlns/jasypt/v1.0.0"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+ http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://cxf.apache.org/clustering http://cxf.apache.org/schemas/clustering.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
+ http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+
+ <!-- blueprint property placeholders -->
+ <cm:property-placeholder persistent-id="my-placeholders">
+ <cm:default-properties>
+ <!--cm:property name="router.address" value="http://localhost:9000/routerEndpoint" /-->
+ <cm:property name="router.address" value="ENC(pYMW5lQHCwmrPJvvNb5Nx0+aoaYGymveCroZarDXcNPtQwzP6F2Jj9iBNO9+xGjx)" />
+ <cm:property name="service.address" value="http://localhost:8000/serviceEndpoint" />
+ <cm:property name="test.address" value="http://localhost:9000/testEndpoint" />
+ <cm:property name="bindingId" value="http://schemas.xmlsoap.org/wsdl/soap12/" />
+ <cm:property name="transportId" value="http://cxf.apache.org/transports/http" />
+ <cm:property name="serviceName" value="{http://org.apache.camel.component.cxf}myService" />
+ <cm:property name="endpointName" value="{http://org.apache.camel.component.cxf}myEndpoint" />
+ <cm:property name="receiveTimeout" value="200" />
+ <cm:property name="wsdlURL" value="wsdl/test.wsdl" />
+ </cm:default-properties>
+ </cm:property-placeholder>
+
+ <enc:property-placeholder>
+ <enc:encryptor class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
+ <property name="config">
+ <bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
+ <property name="algorithm" value="PBEWithMD5AndDES" />
+ <property name="password" value="password1" />
+ </bean>
+ </property>
+ </enc:encryptor>
+ </enc:property-placeholder>
+
+ <bean id="SequentialAddresses" class="org.apache.cxf.clustering.SequentialStrategy">
+ <property name="alternateAddresses">
+ <list>
+ <value>
+ http://localhost:8181/cxf/report
+ </value>
+ </list>
+ </property>
+ <property name="delayBetweenRetries" value="10" />
+ </bean>
+
+ <cxf:cxfEndpoint id="routerEndpoint" address="{{router.address}}"
+ serviceClass="org.apache.camel.component.cxf.HelloService">
+ <cxf:features>
+ <cxf-cluster:failover>
+ <cxf-cluster:strategy>
+ <ref component-id="SequentialAddresses" />
+ </cxf-cluster:strategy>
+ </cxf-cluster:failover>
+ </cxf:features>
+ </cxf:cxfEndpoint>
+
+ <cxf:cxfEndpoint id="serviceEndpoint" address="{{service.address}}"
+ serviceClass="org.apache.camel.component.cxf.HelloService"/>
+
+ <cxf:cxfEndpoint id="testEndpoint" address="{{test.address}}"
+ bindingId="{{bindingId}}" transportId="{{transportId}}"
+ serviceName="{{serviceName}}" endpointName="{{endpointName}}"
+ wsdlURL="{{wsdlURL}}"
+ serviceClass="org.apache.camel.component.cxf.HelloService"/>
+
+ <!-- Setting the http conduit policy -->
+ <http-conf:conduit name="{http://cxf.component.camel.apache.org/}HelloServicePort.http-conduit">
+ <http-conf:client ReceiveTimeout="${receiveTimeout}"
+ MaxRetransmits="1"
+ AllowChunking="false" />
+ </http-conf:conduit>
+
+ <bean id="myProcessor" class="org.apache.camel.test.cxf.blueprint.MyProcessor"/>
+
+ <camel:camelContext id="camel">
+ <camel:route>
+ <camel:from uri="cxf:bean:routerEndpoint" />
+ <camel:process ref="myProcessor" />
+ <camel:to uri="mock:result" />
+ </camel:route>
+ </camel:camelContext>
+
+</blueprint>
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterBeans.xml b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterBeans.xml
new file mode 100644
index 0000000..bd16a8a
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfPayloadProviderRouterBeans.xml
@@ -0,0 +1,76 @@
+<?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.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
+ xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
+ xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xmlns:s="http://cxf.apache.org/hello_world_soap_http"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+ http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
+ http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <!-- blueprint property placeholders -->
+ <cm:property-placeholder persistent-id="my-placeholders">
+ <cm:default-properties>
+ <cm:property name="router.address" value="http://localhost:9000/routerEndpoint" />
+ <cm:property name="service.address" value="http://localhost:8000/serviceEndpoint" />
+ </cm:default-properties>
+ </cm:property-placeholder>
+
+ <bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
+ <bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
+
+ <cxf:cxfEndpoint id="routerEndpoint" address="{{router.address}}">
+ <cxf:properties>
+ <entry key="dataFormat" value="PAYLOAD"/>
+ </cxf:properties>
+ <cxf:outInterceptors>
+ <ref component-id="loggingOutInterceptor"/>
+ </cxf:outInterceptors>
+ <cxf:inInterceptors>
+ <ref component-id="loggingInInterceptor"/>
+ </cxf:inInterceptors>
+ </cxf:cxfEndpoint>
+
+ <cxf:cxfEndpoint id="serviceEndpoint" address="{{service.address}}">
+ <cxf:properties>
+ <entry key="dataFormat" value="PAYLOAD"/>
+ </cxf:properties>
+ </cxf:cxfEndpoint>
+
+ <camel:camelContext id="camel">
+ <camel:route>
+ <camel:from uri="cxf:bean:routerEndpoint?synchronous=true" />
+ <camel:setHeader name="operationNamespace">
+ <camel:constant>http://camel.apache.org/cxf/jaxws/dispatch</camel:constant>
+ </camel:setHeader>
+ <camel:setHeader name="operationName">
+ <camel:constant>Invoke</camel:constant>
+ </camel:setHeader>
+ <camel:to uri="cxf:bean:serviceEndpoint?synchronous=true" />
+ </camel:route>
+ </camel:camelContext>
+
+</blueprint>
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeans.xml b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeans.xml
new file mode 100644
index 0000000..71da6c8
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfRsEndpointBeans.xml
@@ -0,0 +1,79 @@
+<?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.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
+ xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+ http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
+ http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <cxf:rsServer id="routerEndpoint" address="http://localhost:8182"
+ serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
+ loggingFeatureEnabled="true">
+ <cxf:providers>
+ <ref component-id="jsonProvider" />
+ </cxf:providers>
+ </cxf:rsServer>
+
+
+ <cxf:rsClient id="serviceEndpoint" address="http://localhost:8080"
+ serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
+ loggingFeatureEnabled="true">
+ <cxf:providers>
+ <ref component-id="jsonProvider" />
+ </cxf:providers>
+ </cxf:rsClient>
+
+ <cxf:rsClient id="restClient" address="http://foo"
+ serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerServiceResource"
+ loggingFeatureEnabled="true">
+ <cxf:providers>
+ <ref component-id="jsonProvider" />
+ </cxf:providers>
+ </cxf:rsClient>
+
+ <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider" />
+
+ <camel:camelContext id="camel">
+
+ <camel:route>
+ <camel:from uri="direct:start" />
+ <camel:to uri="mock:result" />
+ </camel:route>
+
+
+ <camel:route autostart="false" id="url-override-route">
+
+ <camel:onException>
+ <camel:exception>javax.ws.rs.ProcessingException</camel:exception>
+ <camel:to uri="mock:resultURLOverride" />
+ </camel:onException>
+
+ <camel:from uri="direct:startURLOverride" />
+ <camel:to uri="cxfrs:bean:restClient" />
+ </camel:route>
+
+ </camel:camelContext>
+
+</blueprint>
diff --git a/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfTransportBeans.xml b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfTransportBeans.xml
new file mode 100644
index 0000000..411a701
--- /dev/null
+++ b/tests/camel-blueprint-cxf-test/src/test/resources/org/apache/camel/test/cxf/blueprint/CxfTransportBeans.xml
@@ -0,0 +1,53 @@
+<?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.
+
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:camel="http://camel.apache.org/schema/blueprint"
+ xmlns:transport="http://cxf.apache.org/transports/camel/blueprint"
+ xmlns:simple="http://cxf.apache.org/blueprint/simple"
+ xmlns:core="http://cxf.apache.org/blueprint/core"
+ xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
+ xmlns:s="http://cxf.apache.org/hello_world_soap_http"
+ xsi:schemaLocation="
+ http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
+ http://cxf.apache.org/blueprint/simple http://cxf.apache.org/schemas/blueprint/simple.xsd
+ http://cxf.apache.org/blueprint/core http://cxf.apache.org/schemas/blueprint/core.xsd
+ http://cxf.apache.org/transports/camel/blueprint http://cxf.apache.org/schmemas/blueprint/camel.xsd
+ http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
+ http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0 http://aries.apache.org/schemas/blueprint-cm/blueprint-cm-1.0.0.xsd
+ http://www.osgi.org/xmlns/blueprint/v1.0.0 https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
+
+ <!-- make sure the destination is injected with the right camel context -->
+ <transport:destination id="*.camel-destination" camelContextId="camel1" />
+
+ <simple:server serviceClass="org.apache.camel.component.cxf.HelloService" address="camel://direct:server">
+ <simple:serviceBean>
+ <bean class="org.apache.camel.component.cxf.HelloServiceImpl"/>
+ </simple:serviceBean>
+ </simple:server>
+
+ <camel:camelContext id="camel1">
+ <camel:route>
+ <camel:from uri="direct:client" />
+ <camel:to uri="direct:server" />
+ </camel:route>
+ </camel:camelContext>
+
+</blueprint>
diff --git a/tests/pom.xml b/tests/pom.xml
new file mode 100644
index 0000000..649e64f
--- /dev/null
+++ b/tests/pom.xml
@@ -0,0 +1,93 @@
+<?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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.camel.karaf</groupId>
+ <artifactId>karaf</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <artifactId>tests</artifactId>
+ <name>Camel Karaf :: Integration Tests</name>
+ <description>Camel Karaf Integration Tests</description>
+ <packaging>pom</packaging>
+
+ <properties>
+ <camel.osgi.export.pkg />
+ </properties>
+
+ <modules>
+ <module>camel-blueprint-cxf-test</module>
+ </modules>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-bundle-plugin</artifactId>
+ <version>${project.version}</version>
+ <configuration>
+ </configuration>
+ <executions>
+ <execution>
+ <id>bundle-manifest</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>manifest</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <profiles>
+ <!-- includes these modules when doing the release -->
+ <profile>
+ <id>release</id>
+ <modules>
+ <module>camel-itest-osgi</module>
+ <module>camel-itest-performance</module>
+ <module>camel-performance</module>
+ </modules>
+ </profile>
+
+ <!-- osgi tests -->
+ <profile>
+ <id>osgi.test</id>
+ <modules>
+ <module>camel-itest-osgi</module>
+ </modules>
+ </profile>
+
+ <!-- performance tests -->
+ <profile>
+ <id>performance.test</id>
+ <modules>
+ <module>camel-itest-performance</module>
+ <module>camel-performance</module>
+ </modules>
+ </profile>
+ </profiles>
+</project>