Re: Comments about the new UnknownContentBuilder (AXIS2-4153)
Sanjiva Weerawarana <[email protected]> Thu, 18 Dec 2008 09:57:19 +0530
| Newsgroups | gmane.text.xml.axis.devel,gmane.text.xml.commons.devel |
|---|---|
| Message-ID | <[email protected]> |
Can we please move the BinaryBuilder to axis2 with the rest of the message builders? Sanjiva. Thilina Gunarathne wrote: > Hi Andreas, > I'm sorry, I missed this mail.. Saw it only now... > > I agree with you regarding the 1. But I guess the solution will need to > address deferred building, which will make it bit complex... Something > like implementing a pushbackInputStream which will directly give the > bytes from the transport inputstream while buffering it to give it the > next time... > > Regarding 2, I don't think we can call anything "the" right solution for > this. Normally Axis2 uses OMDataSources to carry native data as long as > it can, so that if an entity which knows how to process the native data > can take advantage of it.. Also using the OMSourcedElement, clearly > distinguish the usage of unknown content from other messages... > > Regarding the 3, my apologies once again... I was not aware of such a > thing when I wrote the above. IMHO builder should live inside Axis2.. I > did this (and the mime support) as a solution to the issue raised in > Synapse. Wonder why they did not simply use the impl you mentioned.... > May be I'm missing something.. Let's see how we can combine these efforts... > > thanks, > Thilina. > > 1. The class InputStreamDataSource (the one in > org.apache.axis2.builder.unknowncontent) violates the > javax.activation.DataSource contract which says for the getInputStream > method that "a new InputStream object must be returned each time this > method is called, and [that] the stream must be positioned at the > beginning of the data." The consequence will be that the message > produced by UnknownContentBuilder can only be read once. This is a > serious flaw. > > 2. The AXIOM tree produced by UnknownContentBuilder has only two > nodes: an OMElement and an OMText (with a DataHandler). Using an > OMSourcedElement/OMDataSource is not justified for this and would > introduce unnecessary complexity and overhead. > > > > 3. The code in UnknownContentBuilder to a large extend duplicates the > code in org.apache.axis2.format.BinaryBuilder (in > axis2-transport-base), which doesn't have problems 1 and 2. > > Could you please make a proposal how to improve this? > > Regards, > > Andreas > > > > > -- > Thilina Gunarathne - http://thilinag.blogspot.com -- Sanjiva Weerawarana, Ph.D. Founder & Director; Lanka Software Foundation; http://www.opensource.lk/ Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/ Member; Apache Software Foundation; http://www.apache.org/ Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/ Blog: http://sanjiva.weerawarana.org/