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

  <!-- === Route(s) ==== -->
  <camel:camelContext id="camelContext">
    <camel:routeBuilder ref="incrementRoute"/>
  </camel:camelContext>

  <bean id="incrementRoute" class="org.apache.camel.example.server.IncrementRoute"/>

  <!-- === Endpoint mapping ==== -->
  <bean id="endpointMapping" class="org.apache.camel.component.spring.ws.bean.CamelEndpointMapping">
    <property name="interceptors">
      <list>
        <ref local="validatingInterceptor"/>
        <ref local="loggingInterceptor"/>
      </list>
    </property>
  </bean>

  <!-- === Interceptors ==== -->
  <bean id="loggingInterceptor" class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>

  <bean id="validatingInterceptor"
        class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
    <property name="schema" value="/WEB-INF/increment.xsd"/>
    <property name="validateRequest" value="true"/>
    <property name="validateResponse" value="true"/>
  </bean>

  <!-- === WSDL exposure ==== -->
  <bean id="increment" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
    <property name="schema">
      <bean id="xsd" class="org.springframework.xml.xsd.SimpleXsdSchema">
        <property name="xsd" value="/WEB-INF/increment.xsd"/>
      </bean>
    </property>
    <property name="portTypeName" value="increment"/>
    <property name="locationUri" value="http://localhost:8080/increment"/>
  </bean>

</beans>