<?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.
  -->
<!-- This is a modified version of the WSDL attached to AXIS2-5147 -->
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                  xmlns:data="http://www.example.org/data" 
                  xmlns:tns="http://www.example.org/ws" 
                  name="ExampleTransactionWS" 
                  targetNamespace="http://www.example.org/ws">
    <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                    attributeFormDefault="unqualified" 
                    elementFormDefault="qualified" 
                    targetNamespace="http://www.example.org/data">
            <xsd:element name="requestMessage">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element minOccurs="0" name="requestID" type="xsd:string"/>
                        <xsd:element minOccurs="0" name="requestData" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="replyMessage">
                <xsd:complexType>
                    <xsd:sequence>          
                        <xsd:element minOccurs="0" name="replyID" type="xsd:string"/>
                        <xsd:element minOccurs="0" name="replyData" type="xsd:string"/>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="messageIn">
        <wsdl:part element="data:requestMessage" name="input"/>
    </wsdl:message>
    <wsdl:message name="messageOut">
        <wsdl:part element="data:replyMessage" name="result"/>
    </wsdl:message>
    <wsdl:portType name="Processor">
        <wsdl:operation name="runTransaction">
            <wsdl:input message="tns:messageIn" name="inputMessageIn"/>
            <wsdl:output message="tns:messageOut" name="outputMessageOut"/>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="ProcessorSOAP" type="tns:Processor">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsdl:operation name="runTransaction">
            <soap:operation soapAction="runTransaction" style="document"/>
            <wsdl:input name="inputMessageIn">
                <soap:body use="literal"/>
            </wsdl:input>
            <wsdl:output name="outputMessageOut">
                <soap:body use="literal"/>
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="Processor">
        <wsdl:port binding="tns:ProcessorSOAP" name="ProcessorSOAP">
            <soap:address location="https://127.0.0.1/processor"/>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>
