<?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://geronimo.apache.org/calculator" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="CalculatorService" targetNamespace="http://geronimo.apache.org/calculator">
  <wsdl:types>
    <xs:schema xmlns:ns1="http://www.w3.org/2005/08/addressing" xmlns:tns="http://geronimo.apache.org/calculator" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://geronimo.apache.org/calculator">
      <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="http://www.w3.org/2006/03/addressing/ws-addr.xsd"/>
      <xs:element name="add" type="tns:add"/>
      <xs:element name="addResponse" type="tns:addResponse"/>
      <xs:element name="getEPR" type="tns:getEPR"/>
      <xs:element name="getEPRResponse" type="tns:getEPRResponse"/>
      <xs:element name="multiply" type="tns:multiply"/>
      <xs:element name="multiplyResponse" type="tns:multiplyResponse"/>
      <xs:complexType name="add">
        <xs:sequence>
          <xs:element name="arg0" type="xs:int"/>
          <xs:element name="arg1" type="xs:int"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="addResponse">
        <xs:sequence>
          <xs:element name="return" type="xs:int"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="getEPR">
        <xs:sequence/>
      </xs:complexType>
      <xs:complexType name="getEPRResponse">
        <xs:sequence>
          <xs:element minOccurs="0" name="return" type="ns1:EndpointReferenceType"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="multiply">
        <xs:sequence>
          <xs:element name="arg0" type="xs:int"/>
          <xs:element name="arg1" type="xs:int"/>
        </xs:sequence>
      </xs:complexType>
      <xs:complexType name="multiplyResponse">
        <xs:sequence>
          <xs:element name="return" type="xs:int"/>
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
  </wsdl:types>
  <wsdl:message name="multiply">
    <wsdl:part element="tns:multiply" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getEPRResponse">
    <wsdl:part element="tns:getEPRResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="addResponse">
    <wsdl:part element="tns:addResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="multiplyResponse">
    <wsdl:part element="tns:multiplyResponse" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="add">
    <wsdl:part element="tns:add" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:message name="getEPR">
    <wsdl:part element="tns:getEPR" name="parameters">
    </wsdl:part>
  </wsdl:message>
  <wsdl:portType name="Calculator">
    <wsdl:operation name="add">
      <wsdl:input message="tns:add">
    </wsdl:input>
      <wsdl:output message="tns:addResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getEPR">
      <wsdl:input message="tns:getEPR" wsaw:Action="http://geronimo.apache.org/calculator/CalculatorPortType/getmyepr">
    </wsdl:input>
      <wsdl:output message="tns:getEPRResponse">
    </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="multiply">
      <wsdl:input message="tns:multiply">
    </wsdl:input>
      <wsdl:output message="tns:multiplyResponse">
    </wsdl:output>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="CalculatorServiceSoapBinding" type="tns:Calculator">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="add">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getEPR">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="multiply">
      <soap:operation soapAction="" style="document"/>
      <wsdl:input>
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="CalculatorService">
    <wsdl:port binding="tns:CalculatorServiceSoapBinding" name="CalculatorPort">
      <soap:address location="http://localhost:8080/wsa-war/calculator"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>
