<?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"
       xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
       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://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
    ">

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

   <import resource="classpath:META-INF/cxf/cxf.xml"/>
   
   <!-- You can set the timeout and other client http transport configuration here -->
   
   <http-conf:conduit name="*.http-conduit">
		<http-conf:client ReceiveTimeout="100" />
   </http-conf:conduit>
   
   <!-- setup the CxfEndpointConfigurer bean here -->
   <bean id="myConfigurer" class="org.apache.camel.component.cxf.CxfTimeoutTest$MyCxfEndpointConfigurer" />

   <cxf:cxfEndpoint id="springEndpoint" address="http://localhost:${CXFTestSupport.port1}/CxfTimeoutTest/SoapContext/SoapPort"
    		serviceClass="org.apache.hello_world_soap_http.Greeter"/>

   <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring" errorHandlerRef="noErrorHandler">
     <route errorHandlerRef="noErrorHandler">
        <from uri="direct:start"/>
        <to uri="cxf:bean:springEndpoint"/>
     </route>

	<route>
		<from uri="direct:doCatch" />
		<doTry>
			<to uri="cxf:bean:springEndpoint" />
			<doCatch>
				<!-- and catch all other exceptions they are handled by default (ie handled 
					= true) -->
				<exception>java.lang.Exception</exception>
				<handled>
					<constant>false</constant>
				</handled>
				<to uri="mock:error" />
			</doCatch>
		</doTry>
	</route>
   </camelContext>

   <bean id="noErrorHandler" class="org.apache.camel.builder.NoErrorHandlerBuilder"/>

</beans>