<?xml version="1.0" encoding="UTF-8"?>
<tbody>
   <tr>
      <th>Id</th>
      <th>Assertion</th>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Conformance-1000"/>
      </td>
      <td>A conforming implementation <rfc2119>MUST</rfc2119> work with JMS.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Conformance-1001"/>
      </td>
      <td>A conforming implementation <rfc2119>MUST</rfc2119> implement all the requirements of <specref ref="soap-binding"/>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Conformance-1002"/>
      </td>
      <td>Conforming implementations <rfc2119>MUST</rfc2119> implement all the requirements of the JMS URI.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Conformance-1003"/>
      </td>
      <td>Support for WSDL 1.1 is optional and as such an implementation <rfc2119>MAY</rfc2119> implement it.  
			However, a conforming implementation of this feature <rfc2119>MUST</rfc2119> implement all the requirements of <specref ref="wsdl-11-detail"/>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2001"/>
      </td>
      <td>
    Properties can be obtained from a number of sources. 
    If a given property is specified in more than one of these, 
    the following list specifies the precedence: 
    the first <rfc2119>MUST</rfc2119> be used in preference to the second.
    </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2002"/>
      </td>
      <td>
	If a given property is specified more than once in the JMS 
    URI the last instance of the property <rfc2119>MUST</rfc2119> be used.
	</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2003"/>
      </td>
      <td>(lookupVariant)
					<rfc2119>MUST</rfc2119> be specified in the JMS URI, as the <code>jms-variant</code> portion of the syntax. </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2004"/>
      </td>
      <td>(destinationName) <rfc2119>MUST</rfc2119> be specified in JMS URI, as the <code>jms-dest</code> portion of the syntax.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2005"/>
      </td>
      <td>(deliveryMode)
                        if specified <rfc2119>MUST</rfc2119> appear in the JMS message in the header named <code>JMSDeliveryMode</code>.
                          If the value of this property is "PERSISTENT" then the <code>JMSDeliveryMode</code> integer value <rfc2119>MUST</rfc2119> be 
                          set to <code>DeliveryMode.PERSISTENT</code>.  If the value of this property is "NON_PERSISTENT" then the 
                          <code>JMSDeliveryMode</code> integer value <rfc2119>MUST</rfc2119> be set to <code>DeliveryMode.NON_PERSISTENT</code>. 
                        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2006"/>
      </td>
      <td>(timeToLive) if specified, this <rfc2119>MUST</rfc2119> be used to generate the value of the JMS header <code>JMSExpiration</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2007"/>
      </td>
      <td>(priority) if specified, <rfc2119>MUST</rfc2119> appear in the JMS message in the header named <code>JMSPriority</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2008"/>
      </td>
      <td>(replyToName) if specified, this <rfc2119>MUST</rfc2119> be used to derive the value to be used in the JMS header <code>JMSReplyTo</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2009"/>
      </td>
      <td>(targetService) 
                        if specified <rfc2119>MUST</rfc2119> appear in the JMS message in the JMS property named 
                        <code>SOAPJMS_targetService</code>.
                         Use fault subcode <term>missingTargetService</term> if specified and <code>SOAPJMS_targetService</code> does not appear.                      
                        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2010"/>
      </td>
      <td>(bindingVersion) fixed value "1.0" in the implementation, <rfc2119>MUST</rfc2119> appear in a JMS property named <code>SOAPJMS_bindingVersion</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2011"/>
      </td>
      <td>
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>unrecognizedBindingVersion</term> 
                        if the value of the <term>soapjms:bindingVersion</term> property does not match the fixed value.
                        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2012"/>
      </td>
      <td>(contentType)
                            If the <code>charset</code> parameter is specified, it is checked to ensure that it matches the encoding value from the supplied XML.
                            A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>contentTypeMismatch</term> if the encoding values do not match.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2016"/>
      </td>
      <td>(contentType)
                        The contentType value <rfc2119>MUST</rfc2119> appear in the JMS message in the JMS property named <code>SOAPJMS_contentType</code>.
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>missingContentType</term> if the 
                        <code>SOAPJMS_contentType</code> property is missing.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2018"/>
      </td>
      <td>(soapAction)If specified <rfc2119>MUST</rfc2119> appear in the JMS message in the JMS property named <code>SOAPJMS_soapAction</code>.
                          Fault subcode <term>missingSoapAction</term> MAY be used if <code>SOAPJMS_soapAction</code> does not appear.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2019"/>
      </td>
      <td>(soapAction)
                        If using SOAP 1.2, and the <termref def="contentType">contentType</termref>
                    	property has an <code>action</code> parameter, that parameter value is compared with the <code>SOAPJMS_soapAction</code> value.
                         
                        A fault <rfc2119>MUST</rfc2119> be generated with fault subcode <term>mismatchedSoapAction</term> if the SOAP 1.2 <code>action</code> does not
                    	match the <code>SOAPJMS_soapAction</code> value.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2020"/>
      </td>
      <td>(isFault)
                        When this property is <code>true</code>, the sending software <rfc2119>MUST</rfc2119> set a boolean JMS Message property 
                        named <code>SOAPJMS_isFault</code> with a value of <code>true</code>, as in: 
                        <code>Message.setBooleanProperty("SOAPJMS_isFault", true)</code>.
                        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2021"/>
      </td>
      <td>The client <rfc2119>MUST</rfc2119> create the requestURI by taking the supplied URI, leaving the destinationName as-is, 
                        and removing the targetService and replyToName query parameters if they are specified. The client <rfc2119>SHOULD</rfc2119> 
                        also remove deliveryMode, jndiConnectionFactoryName, jndiInitialContextFactory, jndiURL, jndiContextParameter, timeToLive, 
                        and priority properties.  The client <rfc2119>MAY</rfc2119> remove other query parameters not explicitly mentioned above 
                        (for example client security related properties).</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2022"/>
      </td>
      <td>(requestURI)
                        Appears in the JMS message in the JMS property named <code>SOAPJMS_requestURI</code>.
                        A fault <rfc2119>MUST</rfc2119> be generated with fault subcode <term>missingRequestURI</term> if the <code>SOAPJMS_requestURI</code> property 
                        is missing from the message.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2025"/>
      </td>
      <td> 
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>malformedRequestURI</term> 
                        when the <code>SOAPJMS_requestURI</code> violates the expected syntax.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2026"/>
      </td>
      <td>
                        A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>targetServiceNotAllowedInRequestURI</term> 
                        when <code>targetService</code> parameter is included in the <code>SOAPJMS_requestURI</code>). 
                        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2027"/>
      </td>
      <td>
    The contents of the JMS Message body <rfc2119>MUST</rfc2119> be the SOAP payload as a 
    JMS <code>BytesMessage</code> or <code>TextMessage</code>.
    </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2028"/>
      </td>
      <td>
    A fault <rfc2119>MUST</rfc2119> be generated with subcode <term>unsupportedJMSMessageFormat</term> when the 
    arriving message format is not <code>BytesMessage</code> or <code>TextMessage</code>.
    </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2029"/>
      </td>
      <td>
    Specifically, if the payload is formatted as a MIME multipart message, 
    then the first byte or character encountered in the JMS Message body 
    <rfc2119>MUST</rfc2119> be the start of the MIME boundary 
    for the start of the first part 
    — what MIME Part One [<bibref ref="mime"/>] section 2.5 calls a "Body Part".
    </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2030"/>
      </td>
      <td>
    If the message is formatted as "<code>text/xml</code>" 
    or "<code>application/soap+xml</code>", 
    then the first byte or character of the JMS Message body 
    <rfc2119>MUST</rfc2119> be the start of a conforming XML document.
    </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2032"/>
      </td>
      <td>In the case of SOAP 1.2 a conforming SOAP-JMS Binding instance <rfc2119>MUST</rfc2119>
    support the following message exchange patterns:</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2033"/>
      </td>
      <td>
    In the case of SOAP 1.1 there is no formal specification of 
    Message Exchange Patterns.     
    A conforming SOAP-JMS Binding instance <rfc2119>MUST</rfc2119> 
    support both the generic "request/response" and "one-way" 
    patterns as specified in this document.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2036"/>
      </td>
      <td>The Response Message <rfc2119>MUST</rfc2119> be created 
        using the same type as the corresponding Request Message, i.e. as a JMS <code>BytesMessage</code> or <code>TextMessage</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2037"/>
      </td>
      <td> The message <rfc2119>MUST</rfc2119> be sent to the JMS Destination in the
        <code>JMSReplyTo</code> header of the Request Message.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2038"/>
      </td>
      <td> 
        If the <code>JMSCorrelationID</code> is set in the request message, 
        then the <code>JMSCorrelationID</code> header field in the response 
        message <rfc2119>MUST</rfc2119> be set to the same value as the <code>JMSCorrelationID</code> 
        header field in the request message. If the <code>JMSCorrelationID</code> 
        header field is not set in the request message, then the 
        <code>JMSCorrelationID</code> header field in the response message 
        <rfc2119>MUST</rfc2119> be set to the value of the <code>JMSMessageID</code> 
        header in the request message.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2039"/>
      </td>
      <td>(contentEncoding)
                        If the content encoding is specified, it is checked to
                        ensure that it matches the content encoding values supported. A fault
                        <rfc2119>MUST</rfc2119> be generated with subcode <term>contentEncodingNotSupported</term> 
                        if the encoding values do not match.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2050"/>
      </td>
      <td>
        The <code>JMSReplyTo</code> header <rfc2119>MUST</rfc2119> be assigned a value.
        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2051"/>
      </td>
      <td>
        The <code>JMSReplyTo</code> header <rfc2119>MUST NOT</rfc2119> be assigned a value.
        </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2060"/>
      </td>
      <td>(lookupVariant)
					The <code>jms-variant</code>: <code>jndi</code> 
         <rfc2119>MUST</rfc2119> be supported.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2070"/>
      </td>
      <td>(topicReplyToName) if specified and if relevant, this <rfc2119>MUST</rfc2119> be used to derive the value to be used in the JMS header <code>JMSReplyTo</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2071"/>
      </td>
      <td>
                    A fault MUST be generated with subcode <term>unsupportedLookupVariant</term>
                        if the JMS URI specifies a lookupVariant that is not supported by the implementation.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2072"/>
      </td>
      <td>
    While the requesting node can support either <code>BytesMessage</code> or
    <code>TextMessage</code>, the receiving node MUST support both <code>BytesMessage</code>
    and <code>TextMessage</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="Protocol-2073"/>
      </td>
      <td>
    If the message is formatted as a JMS <code>BytesMessage</code>, then the sender and 
    receiver <rfc2119>MUST</rfc2119> use the <code>writeBytes()</code> and <code>readBytes()</code> 
    methods, respectively.
    </td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="WSDLUsage-3001"/>
      </td>
      <td>If a property is specified at multiple levels within the WSDL document, 
