<?xml version="1.0" encoding="UTF-8"?>
<definitions name="SwaTestService"
  targetNamespace="http://SwaTestService.org/wsdl"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://SwaTestService.org/wsdl"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:s="http://SwaTestService.org/xsd"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

  <types>
    <schema targetNamespace="http://SwaTestService.org/xsd" 
      xmlns:tns="http://SwaTestService.org/xsd"
      xmlns="http://www.w3.org/2001/XMLSchema"
      xmlns:ref="http://ws-i.org/profiles/basic/1.1/xsd"
      elementFormDefault="qualified">
      <import namespace="http://ws-i.org/profiles/basic/1.1/xsd" schemaLocation="WS-ISwA.xsd"/>
      <element name="InputRequestGet" type="tns:InputRequestGet"/>
      <complexType name="InputRequestGet">
	<sequence>
          <element name="mimeType1" type="string"/>
          <element name="mimeType2" type="string"/>
          <element name="url1" type="string"/>
          <element name="url2" type="string"/>
	</sequence>
      </complexType>
      <element name="InputRequestPut" type="tns:InputRequestPut"/>
      <complexType name="InputRequestPut">
	<sequence>
          <element name="mimeType1" type="string"/>
          <element name="mimeType2" type="string"/>
          <element name="header" type="string"/>
	</sequence>
      </complexType>
      <element name="InputRequest" type="tns:InputRequest"/>
      <complexType name="InputRequest">
	<sequence>
          <element name="mimeType1" type="string"/>
          <element name="mimeType2" type="string"/>
	</sequence>
      </complexType>
      <element name="InputRequestThrowAFault" type="tns:InputRequestThrowAFault"/>
      <complexType name="InputRequestThrowAFault">
	<sequence>
          <element name="mimeType1" type="string"/>
          <element name="mimeType2" type="string"/>
	</sequence>
      </complexType>
      <element name="InputRequestWithHeader" type="tns:InputRequestWithHeader"/>
      <complexType name="InputRequestWithHeader">
	<sequence>
          <element name="mimeType1" type="string"/>
          <element name="mimeType2" type="string"/>
	</sequence>
      </complexType>
      <element name="InputRequestString" type="tns:InputRequestString"/>
      <complexType name="InputRequestString">
	<sequence>
          <element name="myString" type="string"/>
	</sequence>
      </complexType>
      <element name="OutputResponse" type="tns:OutputResponse"/>
      <complexType name="OutputResponse">
	<sequence>
          <element name="mimeType1" type="string"/>
          <element name="mimeType2" type="string"/>
          <element name="result" type="string"/>
          <element name="reason" type="string"/>
	</sequence>
      </complexType>
      <element name="OutputResponseString" type="tns:OutputResponseString"/>
      <complexType name="OutputResponseString">
        <sequence>
          <element name="myString" type="string"/>
        </sequence>
      </complexType>
      <element name="MyHeader" type="tns:MyHeader"/>
      <complexType name="MyHeader">
        <sequence>
            <annotation>
                <documentation>
                        This is my header
                </documentation>
            </annotation>
            <element name="message" type="string"/>
        </sequence>
      </complexType>
      <element name="MyFaultReason" type="tns:MyFaultType"/>
      <complexType name="MyFaultType">
        <sequence>
            <annotation>
                <documentation>
                        This is my fault
                </documentation>
            </annotation>
            <element name="message" type="string"/>
        </sequence>
      </complexType>
      <element name="VoidRequest" type="tns:VoidRequest"/>
      <complexType name="VoidRequest">
	<sequence/>
      </complexType>
      <element name="OutputResponseAll" type="tns:OutputResponseAll"/>
      <complexType name="OutputResponseAll">
	<sequence>
          <element name="result" type="string"/>
          <element name="reason" type="string"/>
	</sequence>
      </complexType>
    </schema>
  </types>

  <message name="messageInputGet">
    <part name="request" element="s:InputRequestGet"/>
  </message>

  <message name="messageInputPut">
    <part name="request" element="s:InputRequestPut"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
  </message>

  <message name="messageInput">
    <part name="request" element="s:InputRequest"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
  </message>

  <message name="messageInputThrowAFault">
    <part name="request" element="s:InputRequestThrowAFault"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
  </message>

  <message name="messageInputNoAttachments">
    <part name="request" element="s:InputRequestString"/>
  </message>

  <message name="messageInputAllAttachmentTypes">
    <part name="request" element="s:VoidRequest"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
    <part name="attach3" type="xsd:string"/>
    <part name="attach4" type="xsd:base64Binary"/>
    <part name="attach5" type="xsd:base64Binary"/>
  </message>

  <message name="messageInputWithHeader">
    <part name="request" element="s:InputRequestWithHeader"/>
    <part name="header" element="s:MyHeader"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
  </message>

  <message name="messageOutput">
    <part name="response" element="s:OutputResponse"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
  </message>

  <message name="messageOutputAllAttachmentTypes">
    <part name="response" element="s:OutputResponseAll"/>
    <part name="attach1" type="xsd:string"/>
    <part name="attach2" type="xsd:string"/>
    <part name="attach3" type="xsd:string"/>
    <part name="attach4" type="xsd:base64Binary"/>
    <part name="attach5" type="xsd:base64Binary"/>
  </message>

  <message name="messageOutputStringResponse">
    <part name="response" element="s:OutputResponseString"/>
  </message>

  <message name="MyFault">
    <part name="MyFault" element="s:MyFaultReason"/>
  </message>

  <message name="MyHeaderFault">
    <part name="MyHeaderFault" element="s:MyHeaderFaultReason"/>
  </message>

  <portType name="SwaTest1">
    <operation name="getMultipleAttachments">
      <input message="tns:messageInputGet"/>
      <output message="tns:messageOutput"/>
    </operation>
    <operation name="putMultipleAttachments">
      <input message="tns:messageInputPut"/>
      <output message="tns:messageOutputStringResponse"/>
    </operation>
    <operation name="echoMultipleAttachments">
      <input message="tns:messageInput"/>
      <output message="tns:messageOutput"/>
    </operation>
    <operation name="echoNoAttachments">
      <input message="tns:messageInputNoAttachments"/>
      <output message="tns:messageOutputStringResponse"/>
    </operation>
    <operation name="echoAllAttachmentTypes">
      <input message="tns:messageInputAllAttachmentTypes"/>
      <output message="tns:messageOutputAllAttachmentTypes"/>
    </operation>
    <operation name="echoAttachmentsAndThrowAFault">
      <input message="tns:messageInputThrowAFault"/>
      <output message="tns:messageOutput"/>
      <fault name="MyFault" message="tns:MyFault"/>
    </operation>
    <operation name="echoAttachmentsWithHeader">
      <input message="tns:messageInputWithHeader"/>
      <output message="tns:messageOutput"/>
      <fault name="MyFault" message="tns:MyFault"/>
    </operation>
  </portType>

  <portType name="SwaTest2">
    <operation name="putMultipleAttachments">
      <input message="tns:messageInputPut"/>
      <output message="tns:messageOutputStringResponse"/>
    </operation>
    <operation name="echoNoAttachments">
      <input message="tns:messageInputNoAttachments"/>
      <output message="tns:messageOutputStringResponse"/>
    </operation>
  </portType>

  <binding name="SwaTestSoapBinding1" type="tns:SwaTest1">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="getMultipleAttachments">
      <soap:operation/>
        <input>
          <soap:body parts="request" use="literal"/>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="response" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
    </operation>
    <operation name="putMultipleAttachments">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
              <mime:content part="attach1" type="text/html"/>
              <mime:content part="attach1" type="text/xml"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/plain"/>
              <mime:content part="attach2" type="text/html"/>
              <mime:content part="attach2" type="text/xml"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
	  <soap:body use="literal" message="tns:messageOutputStringResponse" parts="response"/>
        </output>
    </operation>
    <operation name="echoMultipleAttachments">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
              <mime:content part="attach1" type="text/html"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/plain"/>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="response" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
              <mime:content part="attach1" type="text/html"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/plain"/>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
    </operation>
    <operation name="echoNoAttachments">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body use="literal" message="tns:messageOutputStringResponse" parts="response"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
    </operation>
    <operation name="echoAllAttachmentTypes">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach3" type="text/xml"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach4" type="image/jpeg"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach5" type="image/jpeg"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="response" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach3" type="text/xml"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach4" type="image/jpeg"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach5" type="image/jpeg"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
    </operation>
    <operation name="echoAttachmentsAndThrowAFault">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="response" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
	<fault name="MyFault">
	  <soap:fault name="MyFault" use="literal"/>
	</fault>
    </operation>
    <operation name="echoAttachmentsWithHeader">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
	      <soap:header part="header" use="literal" message="tns:messageInputWithHeader"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="response" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/html"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
	<fault name="MyFault">
	  <soap:fault name="MyFault" use="literal"/>
	</fault>
    </operation>
  </binding>

  <binding name="SwaTestSoapBinding2" type="tns:SwaTest2">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="putMultipleAttachments">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach1" type="text/plain"/>
              <mime:content part="attach1" type="text/html"/>
              <mime:content part="attach1" type="text/xml"/>
            </mime:part>
            <mime:part>
              <mime:content part="attach2" type="text/plain"/>
              <mime:content part="attach2" type="text/html"/>
              <mime:content part="attach2" type="text/xml"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
	  <soap:body use="literal" message="tns:messageOutputStringResponse" parts="response"/>
        </output>
    </operation>
    <operation name="echoNoAttachments">
      <soap:operation/>
        <input>
          <mime:multipartRelated>
            <mime:part>
              <soap:body parts="request" use="literal"/>
            </mime:part>
          </mime:multipartRelated>
        </input>
        <output>
          <mime:multipartRelated>
            <mime:part>
              <soap:body use="literal" message="tns:messageOutputStringResponse" parts="response"/>
            </mime:part>
          </mime:multipartRelated>
        </output>
    </operation>
  </binding>

  <service name="WSIDLSwaTestService">
    <port name="SwaTestOnePort" binding="tns:SwaTestSoapBinding1">
      <soap:address location="http://localhost:8080/WSIDLSwaTest/jaxws/SwaTestOne"/>
    </port>
    <port name="SwaTestTwoPort" binding="tns:SwaTestSoapBinding2">
      <soap:address location="http://localhost:8080/WSIDLSwaTest/jaxws/SwaTestTwo"/>
    </port>
  </service>
</definitions>
