[
https://issues.apache.org/jira/browse/AXIOM-419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13437266#comment-13437266
]
Hudson commented on AXIOM-419:
------------------------------
Integrated in ws-axiom-trunk #1168 (See
[https://builds.apache.org/job/ws-axiom-trunk/1168/])
AXIOM-419: Deprecated OMDataSourceExtBase and added Javadoc to
AbstractOMDataSource. (Revision 1374516)
Result = SUCCESS
veithen :
Files :
*
/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/AbstractOMDataSource.java
*
/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/ds/OMDataSourceExtBase.java
> Multiple issues in OMDataSourceExtBase
> --------------------------------------
>
> Key: AXIOM-419
> URL: https://issues.apache.org/jira/browse/AXIOM-419
> Project: Axiom
> Issue Type: Bug
> Components: API
> Affects Versions: 1.2.13
> Reporter: Andreas Veithen
> Assignee: Andreas Veithen
> Priority: Minor
> Fix For: 1.2.14
>
>
> OMDataSourceExtBase has multiple issues and we should probably deprecate it
> in favor of a cleaner implementation:
> (1) The default implementation of serialize(OutputStream, OMOutputFormat)
> relies on getXMLBytes:
> output.write(getXMLBytes(format.getCharSetEncoding()));
> This is probably the worst choice from a performance point of view.
> (2) The default implementation of serialize(Writer, OMOutputFormat) is even
> worse:
> String text = new
> String(getXMLBytes(format.getCharSetEncoding()));
> writer.write(text);
> (3) serialize(XMLStreamWriter) tries to optimize the serialization by using
> serialize(OutputStream, OMOutputFormat) if the XMLStreamWriter is a
> MTOMXMLStreamWriter, i.e. it attempts to bypass the XMLStreamWriter. However,
> as noted in the Axiom 1.3 roadmap, this kind of optimization is non trivial
> and the serialize(OutputStream, OMOutputFormat) is not well designed for
> this. The issues that may arise can be demonstrated using the
> InputStreamDataSource (which extends OMDataSourceExtBase):
> OMFactory factory = OMAbstractFactory.getOMFactory();
> OMElement parent = factory.createOMElement("root",
> factory.createOMNamespace("urn:parent", ""));
> OMSourcedElement child = factory.createOMElement(new
> InputStreamDataSource(new ByteArrayInputStream("<child/>".getBytes("utf-8")),
> "utf-8"), new QName("child"));
> // child.getFirstOMChild();
> parent.addChild(child);
> parent.serializeAndConsume(System.out, new OMOutputFormat());
> The output of this code is:
> <root xmlns="urn:parent"><child/></root>
> This is incorrect because the namespace of the child element in the output is
> urn:parent while the original element has no namespace. If the line forcing
> the expansion of the OMSourcedElement is uncommented, then the result is
> correct:
> <root xmlns="urn:parent"><child xmlns=""/></root>
> (4) The class contains code (see the private reader2writer method) that
> copies events from the XMLStreamReader produced by getReader() to an
> XMLStreamWriter. However, that code actually fully builds an Axiom tree,
> which is the least optimal approach.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]