[ http://issues.apache.org/jira/browse/WSCOMMONS-74?page=comments#action_12430082 ] Eran Chinthaka commented on WSCOMMONS-74: -----------------------------------------
First appologies for bit of misleading/wrong comment above (http://issues.apache.org/jira/browse/WSCOMMONS-74#action_12429456). Anyway, having looked at the code Rich had pasted, now I also lean towards Glen's comment. If an element is defined with null as the namespace, then the element should not have an explicit namespace. In other words it should be in default *default* namespace. Which means the following code fragment is correct. if (writer.getNamespaceContext().getNamespaceURI("") != null) { writer.writeDefaultNamespace(""); } BTW, I can not understand why the comment there was obscure. IIRC, I put that comment and appologies if some of you can not understand that. Its my bad but I tried my level best to explain it from the little bit of English I know. > Incorrect namespace serialization > --------------------------------- > > Key: WSCOMMONS-74 > URL: http://issues.apache.org/jira/browse/WSCOMMONS-74 > Project: WS-Commons > Issue Type: Bug > Components: AXIOM > Reporter: Ruchith Udayanga Fernando > Assigned To: Rich Scheuerle > Priority: Blocker > Attachments: axiom_api_patch.txt, axiom_impl_patch.txt, > axiom_test_patch.txt, jaxsw_test_patch.txt, SerializationTest.java > > > Hi All, > I noticed that axiom doesn't serialize namespaces correctly. > 1.) Namespaces in qualified elements > For example we should be able to produce the following xml with the code that > follows: > <person1 xmlns="http://ws.apache.org/axis2/apacheconasia/06"> > <name>John</name> > <name>John12</name> > <age>34</age> > </person1> > OMFactory fac = OMAbstractFactory.getOMFactory(); > > OMNamespace ns = > fac.createOMNamespace("http://ws.apache.org/axis2/apacheconasia/06", ""); > OMElement personElem = fac.createOMElement("person", ns); > OMElement nameElem = fac.createOMElement("name", ns); > nameElem.setText("John"); > > OMElement ageElem = fac.createOMElement("age", ns); > ageElem.setText("34"); > > OMElement weightElem = fac.createOMElement("weight", ns); > weightElem.setText("50"); > > > //Add children to the person element > personElem.addChild(nameElem); > personElem.addChild(ageElem); > personElem.addChild(weightElem); > > String xml = personElem.toString(); > But right now this produces the following : > <person xmlns="http://ws.apache.org/axis2/apacheconasia/06"><name > xmlns="http://ws.apache.org/axis2/apacheconasia/06">John</name><age > xmlns="http://ws.apache.org/axis2/apacheconasia/06">34</age><weight > xmlns="http://ws.apache.org/axis2/apacheconasia/06">50</weight></person> > The repetition of the default namespace should be avoided. > This is the same even if we used a prefixed namespace. > 2.) Unqualified elements among qualified elements > > OMFactory fac = OMAbstractFactory.getOMFactory(); > OMNamespace ns = > fac.createOMNamespace("http://ws.apache.org/axis2/apacheconasia/06", ""); > OMElement personElem = fac.createOMElement("person", ns); > //Create and add an unqualified element > OMElement nameElem = fac.createOMElement("name", null); > nameElem.setText("John"); > personElem.addChild(nameElem); > OMElement ageElem = fac.createOMElement("age", ns); > ageElem.setText("34"); > > OMElement weightElem = fac.createOMElement("weight", ns); > weightElem.setText("50"); > personElem.addChild(ageElem); > personElem.addChild(weightElem); > System.out.println(personElem); > The above should produce the following : > <person xmlns="http://ws.apache.org/axis2/apacheconasia/06"><name > xmlns="">John</name><age>34</age><weight>50</weight></person> > But AXIOM right now produces : > <person > xmlns="http://ws.apache.org/axis2/apacheconasia/06"><name>John</name><age > xmlns="http://ws.apache.org/axis2/apacheconasia/06">34</age><weight > xmlns="http://ws.apache.org/axis2/apacheconasia/06">50</weight></person> > What do u folks think? > Thanks, > Ruchith > p.s. Added a test case -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
