<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<!-- WSDL description of the WSS Ping interop scenarios -->

<definitions name="Echo"
    targetNamespace="http://ws.apache.org/axis2/tests"
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
    xmlns:tns="http://ws.apache.org/axis2/tests"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    xmlns:intf="http://ws-policy.tests">
    	  
  <types>
    <schema targetNamespace="http://ws.apache.org/axis2/tests"
         xmlns="http://www.w3.org/2001/XMLSchema">
      <complexType name="echo">
        <sequence>
          <element name="text" type="xsd:string" nillable="true"/>
                 </sequence>
      </complexType>
      <complexType name="echoResponse">
        <sequence>
          <element name="text" type="xsd:string" nillable="true"/>
                 </sequence>
      </complexType>
      <element name="Echo" type="tns:echo"/>
      <element name="EchoResponse" type="tns:echoResponse"/>
    </schema>
  </types>

  <message name="EchoRequest">
    <part name="echo" element="tns:Echo"/>
  </message>

  <message name="EchoResponse">
    <part name="echoResponse" element="tns:EchoResponse"/>
  </message>

  <portType name="EchoPort">
    <operation name="Echo">
      <input  message="tns:EchoRequest" wsa:Action="http://tests.org/echo/in" />
      <output message="tns:EchoResponse" wsa:Action="http://tests.org/echo/out" />
    </operation>
  </portType>

  <binding name="EchoBinding" type="tns:EchoPort">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
    <operation name="Echo">
      <soap:operation soapAction="http://ws.apache.org/axis2/tests/echo"/>
      <input> 
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
   
  <service name="EchoService">
    <port name="EchoPort" binding="tns:EchoBinding">
      <soap:address location="http://localhost:6060/axis2/services/EchoService"/>
    </port>
  </service>

</definitions>
