cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Michael Klimiuk (JIRA)" <j...@apache.org>
Subject [jira] Created: (CXF-2468) attribute namespace is missed in out message in case of XmlBeans data binding
Date Tue, 13 Oct 2009 13:00:33 GMT
attribute namespace is missed in out message in  case of XmlBeans data binding
------------------------------------------------------------------------------

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


SCENARIO:

The XmlBeans databinding is used.

Trying to send a message with an input data like:

<myOperation
        xmlns="http://sandbox.org/services/MyService/myOperation"
        xmlns:s1="http://sandbox.org/datatypes/one"
        xmlns:s2="http://sandbox.org/datatypes/two"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <data>
        <s1:oneElement>
            <s2:twoElement xsi:nil="true"/>
        </s1:oneElement>
    </data>
</myOperation>


ACTUAL RESULT:

The out message is generated as follows:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
    <myOperation xmlns="http://sandbox.org/services/MyService/myOperation">
        <data>
            <oneElement xmlns="http://sandbox.org/datatypes/one">
                <twoElement xmlns="http://sandbox.org/datatypes/two" xsi:nil="true"/>
            </oneElement>
        </data>
    </myOperation>
</soap:Body>
</soap:Envelope>

Namespace definition for "xsi" prefix is missed. And the receiver fails to process the message
because of validation.


EXPECTED RESULT:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
    <myOperation xmlns="http://sandbox.org/services/MyService/myOperation">
        <data>
            <oneElement xmlns="http://sandbox.org/datatypes/one">
                <twoElement xmlns="http://sandbox.org/datatypes/two" 
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                            xsi:nil="true"/>
            </oneElement>
        </data>
    </myOperation>
</soap:Body>
</soap:Envelope>

I.e. the namespace for "xsi" prefix is present.


ANALYSIS:

Analysis is based on the CXF 2.2.3.

Please have a look at the sources:

   Class: org.apache.cxf.staxutils.StaxUtils
   Method: writeStartElement(XMLStreamReader reader, XMLStreamWriter writer)
   The code under his comment -> // Write out attributes

My guess is:

   If we have both "ns" and "nsPrefix" that are not empty then the namespace definition should
be written.

   506            } else {
   507                writer.writeNamespace(nsPrefix, ns); // <-- THIS IS A NEW EXAMPLE
LINE OF WHAT IS DESIRED
   508                writer.writeAttribute(reader.getAttributePrefix(i), reader.getAttributeNamespace(i),
reader
   509                    .getAttributeLocalName(i), reader.getAttributeValue(i));
   510            }


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


Mime
View raw message