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
            Priority: Blocker
         Attachments: 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]

Reply via email to