You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mi...@apache.org on 2009/03/04 07:56:38 UTC
svn commit: r749923 -
/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/soapbinding/SoapMessageConverter.java
Author: milinda
Date: Wed Mar 4 06:56:38 2009
New Revision: 749923
URL: http://svn.apache.org/viewvc?rev=749923&view=rev
Log:
Issues with SOAP Header handling for external service invocation and process response fixed.
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=749923&r1=749922&r2=749923&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 Mar 4 06:56:38 2009
@@ -156,7 +156,7 @@
msgCtx.setEnvelope(soapEnv);
}
- createSoapHeaders(soapEnv, getSOAPHeaders(bi), op.getInput().getMessage(), message.getHeaderParts());
+ createSoapHeaders(soapEnv, getSOAPHeaders(bi), op.getInput().getMessage(), message);
SOAPBody soapBody = getSOAPBody(bi);
if (soapBody != null) {
@@ -190,7 +190,7 @@
}
if (message.getHeaderParts().size() > 0 || getSOAPHeaders(bo).size() > 0)
- createSoapHeaders(soapEnv, getSOAPHeaders(bo), op.getOutput().getMessage(), message.getHeaderParts());
+ createSoapHeaders(soapEnv, getSOAPHeaders(bo), op.getOutput().getMessage(), message);
SOAPBody soapBody = getSOAPBody(bo);
if (soapBody != null) {
@@ -199,13 +199,13 @@
}
}
- public void createSoapHeaders(SOAPEnvelope soapEnv, List<SOAPHeader> headerDefs, Message msgdef, Map<String,Node> headers) throws AxisFault {
- for (SOAPHeader sh : headerDefs) handleSoapHeaderDef(soapEnv, sh, msgdef, headers);
+ public void createSoapHeaders(SOAPEnvelope soapEnv, List<SOAPHeader> headerDefs, Message msgdef, org.apache.ode.bpel.iapi.Message message) throws AxisFault {
+ for (SOAPHeader sh : headerDefs) handleSoapHeaderDef(soapEnv, sh, msgdef, message);
org.apache.axiom.soap.SOAPHeader soaphdr = soapEnv.getHeader();
if (soaphdr == null) soaphdr = _soapFactory.createSOAPHeader(soapEnv);
- for (Node headerNode : headers.values())
+ for (Node headerNode : message.getHeaderParts().values())
if (headerNode.getNodeType() == Node.ELEMENT_NODE) {
if (soaphdr.getFirstChildWithName(new QName(headerNode.getNamespaceURI(), headerNode.getLocalName())) == null) {
OMElement omHeaderNode = OMUtils.toOM((Element) headerNode, _soapFactory);
@@ -231,7 +231,8 @@
}
@SuppressWarnings("unchecked")
- private void handleSoapHeaderDef(SOAPEnvelope soapEnv, SOAPHeader headerdef, Message msgdef, Map<String, Node> headers) throws AxisFault {
+ private void handleSoapHeaderDef(SOAPEnvelope soapEnv, SOAPHeader headerdef, Message msgdef, org.apache.ode.bpel.iapi.Message message) throws AxisFault {
+ Map<String,Node> headers = message.getHeaderParts();
boolean payloadMessageHeader = headerdef.getMessage() == null || headerdef.getMessage().equals(msgdef.getQName());
if (headerdef.getPart() == null) return;
@@ -250,8 +251,13 @@
// We don't complain about missing header data unless they are part of the message payload. This is
// because AXIS may be providing these headers.
- if (srcPartEl == null && payloadMessageHeader)
- throw new OdeFault(__msgs.msgOdeMessageMissingRequiredPart(headerdef.getPart()));
+ if (srcPartEl == null && payloadMessageHeader){
+ if(message.getPart(headerdef.getPart()) != null){
+ srcPartEl = (Element)message.getPart(headerdef.getPart());
+ }else{
+ throw new OdeFault(__msgs.msgOdeMessageMissingRequiredPart(headerdef.getPart()));
+ }
+ }
if (srcPartEl == null) return;