[ 
https://issues.apache.org/jira/browse/AXIOM-420?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13399954#comment-13399954
 ] 

Hudson commented on AXIOM-420:
------------------------------

Integrated in ws-axiom-trunk #1046 (See 
[https://builds.apache.org/job/ws-axiom-trunk/1046/])
    AXIOM-420: Added some more test cases for the push-style OMDataSource 
stuff. (Revision 1353116)

     Result = SUCCESS
veithen : 
Files : 
* 
/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
* 
/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/TestWriteCData.java
* 
/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/TestWriteComment.java
* 
/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/TestWriteProcessingInstruction1.java
* 
/webservices/commons/trunk/modules/axiom/modules/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/sourcedelement/push/TestWriteProcessingInstruction2.java

                
> Support push-only OMDataSources
> -------------------------------
>
>                 Key: AXIOM-420
>                 URL: https://issues.apache.org/jira/browse/AXIOM-420
>             Project: Axiom
>          Issue Type: Improvement
>          Components: API, LLOM
>    Affects Versions: 1.2.13
>            Reporter: Andreas Veithen
>            Assignee: Andreas Veithen
>             Fix For: 1.2.14
>
>
> The OMSourcedElement/OMDataSource feature assumes that a data source is 
> equally well capable of providing an XMLStreamReader and of serializing the 
> data to an XMLStreamWriter. However, this is often not the case: serializing 
> to an XMLStreamWriter is in generally easy, but constructing an 
> XMLStreamReader may be highly non trivial. The consequence is that many 
> OMDataSource implementations implement getReader by first serializing the 
> data to an intermediary representation and than constructing an 
> XMLStreamReader from that representation. The following two approaches are 
> used most often:
> 1. getReader serializes the data as XML to a byte array (using one of the 
> serialize methods defined by OMDataSource) and then returns an 
> XMLStreamReader pull parser constructed from that byte array. Note that this 
> is highly inefficient (and even gives unexpected results) if the 
> serialization produces optimizable base64 binary data.
> 2. getReader first creates an Axiom tree and then uses 
> OMContainer#getXMLStreamReader(). For example, ADB does this by using an 
> XMLStreamWriter implementation (called MTOMAwareOMBuilder) that constructs 
> the Axiom tree. That XMLStreamWriter is passed to the 
> serialize(XMLStreamWriter) method. That approach is inefficient because in 
> the worst case, the Axiom tree is built twice: once by getReader and then 
> again by OMSourcedElement. This should be considered as an anti-pattern (see 
> http://ws.apache.org/axiom/userguide/ch05.html#d5e679).
> The issue can be avoided if the implementation of OMSourcedElement is changed 
> such that for this type of OMDataSource it uses a different approach to 
> expand the element: instead of using a standard OM builder to expand the 
> element, it would use the OMDataSource#serialize(XMLStreamWriter) method 
> together with an XMLStreamWriter that builds the nodes and adds them to the 
> OMSourcedElement. This is similar to what ADB already does, except that the 
> tree would be built only once because the constructed nodes are directly 
> added to the OMSourcedElement. Of course, since this approach is push based, 
> deferred building will not work and the OMSourcedElement is always built 
> completely if it gets expanded. It is nevertheless better than the other 
> approaches currently in use.

--
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]

Reply via email to