Srinath and folks

So here is an idea for WSDL generation (http://blah/service?wsdl).

We can reflect on the component and easily find the operations. So we could create a WSDL which gives details of the operations, but the schemas are all simply complextypes that devolve to xsd:any.

Of course if the user has a real WSDL they could provide it. But this way, even if there is no WSDL we can give the user enough information - via WSDL - to know the URL, the binding type (doc/lit etc) and the operations.

Here is an example WSDL (rough only)...

<?xml version="1.0" encoding="utf-8"?>
  <types>
    <s:schema>
      <s:element name="GetQuotes">
        <s:complexType>
          <s:any/>
        </s:complexType>
      </s:element>
      <s:element name="GetQuotesResponse">
        <s:complexType>
          <s:any/>
        </s:complexType>
      </s:element>
    </s:schema>

  </types>
  <message name="GetQuotesSoapIn">
    <part name="parameters" element="s0:GetQuotes" />
  </message>
  <message name="GetQuotesSoapOut">
    <part name="parameters" element="s0:GetQuotesResponse" />
  </message>
  <portType name="GetQuoteSOAP">
    <operation name="GetQuotes">
      <input message="s0:GetQuotesSoapIn" />
      <output message="s0:GetQuotesSoapOut" />
    </operation>
  </portType>
  <binding name="GetQuotesSoapBinding" type="s0:GetQuotesSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    <operation name="GetQuotes">
      <soap:operation soapAction="http://wso2.com/GetQuotes" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
        <soap:header message="s0:GetQuotesResponseInfo" part="ResponseInfo" use="literal" />
      </output>
    </operation>
  </binding>
  <service name="Quotes">
    <port name="QuotesSoap" binding="s0:getQuotesSoapBinding">
      <soap:address location="http://wso2.com/GetQuotes" />
    </port>
  </service>
</definitions>

Reply via email to