<?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:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://resourceinjection.sample.test.org" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="ResourceInjection" targetNamespace="http://resourceinjection.sample.test.org">
  <wsdl:types>
    <xsd:schema targetNamespace="http://resourceinjection.sample.test.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="testInjectionResponse">
      	<xsd:complexType>
      		<xsd:sequence>
      			<xsd:element name="response" type="xsd:string"></xsd:element>
      		</xsd:sequence>
      	</xsd:complexType>
      </xsd:element>
      <xsd:element name="testInjection">
      	<xsd:complexType>
      		<xsd:sequence>
      			<xsd:element name="arg" type="xsd:string"></xsd:element>
      		</xsd:sequence>
      	</xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="testInjectionResponse">
    <wsdl:part element="tns:testInjectionResponse" name="testInjectionResponse"/>
  </wsdl:message>
  <wsdl:message name="testInjection">
    <wsdl:part element="tns:testInjection" name="testInjection"/>
  </wsdl:message>
  <wsdl:portType name="ResourceInjectionPortType">
    <wsdl:operation name="testInjection">
      <wsdl:input message="tns:testInjection"/>
      <wsdl:output message="tns:testInjectionResponse"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="ResourceInjectionBinding" type="tns:ResourceInjectionPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="testInjection">
      <soap:operation soapAction="http://resourceinjection.sample.test.org/testInjection"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="ResourceInjectionService">
    <wsdl:port binding="tns:ResourceInjectionBinding" name="ResourceInjectionPort">
      <soap:address location="http://localhost:6060/axis2/services/ResourceInjectionService"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>