<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="http://test.com/wsdl/faults" 
     xmlns:tns="http://test.com/wsdl/faults"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:serviceNS="http://test.com/wsdl/faults"
     xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
     xmlns="http://schemas.xmlsoap.org/wsdl/">

  <types>
    <xsd:schema 
        targetNamespace="http://test.com/wsdl/faults">
      <xsd:complexType name="baseFault">
        <xsd:sequence>
          <xsd:element name="a" type="xsd:int"/>
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="derivedFault">
        <xsd:complexContent>
          <xsd:extension base="tns:baseFault">
            <xsd:sequence>
              <xsd:element name="b" type="xsd:string"/>
            </xsd:sequence>
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>

     <xsd:complexType name="derivedFault2">
        <xsd:complexContent>
          <xsd:extension base="tns:derivedFault">
            <xsd:sequence>
              <xsd:element name="c" type="xsd:float"/>
            </xsd:sequence>
          </xsd:extension>
        </xsd:complexContent>
      </xsd:complexType>

    <xsd:complexType name="extensionFault">
        <xsd:sequence>
          <xsd:element name="extension" type="tns:ExtensionType"/>
        </xsd:sequence>
      </xsd:complexType>

    <xsd:complexType name="ExtensionType">
      <xsd:sequence>
        <xsd:any namespace="##any"/>
      </xsd:sequence>
    </xsd:complexType>

    </xsd:schema>
  </types>

  <message name="getQuoteResponse">
    <part name="getQuoteResult" type="xsd:float"/>
  </message>
  <message name="getQuoteRequest">
    <part name="tickerSymbol" type="xsd:string"/>
  </message>
  <message name="InvalidTickerFaultMessage">
    <part name="tickerSymbol" type="xsd:string"/>
  </message>

  <message name="throwFaultResponse">
    <part name="return" type="xsd:int"/>
  </message>
  <message name="throwFaultRequest">
    <part name="a" type="xsd:int"/>
    <part name="b" type="xsd:string"/>
    <part name="c" type="xsd:float"/>
  </message>
  <message name="throwFaultFault">
    <part name="theFault" type="tns:derivedFault" />
  </message>
  <message name="throwExtensionFaultResponse">
    <part name="return" type="xsd:int"/>
  </message>
  <message name="throwExtensionFaultRequest">
    <part name="description" type="xsd:string"/>
  </message>
  <message name="throwExtensionFaultFault">
    <part name="theFault" type="tns:extensionFault" />
  </message>

  <portType name="FaultServicePortType">
    <operation name="getQuote">
      <input message="serviceNS:getQuoteRequest"/>
      <output message="serviceNS:getQuoteResponse"/>
      <fault name="InvalidTickerFaultMessage" message="serviceNS:InvalidTickerFaultMessage"/>
    </operation>
    <operation name="throwFault">
      <input message="serviceNS:throwFaultRequest"/>
      <output message="serviceNS:throwFaultResponse"/>
      <fault name="throwFaultFault" message="serviceNS:throwFaultFault"/>
    </operation>
    <operation name="throwExtensionFault">
      <input message="serviceNS:throwExtensionFaultRequest"/>
      <output message="serviceNS:throwExtensionFaultResponse"/>
      <fault name="throwExtensionFaultFault" message="serviceNS:throwExtensionFaultFault"/>
    </operation>
  </portType>
  <binding name="FaultServiceSoapBinding" type="serviceNS:FaultServicePortType">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="getQuote">
      <soap:operation soapAction="" style="rpc"/>
      <input>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace=""/>
      </input>
      <output>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace=""/>
      </output>
      <fault name="InvalidTickerFaultMessage">
        <soap:fault name="InvalidTickerFaultMessage" use="encoded"/>
      </fault>
    </operation>
    <operation name="throwFault">
      <soap:operation soapAction="" style="rpc"/>
      <input>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace=""/>
      </input>
      <output>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace=""/>
      </output>
      <fault name="throwFaultFault">
        <soap:fault name="throwFaultFault" use="encoded"/>
      </fault>
    </operation>
     <operation name="throwExtensionFault">
      <soap:operation soapAction="" style="rpc"/>
      <input>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace=""/>
      </input>
      <output>
        <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace=""/>
      </output>
      <fault name="throwExtensionFaultFault">
        <soap:fault name="throwExtensionFaultFault" use="encoded"/>
      </fault>
    </operation>
  </binding>
  <service name="FaultService">
    <port name="FaultService" binding="serviceNS:FaultServiceSoapBinding">
      <soap:address location="http://localhost:8080/axis/services/FaultService"/>
    </port>
  </service>
</definitions>
