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