Dennis,

Probably one could discuss for hours what should be considered as the
correct behavior, and there are good arguments for both points of
view. I guess that for Woodstox, the justification is that their
approach guarantees that when serializing and deserializing a
document, CHARACTERS events are reconstructed exactly, i.e. without
loosing CR characters.

As suggested in my initial reply, I think that Axiom has everything
that is needed to make this easily configurable. I was planning to add
a FAQ entry to explain how to achieve this.

Andreas

On Thu, Jul 16, 2009 at 18:39, Dennis Sosnoski<[email protected]> wrote:
> Hi Andreas,
>
> Calling this "the correct behavior" seems a stretch to me. It's the expected
> behavior using the Woodstox output handling, but it leads to strange results
> in practice. There's no justification in terms of the XML specification for
> escaping the LF character, since the specification explicitly allows for the
> various CR/LF combinations (and normalizes them all on input).
>
> It'd be better if Axis2 disabled this Woodstox peculiarity by default.
>
>  - Dennis
>
>
> Andreas Veithen wrote:
>>
>> Yuri,
>>
>> This is actually the correct behavior. There is a discussion in
>> WSCOMMONS-243 [1] and WSTX-94 [2] about why this is so. If you need to
>> override this behavior, you may use the feature introduced by
>> WSCOMMONS-461.
>>
>> Andreas
>>
>> [1] https://issues.apache.org/jira/browse/WSCOMMONS-243
>> [2] http://jira.codehaus.org/browse/WSTX-94
>>
>> On Wed, Jul 15, 2009 at 04:11, iuriep<[email protected]> wrote:
>>
>>>
>>> Hello,
>>>
>>> I have implemented a web service and deployed it on Apache Axis2 1.4
>>>
>>> One of the XML elements (Payload element) declared as XML type 'String'
>>> may
>>> include text containing CRLF (carriage-return, linefeed) character
>>> sequence.
>>>
>>> The problem is that CRLF character sequence is normalized by Axis into
>>> #xD.
>>> The LF character is escaped in the output.
>>>
>>> The Java code used to serialize the content of Payload element was
>>> generated
>>> by WSDL2Java tool and looks like this:
>>>
>>> public void serialize(final QName parentQName,
>>>                         final OMFactory factory,
>>>                         MTOMAwareXMLStreamWriter xmlWriter,
>>>                         boolean serializeType)
>>>           throws XMLStreamException, ADBException {
>>>
>>>       protected String localPayload;
>>>       ...
>>>       if (localPayload == null) {
>>>           // write the nil attribute
>>>           throw new ADBException(PAYLOAD_CANNOT_BE_NULL);
>>>       } else {
>>>           xmlWriter.writeCharacters(localPayload);
>>>       }
>>>       ...
>>> }
>>>
>>> In the tcpmonitor the SOAP message that is being sent looks like:
>>>
>>> POST /axis2/services/Core/realtime/?OrgTaskID=100303 HTTP/1.1
>>> Content-Type: application/soap+xml; charset=UTF-8;
>>> action="RealTimeTransaction"
>>> User-Agent: Axis2
>>> Host: iuriep-ws:8079
>>> Transfer-Encoding: chunked
>>>
>>> <?xml version='1.0' encoding='UTF-8'?>
>>>  <soapenv:Envelope
>>> xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
>>>     <soapenv:Header>
>>>        <wsse:Security
>>>
>>> xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
>>> soapenv:mustUnderstand="true">
>>>           <wsse:UsernameToken
>>>
>>> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>>> wsu:Id="UsernameToken-29624571">
>>>              <wsse:Username>user100303</wsse:Username>
>>>              <wsse:Password
>>>
>>> Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText";>kL1dVUPf5U</wsse:Password>
>>>           </wsse:UsernameToken>
>>>        </wsse:Security>
>>>     </soapenv:Header>
>>>     <soapenv:Body>
>>>        <ns1:COREEnvelopeRealTimeRequest
>>> xmlns:ns1="http://www.caqh.org/SOAP/WSDL/CORERule2.0.1.xsd";>
>>>           <PayloadType>X12_276_004010X093A1</PayloadType>
>>>           <ProcessingMode>RealTime</ProcessingMode>
>>>           <PayloadID>a7cea1a0-6cb9-11de-8782-000c2987b7be</PayloadID>
>>>           <TimeStamp>2009-07-09T06:52:30Z</TimeStamp>
>>>           <SenderID>EDIFECS TSK0021</SenderID>
>>>           <ReceiverID>987654321</ReceiverID>
>>>           <CORERuleVersion>2.0.1</CORERuleVersion>
>>>
>>> <Payload>ISA*00*00*987654321*0652*0*P*:#xD;GS*HR*TSK0021*004010X093A1#xD;ST*276*0001#xD;BHT*0010*13**4*3*22*0#xD;DMG*D8*19821103*M#xD;NM1*IL*1*PULSIPHER*BILL*K***MI*5643796#xD;TRN*1*ICN98765432#xD;REF*1K*DCN123467#xD;AMT*T3*2312#xD;DTP*232*RD8*20080401-20080430#xD;SE*16*0001#xD;GE*1*100001112#xD;IEA*1*100001112#xD;</Payload>
>>>        </ns1:COREEnvelopeRealTimeRequest>
>>>     </soapenv:Body>
>>>  </soapenv:Envelope>
>>>
>>>
>>> I have used WSDL2java tool to generate the stubs, skeletons, and data
>>> types
>>> from WSDL
>>> I am also using the Pampart 1.4 module to include security headers into
>>> the
>>> SOAP message.
>>>
>>> Thanks in advance for any suggestion,
>>> Yuri
>>> --
>>> View this message in context:
>>> http://www.nabble.com/New-Line-character-is-escaped-in-the-created-SOAP-message-in-Axis2-1.4-web-service.-tp24490808p24490808.html
>>> Sent from the Axis - User mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>>
>

Reply via email to