|Davanum Srinivas||Jul 27, 2009 3:45 pm|
|Andreas Veithen||Jul 28, 2009 12:21 am|
|Andreas Veithen||Jul 28, 2009 5:33 am|
|R J Scheuerle Jr||Jul 28, 2009 5:52 am|
|Davanum Srinivas||Jul 28, 2009 6:04 am|
|R J Scheuerle Jr||Jul 28, 2009 6:35 am|
|Andreas Veithen||Jul 28, 2009 7:09 am|
|R J Scheuerle Jr||Jul 28, 2009 7:14 am|
|Andreas Veithen||Aug 2, 2009 2:07 am||.zip|
|Davanum Srinivas||Aug 2, 2009 6:42 pm|
|Andreas Veithen||Aug 3, 2009 12:26 am|
|Davanum Srinivas||Aug 3, 2009 4:43 am|
|Andreas Veithen||Aug 8, 2009 8:24 am||.zip|
|Andreas Veithen||Aug 8, 2009 11:44 am|
|Davanum Srinivas||Aug 9, 2009 4:15 pm|
|Subject:||Re: Stax parsers - one more variation|
|From:||Andreas Veithen (andr...@gmail.com)|
|Date:||Jul 28, 2009 12:21:44 am|
Actually I initially developed the idea to have the concept of a "StAX dialect" in Axiom when I saw this piece of code. I started to implement this feature when trying to solve the thread safety issue, but the aim is clearly to get rid of the isSetPrefixBeforeStartElement hack(s).
I had a closer look at the code during the weekend, but I fail to see in which case we would actually need/have isSetPrefixBeforeStartElement == true. In my opinion, the StAX specifications don't leave enough room for the second interpretation (that setPrefix would apply to the next writeStartElement) . Also, of all the StAX implementations I've seen, none expects this. Do you have any idea which "user community" "believes" this?
On Tue, Jul 28, 2009 at 00:45, Davanum Srinivas<dava...@gmail.com> wrote:
Not sure if you have seen this already. There's some convoluted code in org/apache/axiom/om/impl/util/OMSerializerUtil.java (method isSetPrefixBeforeStartElement) which basically has a toggle based on the parsers.
// Fallback: Toggle based on sun or woodstox implementation. NamespaceContext nc = writer.getNamespaceContext(); ret = (nc == null || (nc.getClass().getName().indexOf("wstx") == -1 && nc.getClass().getName().indexOf("weblogic") == -1 && nc.getClass().getName().indexOf("sun") == -1));
The javadoc has more information:
/** * Unfortunately there is disagreement in the user community about the semantics of setPrefix on * the XMLStreamWriter. An example will explain the difference: writer.startElement("a") * writer.setPrefix("pre", "urn://sample") writer.startElement("b") * <p/> * Some user communities (woodstox) believe that the setPrefix is associate with the scope for * "a" and thus remains in scope until the end of a. The basis for this believe is * XMLStreamWriter javadoc (which some would argue is incomplete). * <p/> * Some user communities believe that the setPrefix is associated with the "b" element. These * communities reference an example in the specification and historical usage of SAX. * <p/> * This method will return true if the setPrefix is associated with the next writeStartElement. * * @param writer * @return true if setPrefix should be generated before startElement */
Can you please take a look?
If we can find a way to totally remove the need for caching the boolean after checking the xmlstreamwriter, that would be a big bonus.
-- Davanum Srinivas :: http://davanum.wordpress.com