<definitions targetNamespace="http://www.it.uc3m.es/jaf/ns/OliveOilService"
    xmlns:tns="http://www.it.uc3m.es/jaf/ns/OliveOilService"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.xmlsoap.org/wsdl/">

  <types>
    <xsd:schema targetNamespace="http://www.it.uc3m.es/jaf/ns/OliveOilService"
      xmlns:tns="http://www.it.uc3m.es/jaf/ns/OliveOilService"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      
      <xsd:complexType name="OliveOilRequestT">
	<xsd:sequence>
	  <xsd:element name="quantity" type="xsd:integer" />
	  <xsd:element name="maxPrice" type="xsd:integer" />
	  <xsd:element name="deadline" type="xsd:integer" />
	  <xsd:element name="customerId" type="xsd:string" />
	</xsd:sequence>
      </xsd:complexType>
      
      <xsd:simpleType name="OilTypeT">
	<xsd:restriction base="xsd:string">
	  <xsd:enumeration value="olive"/>
	  <xsd:enumeration value="soja"/>
	  <xsd:enumeration value="sunflower"/>
	</xsd:restriction>
      </xsd:simpleType>
      
    </xsd:schema>
  </types>
  
  <message name="OliveOilRequest">
    <part name="request" type="tns:OliveOilRequestT"/>
  </message>
  
  <message name="OliveOilResponse">
    <part name="request" type="tns:OliveOilRequestT"/>
    <part name="ordered" type="xsd:boolean"/>
    <part name="price" type="xsd:integer"/>
    <part name="totalPrice" type="xsd:integer"/>
    <part name="waitingDays" type="xsd:integer"/>
  </message>
  
  <message name="OilOrder">
    <part name="quantity" type="xsd:integer" />
    <part name="customerId" type="xsd:string" />
    <part name="oilType" type="tns:OilTypeT"/>
  </message>
  
  <message name="OilConfirmation">
    <part name="accepted" type="xsd:boolean"/>
  </message>
  
  <message name="OilPriceResponse">
    <part name="price" type="xsd:integer"/>
  </message>
  
  <portType name="OliveOilService">
    <operation name="order">
      <input message="tns:OliveOilRequest" />
      <output message="tns:OliveOilResponse" />
      <fault name="tns:OliveOilFault" />
      </operation>
  </portType>
  
  <portType name="OilProviderService">
    <operation name="order">
      <input message="tns:OilOrder" />
      <output message="tns:OilConfirmation" />
      <fault name="tns:OilFault" />
    </operation>
    <operation name="getPrice">
      <input message="tns:OilOrder" />
      <output message="tns:OilPriceResponse" />
      <fault name="tns:OilFault" />
    </operation>
  </portType>
  
  <plnk:partnerLinkType name="OliveOilLnk">
    <plnk:role name="provider">
      <plnk:portType name="tns:OliveOilService" />
    </plnk:role>
  </plnk:partnerLinkType>
  
  <plnk:partnerLinkType name="OilProviderLnk">
    <plnk:role name="provider">
      <plnk:portType name="tns:OilProviderService" />
    </plnk:role>
  </plnk:partnerLinkType>
  
</definitions>
