SOAP headers added using DOOM are lost during serialization
-----------------------------------------------------------
Key: WSCOMMONS-197
URL: https://issues.apache.org/jira/browse/WSCOMMONS-197
Project: WS-Commons
Issue Type: Bug
Components: AXIOM
Reporter: Asankha C. Perera
Priority: Critical
Rampart is unable to add security headers to a SOAP message that does not have
an existing SOAP header.
The actual root cause of this issue is that headers added using DOOM to a SOAP
envelope that does not already have a header, are lost during serialization.
The following code sample provided by Ruchith explains and is able to recreate
this issue. The header is lost unless the "
//fac.createSOAPHeader(env);" line is uncommeted
-----------------------------------------------------------------------------------------------------
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axiom.soap.impl.dom.soap11.SOAP11Factory;
import org.apache.ws.security.util.WSSecurityUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import junit.framework.TestCase;
/**
*
* @author Ruchith Fernando ([EMAIL PROTECTED])
*/
public class SerializerTest extends TestCase {
public SerializerTest() {
}
public SerializerTest(String arg0) {
super(arg0);
}
public void test1() throws Exception {
SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope env = fac.createSOAPEnvelope();
fac.createSOAPBody(env);
//fac.createSOAPHeader(env);
fac = new SOAP11Factory();
StAXSOAPModelBuilder builder = new
StAXSOAPModelBuilder(env.getXMLStreamReader(), fac, null);
SOAPEnvelope domEnv = builder.getSOAPEnvelope();
Element elem = (Element)domEnv;
Document doc = elem.getOwnerDocument();
WSSecurityUtil.findWsseSecurityHeaderBlock(doc, elem, true);
String s = domEnv.toString();
System.out.println(s);
}
}
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]