You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Ruchith Udayanga Fernando (JIRA)" <ji...@apache.org> on 2006/03/26 22:27:19 UTC
[jira] Resolved: (AXIS2-517) Additional namespace definition is
added to the SOAPEnvelope when loading an existing soapmessage using SAAJ
[ http://issues.apache.org/jira/browse/AXIS2-517?page=all ]
Ruchith Udayanga Fernando resolved AXIS2-517:
---------------------------------------------
Resolution: Fixed
Revision: 388950
Testcase added: org.apache.axis2.saaj.SOAPNamespaceTest
> Additional namespace definition is added to the SOAPEnvelope when loading an existing soapmessage using SAAJ
> ------------------------------------------------------------------------------------------------------------
>
> Key: AXIS2-517
> URL: http://issues.apache.org/jira/browse/AXIS2-517
> Project: Apache Axis 2.0 (Axis2)
> Type: Bug
> Components: om
> Environment: Sun JDK 1.5.0_06
> Reporter: Jörg Eichhorn
>
> When loading a soap message which was created using a different namespace prefix for the soapenvelope than Axis2 does, the namespace definition using the 'soapenv' prefix is added.
> When loading the message using the MessageFactory it will internally create a new instance of the class org.apache.axis2.soap.impl.dom.SOAPEnvelopeImpl by using the constructor:
> public SOAPEnvelopeImpl(DocumentImpl doc, OMXMLParserWrapper builder,
> SOAPFactory factory)
> In this constructor it calls the parent constructor with the new namespace definition using the default prefix. When the to be loaded soap message uses a different prefix, this will result into two xmlns definitions with the soap envelope namespace url when writing the message out again.
> A possible solution could be just don't create a the new namespace in the class SOAPEnvelopeImpl and pass null to the parent constructor.
> I tested with axis2 from svn trunk revision 388932.
> Sample code:
> import java.io.FileInputStream;
> import java.io.InputStream;
> import javax.xml.soap.MessageFactory;
> import javax.xml.soap.SOAPMessage;
> public class Test
> {
> public static void main(String[] args)
> {
> InputStream in = null;
> try
> {
> in = new FileInputStream("minimalMessage.xml");
> SOAPMessage msg = MessageFactory.newInstance().createMessage(null, in);
> msg.setProperty(SOAPMessage.WRITE_XML_DECLARATION, "true");
> msg.writeTo(System.out);
> }
> catch (Exception e)
> {
> e.printStackTrace();
> }
> finally
> {
> try { in.close(); } catch (Exception e) { }
> }
> }
> }
> MinimalMessage:
> <?xml version='1.0' ?>
> <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
> <env:Body/>
> </env:Envelope>
> Output:
> <?xml version='1.0' encoding='utf-8'?><env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Body/>
> </env:Envelope>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira