[ 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 'http://test'" > type="javax.xml.stream.XMLStreamException">javax.xml.stream.XMLStreamException: > Unbound namespace URI 'http://test' > 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.