<?xml version="1.0" encoding="utf-8"?>
<!-- 
   Legal Disclaimer
	
   Copyright Notice
	
   (c) Copyright Akamai Technologies, 
       Computer Associates International, Inc., Fujitsu Limited, 
       Hewlett-Packard Development Company, 
       International Business Machines Corporation, SAP AG, 
       Sonic Software Corporation, Tibco Software Inc. and 
       The University of Chicago  2003, 2004  All rights reserved. 
       
-->
<wsdl:definitions name="WS-BrokeredNotification"
  xmlns="http://schemas.xmlsoap.org/wsdl/"
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing" 
  xmlns:wsp="http://schemas.xmlsoap.org/ws/2002/12/policy" 
  xmlns:wsbn=
 "http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification" 
  xmlns:wsnt=
 "http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseNotification"
  xmlns:wsrp=
 "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceProperties" 
  xmlns:wsrl=
 "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceLifetime" 
  targetNamespace=
 "http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification">
 
<!-- ========================== Imports =========================== --> 
   <wsdl:import 
       namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceProperties" 
       location=
"http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceProperties.wsdl" />
       
   <wsdl:import 
       namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceLifetime" 
       location=
"http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceLifetime.wsdl" />       
       
   <wsdl:import 
       namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseNotification" 
       location=
"http://www-106.ibm.com/developerworks/library/specification/ws-notification/WS-BaseN.wsdl" />

<!-- ===================== Types Definitions ====================== -->
   <wsdl:types>
      <xsd:schema 
        targetNamespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-BrokeredNotification"  >
 
         <xsd:include schemaLocation=
 "http://www-106.ibm.com/developerworks/library/specification/ws-notification/WS-BrokeredN.xsd" />
         
         <xsd:import 
            namespace=
            "http://schemas.xmlsoap.org/ws/2003/03/addressing"
            schemaLocation=
            "http://schemas.xmlsoap.org/ws/2003/03/addressing" 
         />

         <xsd:import namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-BaseNotification" 
              schemaLocation= 
  "http://www-106.ibm.com/developerworks/library/specification/ws-notification/WS-BaseN.xsd" 
         />

         <xsd:import namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceProperties" 
              schemaLocation= 
  "http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceProperties.xsd" 
         />

         <xsd:import 
            namespace=
  "http://www.ibm.com/xmlns/stdwip/web-services/WS-ResourceLifetime"
            schemaLocation= 
  "http://www-106.ibm.com/developerworks/webservices/library/ws-resource/WS-ResourceLifetime.xsd" 
         />
               
<!-- =============== Resource Property Related  =================== -->

<!-- ======== Resource Properties for NotificationBroker ========== -->
         <xsd:element name="NotificationBrokerRP" >
            <xsd:complexType>
               <xsd:sequence>
         <!-- From NotificationProducer -->
                  <xsd:element ref="wsnt:Topic"        
                               minOccurs="1" maxOccurs="unbounded" />
                  <xsd:element ref="wsnt:FixedTopicSet"        
                               minOccurs="1" maxOccurs="1" />
                  <xsd:element ref="wsnt:TopicExpressionDialects"
                               minOccurs="1" maxOccurs="unbounded" />
         <!-- NotificationBroker specific  -->
                  <xsd:element ref="wsbn:RequiresRegistration"        
                               minOccurs="1" maxOccurs="1" />        
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>
 
<!-- ====== Resource Properties for PublisherRegistration ========= -->
         <xsd:element name="PublisherRegistrationRP" >
            <xsd:complexType>
               <xsd:sequence>
         <!-- From WS-ResourceLifetime ScheduledResourceTermination -->
                  <xsd:element ref="wsrl:CurrentTime" 
                               minOccurs="1" maxOccurs="1" />
                  <xsd:element ref="wsrl:TerminationTime" 
                               minOccurs="1" maxOccurs="1" />
                               
         <!-- PublisherRegistration specific  -->
                  <xsd:element ref="wsbn:PublisherReference"        
                               minOccurs="0" maxOccurs="1" />
                  <xsd:element ref="wsbn:Topic"        
                               minOccurs="0" maxOccurs="unbounded" />
                  <xsd:element ref="wsbn:Demand"        
                               minOccurs="1" maxOccurs="1" />
                  <xsd:element ref="wsbn:CreationTime"        
                               minOccurs="0" maxOccurs="1" />
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>

<!-- ==== Common fault information to carry in all fault messages ==== -->       
       <xsd:complexType name="BaseFaultType">
          <xsd:sequence>
             <xsd:element name="Timestamp" type="xsd:dateTime" 
                      minOccurs="1" maxOccurs="1"/>
             <xsd:element name="Originator" type="wsa:EndpointReferenceType" 
                      minOccurs="0" maxOccurs="1"/>
             <xsd:element name="ErrorCode" 
                      minOccurs="0" maxOccurs="1">
                <xsd:complexType>
                   <xsd:complexContent mixed="true">
                      <xsd:extension base="xsd:anyType">
                         <xsd:attribute name="dialect" type="xsd:anyURI"
                                    use="required"/>
                      </xsd:extension>
                   </xsd:complexContent>
                </xsd:complexType>      
             </xsd:element>
             <xsd:element name="Description" type="xsd:string" 
                      minOccurs="0" maxOccurs="unbounded"/>
             <xsd:element name="FaultCause" type="wsbn:BaseFaultType" 
                      minOccurs="0" maxOccurs="unbounded"/> 
          </xsd:sequence>
       </xsd:complexType>

