<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="rendezvous" xmlns:impl="rendezvous" xmlns:intf="rendezvous" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
 <wsdl:types>
  <schema >
   <complexType name="provider">
      <documentation>
          A service provider indicates the URI endpoint and the encoding
          for messages used with that service.  For example, a provider
          might have a URI of http://my.domain.com:8080/axis and an
          encoding of 'soap'.  Another provider might have a URI of
          http://my.domain.com:8081/foo and an encoding of 'xmlrpc'.
          In this manner, all sorts of endpoints and encodings can
          be used to describe how to access a service.
      </documentation>
      <sequence>
          <element name="uri" type="xsd:string" nillable="false" />
          <element name="encoding" type="xsd:string" nillable="false" />
      </sequence>
   </complexType>

   <complexType name="ServiceDescriptor">
    <documentation>
        The service descriptor is the structure that describes all
        of the information about a service, including its providers (uri
        and encoding), name, wsdl, and more.  An arbitrary list of key-value
        pairs can be used to add additional information to a service.
    </documentation>
    <sequence>
     <element name="endpoint" nillable="false" type="impl:provider" minOccurs="1" maxOccurs="unbounded"/>
     <element name="provider_dn" nillable="true" type="xsd:string"/>
     <element name="registrant" nillable="true" type="xsd:string"/>
     <element name="name" nillable="true" type="xsd:string"/>
     <element name="vo" nillable="true" type="xsd:string"/>
     <element name="age" nillable="true" type="xsd:long"/>
     <element name="expire" nillable="true" type="xsd:long"/>
     <element name="description" nillable="true" type="xsd:string"/>
     <element name="wsdl" nillable="true" type="xsd:string"/>
     <element name="wsdl_signature" nillable="true" type="xsd:string"/>
     <element name="major_version" nillable="true" type="xsd:int"/>
     <element name="minor_version" nillable="true" type="xsd:int"/>
     <element name="item" minOccurs="0" maxOccurs="unbounded">
        <complexType>
            <all>
                <element name="key" type="xsd:string" />
                <element name="value" type="xsd:anyType" />
            </all>
        </complexType>
    </element>
    </sequence>
   </complexType>

   <complexType name="ArrayOf_ServiceDescriptor">
    <complexContent>
     <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="impl:ServiceDescriptor[]"/>
     </restriction>
    </complexContent>
   </complexType>
  </schema>
 </wsdl:types>

   <wsdl:message name="findServerRequest">
      <wsdl:part name="protocol_pattern" type="xsd:string"/>
      <wsdl:part name="provider_uri_pattern" type="xsd:string"/>
      <wsdl:part name="dn_pattern" type="xsd:string"/>
      <wsdl:part name="vo_pattern" type="xsd:string"/>
      <wsdl:part name="page_size" type="xsd:int"/>
      <wsdl:part name="page_num" type="xsd:int"/>
   </wsdl:message>

   <wsdl:message name="findServerResponse">
      <wsdl:part name="findReturn" type="impl:ArrayOf_ServiceDescriptor"/>
   </wsdl:message>

   <wsdl:message name="findRequest">
      <wsdl:part name="protocol_pattern" type="xsd:string"/>
      <wsdl:part name="provider_uri_pattern" type="xsd:string"/>
      <wsdl:part name="dn_pattern" type="xsd:string"/>
      <wsdl:part name="vo_pattern" type="xsd:string"/>
      <wsdl:part name="name_pattern" type="xsd:string"/>
      <wsdl:part name="page_size" type="xsd:int"/>
      <wsdl:part name="page_num" type="xsd:int"/>
   </wsdl:message>

   <wsdl:message name="registerResponse">
      <wsdl:part name="registerReturn" type="xsd:int"/>
   </wsdl:message>

   <wsdl:message name="registerRequest">
      <wsdl:part name="services" type="impl:ArrayOf_ServiceDescriptor"/>
   </wsdl:message>

   <wsdl:message name="findResponse">
      <wsdl:part name="findReturn" type="impl:ArrayOf_ServiceDescriptor"/>
   </wsdl:message>

   <wsdl:message name="deregisterResponse">
      <wsdl:part name="deregisterReturn" type="xsd:int"/>
   </wsdl:message>

   <wsdl:message name="deregisterRequest">
      <wsdl:part name="services" type="impl:ArrayOf_ServiceDescriptor"/>
   </wsdl:message>

   <wsdl:message name="findResponse1">
      <wsdl:part name="findReturn" type="impl:ArrayOf_ServiceDescriptor"/>
   </wsdl:message>

   <wsdl:portType name="rendezvous">
      <wsdl:operation name="register" parameterOrder="services">
         <documentation>
             Add a service description to the registry.
         </documentation>
         <wsdl:input name="registerRequest" message="impl:registerRequest"/>
         <wsdl:output name="registerResponse" message="impl:registerResponse"/>
      </wsdl:operation>

      <wsdl:operation name="find_server" parameterOrder="protocol_pattern provider_uri_pattern dn_pattern vo_pattern page_size page_num">
         <documentation>
             Find service providers (endpoints and encodings) that can be
             used to call a service.  Only the endpoint field of the
             returned service descriptor is filled in.  The other fields
             may be either missing, null, or an empty string.
         </documentation>
         <wsdl:input name="findServerRequest" message="impl:findServerRequest"/>
         <wsdl:output name="findServerResponse" message="impl:findServerResponse"/>
      </wsdl:operation>

      <wsdl:operation name="find" parameterOrder="protocol_pattern provider_uri_pattern dn_pattern vo_pattern name_pattern page_size page_num">
         <documentation>
            Find a list of services that match a particular input query.
            Services can be selected based on their name, virtual
            organization, endpoint uri and/or encoding, and/or server
            certificate dn.
         </documentation>
         <wsdl:input name="findRequest" message="impl:findRequest"/>
         <wsdl:output name="findResponse" message="impl:findResponse"/>
      </wsdl:operation>

      <wsdl:operation name="deregister" parameterOrder="services">
         <documentation>
             Remove one or more services from the registry.  The input
             service descriptors are used to select services to remove.
             If a particular field (such as minor_version) is null, or
             has a value of '*' or an empty string, then that field is not
             used to select matching services.  A '*' can be used as part
             of a String field to select matching services.  For example,
             'uri=http://*.caltech.edu' will remove all services that
             are provided by servers in the caltech.edu domain.
             'uri=*' will not remove all services with a uri, but instead
             indicate that the uri is not used to select services to remove.
         </documentation>
         <wsdl:input name="deregisterRequest" message="impl:deregisterRequest"/>
         <wsdl:output name="deregisterResponse" message="impl:deregisterResponse"/>
      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="rendezvousSoapBinding" type="impl:rendezvous">
      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="register">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="registerRequest">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:input>
         <wsdl:output name="registerResponse">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:output>
      </wsdl:operation>

      <wsdl:operation name="find_server">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="findServerRequest">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:input>

         <wsdl:output name="findServerResponse">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:output>
      </wsdl:operation>

      <wsdl:operation name="find">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="findRequest">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:input>

         <wsdl:output name="findResponse">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:output>
      </wsdl:operation>

      <wsdl:operation name="deregister">
         <wsdlsoap:operation soapAction=""/>
         <wsdl:input name="deregisterRequest">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:input>
         <wsdl:output name="deregisterResponse">
            <wsdlsoap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="rendezvous"/>
         </wsdl:output>
      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="rendezvousService">
      <wsdl:port name="rendezvous" binding="impl:rendezvousSoapBinding">
         <wsdlsoap:address location="http://pccit10.cern.ch:8080/rendezvous"/>
      </wsdl:port>
   </wsdl:service>

</wsdl:definitions>
