<?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.
-->
<con:soapui-project name="camel-example-spring-ws" soapui-version="3.6.1" abortOnError="false" runType="SEQUENTIAL" xmlns:con="http://eviware.com/soapui/config"><con:settings/><con:interface xsi:type="con:WsdlInterface" wsaVersion="NONE" name="incrementSoap11" type="wsdl" bindingName="{http://camel.apache.org/example/increment}incrementSoap11" soapVersion="1_1" anonymous="optional" definition="http://localhost:8080/increment/increment.wsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><con:settings/><con:definitionCache type="TEXT" rootPart="http://localhost:8080/increment/increment.wsdl"><con:part><con:url>http://localhost:8080/increment/increment.wsdl</con:url><con:content><![CDATA[<wsdl:definitions targetNamespace="http://camel.apache.org/example/increment" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:sch="http://camel.apache.org/example/increment" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://camel.apache.org/example/increment">
  <wsdl:types>
    <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://camel.apache.org/example/increment" xmlns="http://www.w3.org/2001/XMLSchema">
      <element name="incrementRequest">
        <complexType>
          <sequence>
            <element name="input" type="integer"/>
          </sequence>
        </complexType>
      </element>
      <element name="incrementResponse">
        <complexType>
          <sequence>
            <element name="result" type="integer"/>
          </sequence>
        </complexType>
      </element>
    </schema>
  </wsdl:types>
  <wsdl:message name="incrementResponse">
    <wsdl:part element="tns:incrementResponse" name="incrementResponse"></wsdl:part>
  </wsdl:message>
  <wsdl:message name="incrementRequest">
    <wsdl:part element="tns:incrementRequest" name="incrementRequest"></wsdl:part>
  </wsdl:message>
  <wsdl:portType name="increment">
    <wsdl:operation name="increment">
      <wsdl:input message="tns:incrementRequest" name="incrementRequest"></wsdl:input>
      <wsdl:output message="tns:incrementResponse" name="incrementResponse"></wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="incrementSoap11" type="tns:increment">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="increment">
      <soap:operation soapAction=""/>
      <wsdl:input name="incrementRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="incrementResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="incrementService">
    <wsdl:port binding="tns:incrementSoap11" name="incrementSoap11">
      <soap:address location="http://localhost:8080/increment"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>]]></con:content><con:type>http://schemas.xmlsoap.org/wsdl/</con:type></con:part></con:definitionCache><con:endpoints><con:endpoint>http://localhost:8080/increment</con:endpoint></con:endpoints><con:operation isOneWay="false" action="" name="increment" bindingOperationName="increment" type="Request-Response" outputName="incrementResponse" inputName="incrementRequest" receivesAttachments="false" sendsAttachments="false" anonymous="optional"><con:settings/><con:call name="ExampleRequest"><con:settings><con:setting id="com.eviware.soapui.impl.wsdl.WsdlRequest@request-headers">&lt;xml-fragment/></con:setting></con:settings><con:encoding>UTF-8</con:encoding><con:endpoint>http://localhost:8080/increment</con:endpoint><con:request><![CDATA[<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:inc="http://camel.apache.org/example/increment">
   <soapenv:Header/>
   <soapenv:Body>
      <inc:incrementRequest>
         <inc:input>42</inc:input>
      </inc:incrementRequest>
   </soapenv:Body>
</soapenv:Envelope>]]></con:request><con:jmsConfig JMSDeliveryMode="PERSISTENT"/><con:jmsPropertyConfig/><con:wsaConfig mustUnderstand="NONE" version="200508" action="http://camel.apache.org/example/increment/Increment/incrementRequest"/><con:wsrmConfig version="1.2"/></con:call></con:operation></con:interface><con:properties/><con:wssContainer/></con:soapui-project>