<!-- ========== Message Types for NotificationBroker  ============ -->
         <xsd:element name="RegisterPublisher">
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element name="PublisherReference" 
                               type="wsa:EndpointReferenceType" 
                               minOccurs="0" maxOccurs="1" />
                  <xsd:element name="Topic" 
                               type="wsnt:TopicExpressionType"
                               minOccurs="0" maxOccurs="unbounded" />
                  <xsd:element name="Demand" 
                               type="xsd:boolean" default="false" 
                               minOccurs="0" maxOccurs="1" />
                  <xsd:element name="InitialTerminationTime" 
                               type="xsd:dateTime"
                               minOccurs="0" maxOccurs="1" />
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>

         <xsd:element name="ResgisterPublisherResponse"> 
            <xsd:complexType>
               <xsd:sequence>
                  <xsd:element name="PublisherRegistrationReference" 
                               type="wsa:EndpointReferenceType"
                               minOccurs="0" maxOccurs="1" />
               </xsd:sequence>
            </xsd:complexType>
         </xsd:element>

         <xsd:complexType name="ResourceUnknownFaultType">
            <xsd:complexContent>
               <xsd:extension base="wsbn:BaseFaultType"/>
            </xsd:complexContent>
         </xsd:complexType>
         <xsd:element name="ResourceUnknownFault" 
                      type="wsbn:ResourceUnknownFaultType"/>

         <xsd:complexType name="InvalidTopicExpressionFaultType">
            <xsd:complexContent>
               <xsd:extension base="wsbn:BaseFaultType"/>
            </xsd:complexContent>
         </xsd:complexType>
         <xsd:element name="InvalidTopicExpressionFault" 
                      type="wsbn:InvalidTopicExpressionFaultType"/>

         <xsd:complexType name="TopicNotSupportedFaultType">
            <xsd:complexContent>
               <xsd:extension base="wsbn:BaseFaultType"/>
            </xsd:complexContent>
         </xsd:complexType>
         <xsd:element name="TopicNotSupportedFault" 
                      type="wsbn:TopicNotSupportedFaultType"/>

         <xsd:complexType name="PublisherRegistrationFailedFaultType">
            <xsd:complexContent>
               <xsd:extension base="wsbn:BaseFaultType"/>
            </xsd:complexContent>
         </xsd:complexType>
         <xsd:element name="PublisherRegistrationFailedFault" 
                      type="wsbn:PublisherRegistrationFailedFaultType"/>

      </xsd:schema>
   </wsdl:types>       

<!-- ========== NotificationBroker::RegisterPublisher =============
   RegisterPublisher(PublisherReference, TopicExpression* ,
                     [Demand], [InitialTerminationTime])
   returns: WS-Resource qualified EPR to a PublisherRegistration 
 ***********************************
     -->
   <wsdl:message name="RegisterPublisherRequest">
      <wsdl:part name="RegisterPublisherRequest" 
                 element="wsbn:RegisterPublisher"/>
   </wsdl:message>

   <wsdl:message name="RegisterPublisherResponse">
      <wsdl:part name="RegisterPublisherResponse" 
                 element="wsbn:ResgisterPublisherResponse"/>
   </wsdl:message>
      
   <wsdl:message name="ResourceUnknownFault">
      <part name="ResourceUnknownFault"
            element="wsbn:ResourceUnknownFault" />
   </wsdl:message> 

   <wsdl:message name="InvalidTopicExpressionFault">
      <part name="InvalidTopicExpressionFault"
            element="wsbn:InvalidTopicExpressionFault" />
   </wsdl:message> 

   <wsdl:message name="TopicNotSupportedFault">
      <part name="TopicNotSupportedFault"
            element="wsbn:TopicNotSupportedFault" />
   </wsdl:message> 

   <wsdl:message name="PublisherRegistrationFailedFault">
      <part name="PublisherRegistrationFailedFault"
            element="wsbn:PublisherRegistrationFailedFault" />
   </wsdl:message> 

