<?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:mtom="http://cxf.apache.org/mime"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
       http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd
    ">

  
  <cxf:cxfEndpoint id="routerEndpoint"
                   address="http://localhost:9036/mime-test"
                   serviceClass="org.apache.cxf.mime.TestMtom"
                   wsdlURL="/wsdl/mtom_xop.wsdl"
                   serviceName="mtom:TestMtomService">
       <cxf:properties>
           <entry key="setDefaultBus" value="true"/>
       </cxf:properties>
  </cxf:cxfEndpoint> 
    
  <cxf:cxfEndpoint id="serviceEndpoint"
                   address="local://smx/attachment"
                   serviceClass="org.apache.cxf.mime.TestMtom"
                   wsdlURL="/wsdl/mtom_xop.wsdl"
                   serviceName="mtom:TestMtomService"
                   transportId="http://cxf.apache.org/transports/local">
       <cxf:properties>
           <entry key="setDefaultBus" value="true"/>
       </cxf:properties>
  </cxf:cxfEndpoint>

  <bean id="org.apache.servicemix.nmr.api.NMR" class="org.apache.servicemix.nmr.core.ServiceMix" init-method="init" />

</beans>
