You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by "Rich Scheuerle (JIRA)" <ji...@apache.org> on 2007/08/09 17:11:43 UTC

[jira] Assigned: (WSCOMMONS-231) MTOMXMLStreamWriter flush() can cause attachments to be written at the wrong time

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

Rich Scheuerle reassigned WSCOMMONS-231:
----------------------------------------

    Assignee: Rich Scheuerle

> MTOMXMLStreamWriter flush() can cause attachments to be written at the wrong time
> ---------------------------------------------------------------------------------
>
>                 Key: WSCOMMONS-231
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-231
>             Project: WS-Commons
>          Issue Type: Bug
>            Reporter: Rich Scheuerle
>            Assignee: Rich Scheuerle
>
> Upgrades to MTOMXMLStreamWriter
> Summary of Changes:
>     1) Improve quality of the attachment writing code.
>     2) Improve access to the OutputStream.
>     3) JavaDoc improvements.
>   
> Problem Scenario 1:
>     The MTOMXMLStreamWriter overrides the XMLStreamWriter.flush() method.  It uses the flush() as 
>     a trigger to write out the attachments.  However, if flush() is invoked inside the SOAPPart or 
>     if it is called multiple times, the output message is corrupted.  
> Solution:
>     Upgraded the methods to keep track of writer state information.  For example, the writer
>     keeps track of when the endDocument is written.  The flush() method is changed to write
>     attachments after the SOAPPart is complete.  I also added code to ensure that the attachments
>     are written only one time.
> ---------------------------------
> Problem Scenario 2:
>     The MTOMXMLStreamWriter exposes a getOutputStream() method.  This method provides access
>     to the OutputStream (if available) so that an underlying data source can write directly to 
>     the stream.  In many cases it is more performant to write to the OutputStream instead of writing
>     through the XMLStreamReader interface.  In the current implementation, the OutputStream is not 
>     available if the SOAPPart xml is being buffered.
> Solution:
>     Changed the code to buffer the SOAPPart xml in a ByteArrayOutputStream.  The getOutputStream() method
>     provides access to this buffered stream.  Minor additions were made to the MIMEOutputUtils
> Possible Future Follow-Up Work:
>     Buffering the SOAPPart XML is expensive if the xml document is large.  We should consider
>     a streaming solution that avoids buffering.  This will require additional changes to MIMEOutputUtils.
> I have a code change, which I will commit in a few minutes.

-- 
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: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org