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/07/13 20:41:05 UTC
[jira] Created: (WSCOMMONS-216) Expose getOutputStream() method on
MTOMXMLStreamWriter
Expose getOutputStream() method on MTOMXMLStreamWriter
------------------------------------------------------
Key: WSCOMMONS-216
URL: https://issues.apache.org/jira/browse/WSCOMMONS-216
Project: WS-Commons
Issue Type: Improvement
Components: AXIOM
Reporter: Rich Scheuerle
Assignee: Rich Scheuerle
Expose a getOutputStream() method on the MTOMXMLStreamWriter. This can boost performance for OMSourcedElement/OMDataSource items.
Here is the requested change to MTOMXMLStreamWriter
+
+ /**
+ * If the MTOMXMLStreamWriter is connected to an OutputStream
+ * then the OutputStream is returned. This allows a node
+ * (perhaps an OMSourcedElement) to write its content
+ * directly to the OutputStream.
+ * @return OutputStream or null
+ */
+ public OutputStream getOutputStream() throws XMLStreamException {
+ OutputStream os = outStream;
+ if (os != null) {
+ // Flush the state of the writer..Many times the
+ // write defers the writing of tag characters (>)
+ // until the next write. Flush out this character
+ this.writeCharacters("");
+ this.flush();
+ }
+ return os;
+ }
Here is the scenario that would have a performance boost.
(a) Transport layer invokes serializeAndConsume(OutputStream ...) on the OM tree.
(b) The implementation of serializeAndConsume always wraps the OutputStream with an MTOMXMLStreamWriter.
(c) The *serializeAndConsume(XMLStreamWriter ) is called on the children.
(d) One of the children is an OMSourcedElement, which is attached to a OMDataSource which wraps a data object (i.e. JAXB object).
(e) The OMDataSource.serialize(XMLStreamWriter) is invoked.
(f) Here's the problem. The implementation of OMDataSource (i.e. JAXB OMDataSource object) may have a faster mechanism for writing to an OutputStream than an XMLStreamWriter. If the MTOMXMLStreamWriter exposed a getOutputStream() method, the OMDataSource could write directly to it. If the OMDataSource wraps an byte[], InputStream, Source, etc. there is an even bigger performance savings.
I don't believe that adding getOutputStream() compromises the model.
Comments ?
Rich
--
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
[jira] Resolved: (WSCOMMONS-216) Expose getOutputStream() method on
MTOMXMLStreamWriter
Posted by "Rich Scheuerle (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/WSCOMMONS-216?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rich Scheuerle resolved WSCOMMONS-216.
--------------------------------------
Resolution: Fixed
Fixed. Revision is 556271.
> Expose getOutputStream() method on MTOMXMLStreamWriter
> ------------------------------------------------------
>
> Key: WSCOMMONS-216
> URL: https://issues.apache.org/jira/browse/WSCOMMONS-216
> Project: WS-Commons
> Issue Type: Improvement
> Components: AXIOM
> Reporter: Rich Scheuerle
> Assignee: Rich Scheuerle
>
> Expose a getOutputStream() method on the MTOMXMLStreamWriter. This can boost performance for OMSourcedElement/OMDataSource items.
> Here is the requested change to MTOMXMLStreamWriter
> +
> + /**
> + * If the MTOMXMLStreamWriter is connected to an OutputStream
> + * then the OutputStream is returned. This allows a node
> + * (perhaps an OMSourcedElement) to write its content
> + * directly to the OutputStream.
> + * @return OutputStream or null
> + */
> + public OutputStream getOutputStream() throws XMLStreamException {
> + OutputStream os = outStream;
> + if (os != null) {
> + // Flush the state of the writer..Many times the
> + // write defers the writing of tag characters (>)
> + // until the next write. Flush out this character
> + this.writeCharacters("");
> + this.flush();
> + }
> + return os;
> + }
> Here is the scenario that would have a performance boost.
> (a) Transport layer invokes serializeAndConsume(OutputStream ...) on the OM tree.
> (b) The implementation of serializeAndConsume always wraps the OutputStream with an MTOMXMLStreamWriter.
> (c) The *serializeAndConsume(XMLStreamWriter ) is called on the children.
> (d) One of the children is an OMSourcedElement, which is attached to a OMDataSource which wraps a data object (i.e. JAXB object).
> (e) The OMDataSource.serialize(XMLStreamWriter) is invoked.
> (f) Here's the problem. The implementation of OMDataSource (i.e. JAXB OMDataSource object) may have a faster mechanism for writing to an OutputStream than an XMLStreamWriter. If the MTOMXMLStreamWriter exposed a getOutputStream() method, the OMDataSource could write directly to it. If the OMDataSource wraps an byte[], InputStream, Source, etc. there is an even bigger performance savings.
> I don't believe that adding getOutputStream() compromises the model.
> Comments ?
> Rich
--
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
[jira] Commented: (WSCOMMONS-216) Expose getOutputStream() method
on MTOMXMLStreamWriter
Posted by "Davanum Srinivas (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/WSCOMMONS-216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12512573 ]
Davanum Srinivas commented on WSCOMMONS-216:
--------------------------------------------
Let's do it. +1 from me.
-- dims
> Expose getOutputStream() method on MTOMXMLStreamWriter
> ------------------------------------------------------
>
> Key: WSCOMMONS-216
> URL: https://issues.apache.org/jira/browse/WSCOMMONS-216
> Project: WS-Commons
> Issue Type: Improvement
> Components: AXIOM
> Reporter: Rich Scheuerle
> Assignee: Rich Scheuerle
>
> Expose a getOutputStream() method on the MTOMXMLStreamWriter. This can boost performance for OMSourcedElement/OMDataSource items.
> Here is the requested change to MTOMXMLStreamWriter
> +
> + /**
> + * If the MTOMXMLStreamWriter is connected to an OutputStream
> + * then the OutputStream is returned. This allows a node
> + * (perhaps an OMSourcedElement) to write its content
> + * directly to the OutputStream.
> + * @return OutputStream or null
> + */
> + public OutputStream getOutputStream() throws XMLStreamException {
> + OutputStream os = outStream;
> + if (os != null) {
> + // Flush the state of the writer..Many times the
> + // write defers the writing of tag characters (>)
> + // until the next write. Flush out this character
> + this.writeCharacters("");
> + this.flush();
> + }
> + return os;
> + }
> Here is the scenario that would have a performance boost.
> (a) Transport layer invokes serializeAndConsume(OutputStream ...) on the OM tree.
> (b) The implementation of serializeAndConsume always wraps the OutputStream with an MTOMXMLStreamWriter.
> (c) The *serializeAndConsume(XMLStreamWriter ) is called on the children.
> (d) One of the children is an OMSourcedElement, which is attached to a OMDataSource which wraps a data object (i.e. JAXB object).
> (e) The OMDataSource.serialize(XMLStreamWriter) is invoked.
> (f) Here's the problem. The implementation of OMDataSource (i.e. JAXB OMDataSource object) may have a faster mechanism for writing to an OutputStream than an XMLStreamWriter. If the MTOMXMLStreamWriter exposed a getOutputStream() method, the OMDataSource could write directly to it. If the OMDataSource wraps an byte[], InputStream, Source, etc. there is an even bigger performance savings.
> I don't believe that adding getOutputStream() compromises the model.
> Comments ?
> Rich
--
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