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));
}