<!--

    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:complexType name="Test1ResponseType">
        <xsd:sequence>
            <xsd:element name="c" type="xsd:int"/>
            <xsd:element name="d" type="xsd:int"/>
        </xsd:sequence>
      </xsd:complexType>

      <!-- Case 1A -->
      <xsd:complexType name="Root1AType">
        <xsd:sequence>
          <xsd:element name="data1a" type="xsd:string"/>
        </xsd:sequence>
      </xsd:complexType>

      <!-- Case 1A Simple-->
      <xsd:simpleType name="Root1ATypeSimple">
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="oneASimple1" />
          <xsd:enumeration value="oneASimple2" />
        </xsd:restriction>
      </xsd:simpleType>

      <!-- Case 2B -->
      <xsd:complexType name="Root2BType">
        <xsd:sequence>
          <xsd:element name="Inside2B">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="data2b" type="xsd:string"/>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:complexType>

        <xsd:complexType name="Root3AType">
          <xsd:sequence>
            <xsd:element name="Inside3A1" minOccurs="1" maxOccurs="2">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="data3a1" type="xsd:string"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
            <xsd:element name="Inside3A2" maxOccurs="unbounded">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:element name="data3a2" type="xsd:string"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>

    </xsd:schema>
  </types>

  <message name="TestRequest1A">
    <part name="oneA" type="ttns:Root1AType"/>
  </message>

  <message name="TestRequest1ASimple">
    <part name="oneA" type="ttns:Root1ATypeSimple"/>
  </message>

  <message name="TestRequest2B">
    <part name="twoB" type="ttns:Root2BType"/>
  </message>

  <message name="TestRequest3A">
    <part name="threeA" type="ttns:Root3AType"/>
  </message>

  <message name="Test1Response">
    <part name="result" type="ttns:Test1ResponseType"/>
  </message>  

  <portType name="Test1A">
    <operation name="test1">
      <input message="tns:TestRequest1A"/>
      <output message="tns:Test1Response"/>
    </operation>  
  </portType>

  <portType name="Test1ASimple">
    <operation name="test1">
      <input message="tns:TestRequest1ASimple"/>
      <output message="tns:Test1Response"/>
    </operation>  
  </portType>

  <portType name="Test2B">
    <operation name="test1">
      <input message="tns:TestRequest2B"/>
      <output message="tns:Test1Response"/>
    </operation>  
  </portType>

  <portType name="Test3A">
    <operation name="test1">
      <input message="tns:TestRequest3A"/>
      <output message="tns:Test1Response"/>
    </operation>  
  </portType>

  <binding name="TestBinding1A" type="tns:Test1A">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="test1">
      <soap:operation soapAction=""/>
      <input> <soap:body use="literal" namespace="urn:test:types"/> </input>
      <output> <soap:body use="literal" namespace="urn:test:types"/> </output>
    </operation>      
  </binding>

  <binding name="TestBinding1ASimple" type="tns:Test1ASimple">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="test1">
      <soap:operation soapAction=""/>
      <input> <soap:body use="literal" namespace="urn:test:types"/> </input>
      <output> <soap:body use="literal" namespace="urn:test:types"/> </output>
    </operation>      
  </binding>

  <binding name="TestBinding2B" type="tns:Test2B">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="test1">
      <soap:operation soapAction=""/>
      <input> <soap:body use="literal" namespace="urn:test:types"/> </input>
      <output> <soap:body use="literal" namespace="urn:test:types"/> </output>
    </operation>      
  </binding>

  <binding name="TestBinding3A" type="tns:Test3A">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="test1">
      <soap:operation soapAction=""/>
      <input> <soap:body use="literal" namespace="urn:test:types"/> </input>
      <output> <soap:body use="literal" namespace="urn:test:types"/> </output>
    </operation>      
  </binding>

  <service name="TestService">
    <port name="TestPort1A" binding="tns:TestBinding1A">
      <soap:address location="http://test.org/test"/>
    </port>
    <port name="TestPort1ASimple" binding="tns:TestBinding1ASimple">
      <soap:address location="http://test.org/test"/>
    </port>
    <port name="TestPort2B" binding="tns:TestBinding2B">
      <soap:address location="http://test.org/test"/>
    </port>
    <port name="TestPort3A" binding="tns:TestBinding3A">
      <soap:address location="http://test.org/test"/>
    </port>
  </service>
  
</definitions>