the most specific setting <rfc2119>MUST</rfc2119> take precedence (URI specified in the 
address element's location attribute first, then other properties set on 
the port, then service, then 
binding).</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="WSDLUsage-3002"/>
      </td>
      <td>
			The XML elements
			<termref def="jndiConnectionFactoryName">jndiConnectionFactoryName</termref>,
			<termref def="jndiInitialContextFactory">jndiInitialContextFactory</termref>,
			<termref def="jndiURL">jndiURL</termref>,
			<termref def="deliveryMode">deliveryMode</termref>,
			<termref def="priority">priority</termref>,
			<termref def="timeToLive">timeToLive</termref>, and
			<termref def="replyToName">replyToName</termref>,
			in the soapjms namespace, <rfc2119>MUST</rfc2119>
			be supported when used in the context of the
			WSDL service, port, and binding elements.
			</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="WSDLUsage-3003"/>
      </td>
      <td>To indicate that this
		SOAP/JMS binding is in use, the <att>transport</att> attribute MUST be set to the
		value <code>http://www.w3.org/2010/soapjms/</code>.</td>
   </tr>
   <tr>
      <td>
         <assert-summary ref="WSDLUsage-3004"/>
      </td>
      <td>
      The value of the <att>location</att> attribute <rfc2119>MUST</rfc2119> be a URI corresponding to a
		JMS Destination, and <rfc2119>SHOULD</rfc2119> be a "jms" scheme URI.</td>
   </tr>
</tbody>
