[jboss-svn-commits] JBL Code SVN: r9845 - in labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst: service and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Feb 28 11:24:06 EST 2007


Author: kevin.conner at jboss.com
Date: 2007-02-28 11:24:06 -0500 (Wed, 28 Feb 2007)
New Revision: 9845

Modified:
   labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/client/JaxRPCHeaderContextProcessor.java
   labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/service/JaxRPCHeaderContextProcessor.java
Log:
Removed SOAP header mustUnderstand attribute when processed: JBTM-201

Modified: labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/client/JaxRPCHeaderContextProcessor.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/client/JaxRPCHeaderContextProcessor.java	2007-02-28 16:08:27 UTC (rev 9844)
+++ labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/client/JaxRPCHeaderContextProcessor.java	2007-02-28 16:24:06 UTC (rev 9845)
@@ -172,6 +172,7 @@
                 final Name name = env.createName(CoordinationConstants.WSCOOR_ELEMENT_COORDINATION_CONTEXT, CoordinationConstants.WSCOOR_PREFIX, CoordinationConstants.WSCOOR_NAMESPACE) ;
                 final SOAPHeaderElement headerElement = header.addHeaderElement(name) ;
                 headerElement.addNamespaceDeclaration(CoordinationConstants.WSCOOR_PREFIX, CoordinationConstants.WSCOOR_NAMESPACE) ;
+                headerElement.setMustUnderstand(true) ;
                 CoordinationContextHelper.serialise(env, headerElement, coordinationContext) ;
             }
         }

Modified: labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/service/JaxRPCHeaderContextProcessor.java
===================================================================
--- labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/service/JaxRPCHeaderContextProcessor.java	2007-02-28 16:08:27 UTC (rev 9844)
+++ labs/jbosstm/trunk/XTS/WSTX/classes/com/arjuna/mw/wst/service/JaxRPCHeaderContextProcessor.java	2007-02-28 16:24:06 UTC (rev 9845)
@@ -41,6 +41,7 @@
 import javax.xml.soap.Name;
 import javax.xml.soap.SOAPEnvelope;
 import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPFactory;
 import javax.xml.soap.SOAPHeader;
 import javax.xml.soap.SOAPHeaderElement;
 import javax.xml.soap.SOAPMessage;
@@ -113,7 +114,8 @@
             try
             {
                 final SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope() ;
-                final SOAPHeaderElement soapHeaderElement = getHeaderElement(soapEnvelope, CoordinationConstants.WSCOOR_NAMESPACE, CoordinationConstants.WSCOOR_ELEMENT_COORDINATION_CONTEXT) ;
+                final SOAPHeader soapHeader = soapEnvelope.getHeader() ;
+                final SOAPHeaderElement soapHeaderElement = getHeaderElement(soapHeader, CoordinationConstants.WSCOOR_NAMESPACE, CoordinationConstants.WSCOOR_ELEMENT_COORDINATION_CONTEXT) ;
                 
                 if (soapHeaderElement != null)
                 {
@@ -123,11 +125,13 @@
                     {
                         final TxContext txContext = new com.arjuna.mwlabs.wst.at.context.TxContextImple(cc) ;
                         TransactionManagerFactory.transactionManager().resume(txContext) ;
+                        clearMustUnderstand(soapHeader, soapHeaderElement) ;
                     }
                     else if (BusinessActivityConstants.WSBA_PROTOCOL_ATOMIC_OUTCOME.equals(coordinationType))
                     {
                         final TxContext txContext = new com.arjuna.mwlabs.wst.ba.context.TxContextImple(cc);
                         BusinessActivityManagerFactory.businessActivityManager().resume(txContext) ;
+                        clearMustUnderstand(soapHeader, soapHeaderElement) ;
                     }
                     else
                     {
@@ -209,15 +213,14 @@
 
     /**
      * Retrieve the first header matching the uri and name.
-     * @param soapEnvelope The soap envelope containing the header.
+     * @param soapHeader The soap header containing the header element.
      * @param uri The uri of the header element.
      * @param name The name of the header element.
      * @return The header element or null if not found.
      */
-    private SOAPHeaderElement getHeaderElement(final SOAPEnvelope soapEnvelope, final String uri, final String name)
+    private SOAPHeaderElement getHeaderElement(final SOAPHeader soapHeader, final String uri, final String name)
         throws SOAPException
     {
-        final SOAPHeader soapHeader = soapEnvelope.getHeader() ;
         if (soapHeader != null)
         {
             final Iterator headerIter = SOAPUtil.getChildElements(soapHeader) ;
@@ -253,4 +256,20 @@
             return lhs.equals(rhs) ;
         }
     }
+    
+    /**
+     * Clear the soap MustUnderstand.
+     * @param soapHeader The SOAP header.
+     * @param soapHeaderElement The SOAP header element.
+     */
+    private void clearMustUnderstand(final SOAPHeader soapHeader, final SOAPHeaderElement soapHeaderElement)
+    	throws SOAPException
+    {
+	final Name headerName = soapHeader.getElementName() ;
+	
+	final SOAPFactory factory = SOAPFactory.newInstance() ;
+	final Name attributeName = factory.createName("mustUnderstand", headerName.getPrefix(), headerName.getURI()) ;
+	
+	soapHeaderElement.removeAttribute(attributeName) ;
+    }
 }




More information about the jboss-svn-commits mailing list