[ 
https://issues.apache.org/jira/browse/CXF-2468?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12765148#action_12765148
 ] 

Daniel Kulp commented on CXF-2468:
----------------------------------



Is there any way you could create a small testcase and attach?  This actually 
looks like a bug in xmlbeans.   We pretty much copy the events that xmlbeans 
gives us to the output.   If it's not providing the xsi namespace when it needs 
it, that's possibly a bug in xmlbeans.   However, we may be able to provide a 
better workaround if I can get a good testcase that would allow me to dig in 
better.     Maybe call the XmlOptions.setSaveNamespacesFirst() option or 
something to put them at the top level.   Hard to tell without a testcase.


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

Reply via email to