[ 
https://issues.apache.org/jira/browse/WSCOMMONS-64?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Veithen updated WSCOMMONS-64:
-------------------------------------

    Component/s: AXIOM

> StreamingOMSerializer is invoking the XMLStreamWriter with a wrong sequence 
> of writes.
> --------------------------------------------------------------------------------------
>
>                 Key: WSCOMMONS-64
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-64
>             Project: WS-Commons
>          Issue Type: Bug
>          Components: AXIOM
>            Reporter: Rich Scheuerle
>            Assignee: Rich Scheuerle
>         Attachments: fullpatch.txt
>
>
> I found this problem while debugging AXIS2-913.  I attempted to write an 
> Axiom testcase, but could not reproduce the problem with just Axiom code.
> Here is the stack dump from AXIS2-913:
>     <error message="Unbound namespace URI &apos;http://test&apos;"; 
> type="javax.xml.stream.XMLStreamException">javax.xml.stream.XMLStreamException:
>  Unbound namespace URI &apos;http://test&apos;
> at 
> com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:240)
> at 
> com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:273)
> at 
> org.apache.axiom.om.impl.MTOMXMLStreamWriter.writeStartElement(MTOMXMLStreamWriter.java:87)
> at 
> org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeElement(StreamingOMSerializer.java:123)
> at 
> org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serializeNode(StreamingOMSerializer.java:73)
> at 
> org.apache.axiom.om.impl.serialize.StreamingOMSerializer.serialize(StreamingOMSerializer.java:56)
> at 
> org.apache.axiom.om.impl.util.OMSerializerUtil.serializeByPullStream(OMSerializerUtil.java:325)
> at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerialize(OMElementImpl.java:792)
> at 
> org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.internalSerialize(SOAPEnvelopeImpl.java:177)
> at 
> org.apache.axiom.om.impl.llom.OMElementImpl.internalSerializeAndConsume(OMElementImpl.java:811)
> at 
> org.apache.axiom.om.impl.llom.OMNodeImpl.serializeAndConsume(OMNodeImpl.java:378)
> at 
> org.apache.axis2.jaxws.message.MessageTests.testJAXBOutflow(MessageTests.java:304)
> at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
> at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
> at junit.extensions.TestSetup.run(TestSetup.java:23) 
> The root of the problem is that  StreamingOMSerializer is invoking the writer 
> using an incorrect  StAX sequence.
> This results in the writer reporting an unbound namespace.
> Similar (or the same problem) has been report in WSCOMMONS-33 and WSCOMMONS-62
> I have a fix for the problem.  I will be posting a patch in a few minutes.
> Here is the "new" algorithm that I have added to the 
> StreamingOMSerializer.serializeElement:
>         // The algorithm is:
>         // ... generate setPrefix/setDefaultNamespace for each namespace 
> declaration if the prefix is unassociated.
>       // ... generate setPrefix/setDefaultNamespace if the prefix of the 
> element is unassociated
>       // ... generate setPrefix/setDefaultNamespace for each unassociated 
> prefix of the attributes.
>       //
>       // ... generate writeStartElement
>       //
>       // ... generate writeNamespace/writerDefaultNamespace for each 
> namespace declaration on the element
>       // ... generate writeNamespace/writeDefaultNamespace for any new 
> "autogen" namespace/prefixes
>       // ... generate writeAttribute for each attribute
>       
> I have peer reviewed the code with a member of IBM's parser team (Perter 
> McCracken) and several of the IBM JAX-WS contributors.
> I would like a peer review from the Axiom community.  
> This issue is holding up some critical development in the JAXWS code.  So I 
> will be committing the fix later today, unless I get some negative feedback.
> Thanks,
> scheu

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to