XMLBEANS_NAMESPACE_HACK alternative is missing in case of XmlBeans data binding
-------------------------------------------------------------------------------

                 Key: CXF-2510
                 URL: https://issues.apache.org/jira/browse/CXF-2510
             Project: CXF
          Issue Type: Bug
          Components: OtherDatabindings
            Reporter: Michael Klimiuk
            Priority: Critical


MAIN DESCRIPTION

Is there a chance to port the XMLBEANS_NAMESPACE_HACK feature from XFire to CXF?

Here is a reference: http://xfire.codehaus.org/XMLBeans+Integration



PROBLEM

CXF always use XMLBeans XMLStreamReader to write to the outgoing xml stream.

There is a number of issues related to namespaces when this reader is used, 
e.g.:

1. It either fails to read info or fails to write info in some cases.

2. Namespaces are duplicated for each element even with
   the fix http://issues.apache.org/jira/browse/CXF-2468

If there was an opportunity to switch CXF to use XMLBeans DOM as a source object
instead of XMLStreamReader then I suppose these issues would be resolved.



BACKGROUND - SOME XFIRE SOURCES

xfire-1.2.4\xfire-xmlbeans\src\main\org\codehaus\xfire\xmlbeans\XmlBeansType.java

Here is an excerpt from the XmlBeansType.writeObject(..) method:

            if (Boolean.valueOf((String) 
context.getContextualProperty(XMLBEANS_NAMESPACE_HACK)).booleanValue())
            {
                Object o = obj.newDomNode();
                if (o instanceof Document)
                {
                    org.w3c.dom.Element e = ((Document) o).getDocumentElement();
                    STAXUtils.writeElement(e, xsw, false);
                }
                else if (o instanceof DocumentFragment)
                {
                    DocumentFragment frag = (DocumentFragment) o;
                    
                    NodeList nodes = frag.getChildNodes();
                    Node node = nodes.item(0);
                    nodes = node.getChildNodes();
                    for (int i = 0; i < nodes.getLength(); i++)
                    {
                        STAXUtils.writeNode(nodes.item(i), xsw, false);
                    }
                }
                else
                {
                    throw new XFireRuntimeException("Invalid document type 
returned: " + o);
                }
            }
            else
            {
                XmlCursor cursor = obj.newCursor();
                
                STAXUtils.copy(cursor.newXMLStreamReader(), 
                                ((ElementWriter) writer).getXMLStreamWriter());
            }

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