ws-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andreas Veithen (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (AXIOM-430) Inconsistent serialization of SOAPEnvelope
Date Sun, 08 Jun 2014 08:47:02 GMT

     [ https://issues.apache.org/jira/browse/AXIOM-430?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Andreas Veithen updated AXIOM-430:
----------------------------------

    Description: 
The SOAPEnvelopeImpl#internalSerialize method contains code that skips the serialization of
the SOAP header if it is empty. Presumably this code is there because SOAPFactory#getDefaultEnvelope()
always creates a SOAP header, but one doesn't want that header to appear in the output if
there are no header blocks. However, this only works when the SOAPEnvelope is serialized to
an XMLStreamWriter, OutputStream or Writer. The header is still present in the sequence of
events produced by getXMLStreamReader or getSAXSource. This can be shown using the following
piece of code:

{code:java}
SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope envelope = factory.getDefaultEnvelope();
factory.createOMElement(new QName("urn:test", "test", "p"), envelope.getBody());
envelope.serialize(System.out);
System.out.println();
TransformerFactory.newInstance().newTransformer().transform(envelope.getSAXSource(true), new
StreamResult(System.out));
{code}

The output is: 

{code:xml}
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><p:test
xmlns:p="urn:test"/></soapenv:Body></soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><p:test
xmlns:p="urn:test"/></soapenv:Body></soapenv:Envelope>
{code}

In addition to that, SOAPEnvelopeImpl#internalSerialize also skips serialization of whitespace
and comments.

  was:
The SOAPEnvelopeImpl#internalSerialize method contains code that skips the serialization of
the SOAP header if it is empty. Presumably this code is there because SOAPFactory#getDefaultEnvelope()
always creates a SOAP header, but one doesn't want that header to appear in the output if
there are no header blocks. However, this only works when the SOAPEnvelope is serialized to
an XMLStreamWriter, OutputStream or Writer. The header is still present in the sequence of
events produced by getXMLStreamReader or getSAXSource. This can be shown using the following
piece of code:

        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
        SOAPEnvelope envelope = factory.getDefaultEnvelope();
        factory.createOMElement(new QName("urn:test", "test", "p"), envelope.getBody());
        envelope.serialize(System.out);
        System.out.println();
        TransformerFactory.newInstance().newTransformer().transform(envelope.getSAXSource(true),
new StreamResult(System.out));

The output is: 

<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><p:test
xmlns:p="urn:test"/></soapenv:Body></soapenv:Envelope>
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><p:test
xmlns:p="urn:test"/></soapenv:Body></soapenv:Envelope>

In addition to that, SOAPEnvelopeImpl#internalSerialize also skips serialization of whitespace
and comments.


> Inconsistent serialization of SOAPEnvelope
> ------------------------------------------
>
>                 Key: AXIOM-430
>                 URL: https://issues.apache.org/jira/browse/AXIOM-430
>             Project: Axiom
>          Issue Type: Bug
>          Components: DOOM, LLOM
>    Affects Versions: 1.2.13
>            Reporter: Andreas Veithen
>            Priority: Minor
>
> The SOAPEnvelopeImpl#internalSerialize method contains code that skips the serialization
of the SOAP header if it is empty. Presumably this code is there because SOAPFactory#getDefaultEnvelope()
always creates a SOAP header, but one doesn't want that header to appear in the output if
there are no header blocks. However, this only works when the SOAPEnvelope is serialized to
an XMLStreamWriter, OutputStream or Writer. The header is still present in the sequence of
events produced by getXMLStreamReader or getSAXSource. This can be shown using the following
piece of code:
> {code:java}
> SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
> SOAPEnvelope envelope = factory.getDefaultEnvelope();
> factory.createOMElement(new QName("urn:test", "test", "p"), envelope.getBody());
> envelope.serialize(System.out);
> System.out.println();
> TransformerFactory.newInstance().newTransformer().transform(envelope.getSAXSource(true),
new StreamResult(System.out));
> {code}
> The output is: 
> {code:xml}
> <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><p:test
xmlns:p="urn:test"/></soapenv:Body></soapenv:Envelope>
> <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header/><soapenv:Body><p:test
xmlns:p="urn:test"/></soapenv:Body></soapenv:Envelope>
> {code}
> In addition to that, SOAPEnvelopeImpl#internalSerialize also skips serialization of whitespace
and comments.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ws.apache.org
For additional commands, e-mail: dev-help@ws.apache.org


Mime
View raw message