You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by va...@apache.org on 2008/12/17 17:33:10 UTC

svn commit: r727429 - /ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java

Author: vanto
Date: Wed Dec 17 08:33:10 2008
New Revision: 727429

URL: http://svn.apache.org/viewvc?rev=727429&view=rev
Log:
Fixing ODE-466: WS-Addressing can now be used.

Modified:
    ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java

Modified: ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java
URL: http://svn.apache.org/viewvc/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java?rev=727429&r1=727428&r2=727429&view=diff
==============================================================================
--- ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java (original)
+++ ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java Wed Dec 17 08:33:10 2008
@@ -23,7 +23,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-import org.w3c.dom.Document;
+import java.util.Map;
 
 import javax.wsdl.Binding;
 import javax.wsdl.BindingInput;
@@ -43,9 +43,9 @@
 import javax.wsdl.extensions.soap.SOAPHeader;
 import javax.wsdl.extensions.soap.SOAPOperation;
 import javax.xml.namespace.QName;
-import java.util.*;
 
 import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.soap.SOAPEnvelope;
@@ -54,6 +54,7 @@
 import org.apache.axiom.soap.SOAPFaultCode;
 import org.apache.axiom.soap.SOAPFaultDetail;
 import org.apache.axiom.soap.SOAPFaultReason;
+import org.apache.axiom.soap.SOAPHeaderBlock;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.namespace.Constants;
@@ -63,9 +64,10 @@
 import org.apache.ode.il.OMUtils;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.Namespaces;
+import org.apache.ode.utils.stl.CollectionsX;
 import org.apache.ode.utils.wsdl.Messages;
 import org.apache.ode.utils.wsdl.WsdlUtils;
-import org.apache.ode.utils.stl.CollectionsX;
+import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
@@ -205,8 +207,24 @@
 
         for (Node headerNode : headers.values())
             if (headerNode.getNodeType() == Node.ELEMENT_NODE) {
-                if (soaphdr.getFirstChildWithName(new QName(headerNode.getNamespaceURI(), headerNode.getLocalName())) == null)
-                    soaphdr.addChild(OMUtils.toOM((Element) headerNode, _soapFactory));
+                if (soaphdr.getFirstChildWithName(new QName(headerNode.getNamespaceURI(), headerNode.getLocalName())) == null) {
+                	OMElement omHeaderNode = OMUtils.toOM((Element) headerNode, _soapFactory);
+                    SOAPHeaderBlock hb = soaphdr.addHeaderBlock(omHeaderNode.getLocalName(), omHeaderNode.getNamespace());
+
+                    // add child elements
+                    OMNode omNode = null;
+                    for (Iterator iter = omHeaderNode.getChildren(); iter.hasNext();){
+                         omNode = (OMNode) iter.next();
+                         hb.addChild(omNode);
+                    }
+
+                    OMAttribute omatribute = null;
+                    // add attributes
+                    for (Iterator iter = omHeaderNode.getAllAttributes(); iter.hasNext();){
+                         omatribute = (OMAttribute) iter.next();
+                         hb.addAttribute(omatribute);
+                    }
+                }
             } else {
                 throw new OdeFault(__msgs.msgSoapHeaderMustBeAnElement(headerNode));
             }