<?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"/>

  <!-- START SNIPPET: enableMtom -->

   <cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:${CXFTestSupport.port1}/CxfMtomRouterPayloadModeTest/jaxws-mtom/hello"
            wsdlURL="mtom.wsdl"
            serviceName="ns:HelloService"
            endpointName="ns:HelloPort"
            xmlns:ns="http://apache.org/camel/cxf/mtom_feature">

        <cxf:properties>
            <!--  enable mtom by setting this property to true -->
            <entry key="mtom-enabled" value="true"/>
            
            <!--  set the camel-cxf endpoint data fromat to PAYLOAD mode -->
            <entry key="dataFormat" value="PAYLOAD"/>
        </cxf:properties>      
        
  <!-- END SNIPPET: enableMtom -->
                             
<!--                   
        <cxf:inInterceptors>
		    <ref bean="logInbound"/>
		</cxf:inInterceptors>	
		<cxf:outInterceptors>
		    <ref bean="logOutbound"/>
		</cxf:outInterceptors>
-->	
   </cxf:cxfEndpoint>
            
   <cxf:cxfEndpoint id="serviceEndpoint" address="http://localhost:${CXFTestSupport.port2}/CxfMtomRouterPayloadModeTest/jaxws-mtom/hello"
            wsdlURL="mtom.wsdl"
            serviceName="ns:HelloService"
            endpointName="ns:HelloPort"
            xmlns:ns="http://apache.org/camel/cxf/mtom_feature">
            
        <cxf:properties>
            <entry key="mtom-enabled" value="true"/>
            <entry key="dataFormat" value="PAYLOAD"/>            
        </cxf:properties>  

<!--                          
        <cxf:inInterceptors>
		    <ref bean="logInbound"/>
		</cxf:inInterceptors>	
		<cxf:outInterceptors>
		    <ref bean="logOutbound"/>
		</cxf:outInterceptors>
-->
   </cxf:cxfEndpoint>                        

   <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
      <route>
          <from uri="cxf:bean:routerEndpoint" />
          <to uri="cxf:bean:serviceEndpoint" />
      </route>
   </camelContext>
   
   <bean id="logOutbound" class="org.apache.cxf.interceptor.LoggingOutInterceptor" />         
   <bean id="logInbound" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>

</beans>