<!-- =================== PortType Definitions ===================== -->
<!-- ========== NotificationBroker PortType Definition ============ -->
   <wsdl:portType name="NotificationBroker" 
      wsrp:ResourceProperties ="wsbn:NotificationBrokerRP">
      <!-- ============= extends NotificationConsumer ============= -->
      <wsdl:operation name="Notify">
         <wsdl:input message="wsnt:Notify" />
      </wsdl:operation>

      <!-- ========== extends wsrp:ResourceProperties ============= -->
      <wsdl:operation name="GetResourceProperty">
         <wsdl:input  name="GetResourcePropertyRequest" 
                      message="wsrp:GetResourcePropertyRequest" />
         <wsdl:output name="GetResourcePropertyResponse" 
                      message="wsrp:GetResourcePropertyResponse" />
         <wsdl:fault  name="ResourceUnknownFault" 
                      message="wsrp:ResourceUnknownFault" />
         <wsdl:fault  name="InvalidResourcePropertyQNameFault" 
                      message="wsrp:InvalidResourcePropertyQNameFault" />     
      </wsdl:operation>
      
      <!-- ============= extends NotificationProducer ============= -->
      <wsdl:operation name="Subscribe">
         <wsdl:input  message="wsnt:SubscribeRequest" />
         <wsdl:output message="wsnt:SubscribeResponse" />
         <wsdl:fault  name="ResourceUnknownFault" 
                      message="wsnt:ResourceUnknownFault" />
         <wsdl:fault  name="SubscribeCreationFailedFault" 
                      message="wsnt:SubscribeCreationFailedFault"/>
      </wsdl:operation>

      <wsdl:operation name="GetCurrentMessage">
         <wsdl:input  message="wsnt:GetCurrentMessageRequest"/>
         <wsdl:output message="wsnt:GetCurrentMessageResponse"/>
         <wsdl:fault  name="ResourceUnknownFault" 
                      message="wsnt:ResourceUnknownFault" />
         <wsdl:fault  name="InvalidTopicExpressionFault" 
                      message="wsnt:InvalidTopicExpressionFault" />
         <wsdl:fault  name="TopicNotSupportedFault" 
                      message="wsnt:TopicNotSupportedFault" />
         <wsdl:fault  name="NoCurrentMessageOnTopicFault" 
                      message="wsnt:NoCurrentMessageOnTopicFault" />
      </wsdl:operation>
      
      <!-- ========= NotificationBroker specific operations ======= -->      
      <wsdl:operation name="RegisterPublisher">
         <wsdl:input  message="wsbn:RegisterPublisherRequest"/>
         <wsdl:output message="wsbn:RegisterPublisherResponse"/>
         <wsdl:fault  name="ResourceUnknownFault" 
                      message="wsbn:ResourceUnknownFault" />
         <wsdl:fault  name="InvalidTopicExpressionFault" 
                      message="wsbn:InvalidTopicExpressionFault"/>
         <wsdl:fault  name="TopicNotSupportedFault" 
                      message="wsbn:TopicNotSupportedFault"/>
         <wsdl:fault  name="PublisherRegistrationFailedFault" 
                      message="wsbn:PublisherRegistrationFailedFault"/>
       </wsdl:operation>
   </wsdl:portType>

<!-- ===== PublisherRegistrationManager PortType Definition ====== -->
   <wsdl:portType name="PublisherRegistrationManager" 
      wsrp:ResourceProperties ="wsbn:PublisherRegistrationManagerRP">
      <!-- ========== extends wsrp:ResourceProperties ============= -->
      <wsdl:operation name="GetResourceProperty">
         <wsdl:input  name="GetResourcePropertyRequest" 
                      message="wsrp:GetResourcePropertyRequest" />
         <wsdl:output name="GetResourcePropertyResponse" 
                      message="wsrp:GetResourcePropertyResponse" />
         <wsdl:fault  name="ResourceUnknownFault" 
                      message="wsrp:ResourceUnknownFault" />
         <wsdl:fault  name="InvalidResourcePropertyQNameFault" 
                      message="wsrp:InvalidResourcePropertyQNameFault" />     
      </wsdl:operation>
      
      <!-- === extends wsrl:ImmediateResourceTermination ========== -->
      <wsdl:operation name="Destroy">
         <wsdl:input message="wsrl:DestroyRequest" />
         <wsdl:output message="wsrl:DestroyResponse" />
         <wsdl:fault name="ResourceUnknownFault" 
                     message="wsrl:ResourceUnknownFault" />
         <wsdl:fault name="ResourceNotDestroyedFault" 
                     message="wsrl:ResourceNotDestroyedFault" />
      </wsdl:operation>

      <!-- === extends wsrl:ScheduledResourceTermination ========== -->
      <wsdl:operation name="SetTerminationTime">
         <wsdl:input message="wsrl:SetTerminationTimeRequest" />
         <wsdl:output message="wsrl:SetTerminationTimeResponse" />
         <wsdl:fault name="ResourceUnknownFault" 
                     message="wsrl:ResourceUnknownFault" />
         <wsdl:fault name="UnableToSetTerminationTimeFault" 
                     message="wsrl:UnableToSetTerminationTimeFault" />
         <wsdl:fault name="TerminationTimeChangeRejectedFault" 
                     message="wsrl:TerminationTimeChangeRejectedFault" />
      </wsdl:operation>

      <!-- ==== PublisherRegistrationManager specific operations == -->

   </wsdl:portType>

</wsdl:definitions>
