<?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 bean="validatingInterceptor"/>
        <ref bean="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>