<!--

    Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<definitions
  name="HelloTest"
  targetNamespace="urn:test"
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:ttns="urn:test:types"
  xmlns:tns="urn:test">
  
  <types>
    <xsd:schema targetNamespace="urn:test:types">

      <xsd:element name="Test1Request" type="ttns:Test1RequestType"/>
      <xsd:complexType name="Test1RequestType">
        <xsd:sequence>
            <xsd:element name="a" type="xsd:int"/>
<!-- XXX BUG.  Can't handle this
            <xsd:element name="b" type="ttns:ComplexTypeSimpleContentType"/>
-->
            <xsd:element name="c" type="ttns:SingleWildcardType"/>
            <xsd:element name="d" type="ttns:RepeatedWildcardType"/>
        </xsd:sequence>
      </xsd:complexType>

      <xsd:element name="Test1Response" type="ttns:Test1ResponseType"/>
      <xsd:complexType name="Test1ResponseType">
        <xsd:sequence>
            <xsd:element name="a" type="xsd:int"/>
        </xsd:sequence>
      </xsd:complexType>

<!-- XXX BUG.  Can't handle this.
      <xsd:complexType name="ComplexTypeSimpleContentType">
        <xsd:simpleContent>
	  <xsd:extension base="xsd:string">
	    <xsd:attribute name="foo" type="xsd:int"/>
	  </xsd:extension>
        </xsd:simpleContent>
      </xsd:complexType>
-->

      <xsd:complexType name="SingleWildcardType">
        <xsd:sequence>
	  <xsd:element name="foo" type="xsd:int"/>
	  <xsd:element name="bar" type="xsd:string"/>
	  <xsd:element name="voo" type="xsd:string"/>
<!-- XXX BUG.  How to write the client??
	  <xsd:any namespace="##other" processContents="lax"/>
-->
	</xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="RepeatedWildcardType">
        <xsd:sequence>
	  <xsd:element name="foo" type="xsd:int"/>
	  <xsd:element name="bar" type="xsd:string"/>
	  <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
	</xsd:sequence>
      </xsd:complexType>

    </xsd:schema>
  </types>

  <message name="Test1Request">
    <part name="params" element="ttns:Test1Request"/>
  </message>
  
  <message name="Test1Response">
    <part name="result" element="ttns:Test1Response"/>
  </message>  
  
  <portType name="Test">
    <operation name="test1">
      <input message="tns:Test1Request"/>
      <output message="tns:Test1Response"/>
    </operation>  
  </portType>
  
  <binding name="TestBinding" type="tns:Test">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="test1">
      <soap:operation soapAction="urn:test:hello"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>      
  </binding>
    
  <service name="TestService">
    <port name="TestPort" binding="tns:TestBinding">
      <soap:address location="http://test.org/test"/>
    </port>
  </service>
  
</definitions>
