<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:cxf="http://camel.apache.org/schema/cxf"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
    ">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>

    <!--
    If you want to run this example in Tomcat container which need to used servlet transoprt,
    please repalce the cxf-extension-http-jetty.xml with cxf-servlet.xml
    -->

    <import resource="classpath:META-INF/cxf/cxf.xml"/>

    <bean id = "targetBean" class="org.apache.camel.component.cxf.SoapTargetBean" />
    <bean id = "parameterProcessor" class="org.apache.camel.component.cxf.ParameterProcessor"/>

	<cxf:cxfEndpoint id="soapMessageEndpoint"
		serviceClass="org.apache.camel.component.cxf.SoapMessageProvider"
		address="http://localhost:${CXFTestSupport.port1}/CxfSoapMessageProviderTest/SoapContext/SoapProviderPort">
		<cxf:handlers>
			<ref bean="fromEndpointJaxwsHandler" />
		</cxf:handlers>
	</cxf:cxfEndpoint>


   <camelContext id="test_context" xmlns="http://camel.apache.org/schema/spring">
       <route>
            <from uri="cxf:bean:soapMessageEndpoint"/>
            <process ref="parameterProcessor" />
            <to uri="bean:targetBean?method=invokeSoapMessage"/>
        </route>
   </camelContext>
   
   <bean id="fromEndpointJaxwsHandler" class="org.apache.camel.wsdl_first.JaxwsTestHandler"/>

</beans>
