[ 
http://issues.apache.org/jira/browse/WSCOMMONS-74?page=comments#action_12429435 
] 
            
Rich Scheuerle commented on WSCOMMONS-74:
-----------------------------------------

Though I agree in principle with Glenn's interpretation, it will add 
instability to existing code.

I made a quick change to OMElementImpl to interpret "null" as "unqualified" and 
14 tests (in just Axiom) failed.

So what I will do is as follows:

1)  Make the changes necessary for this serialization defect.

2) I will change the javadoc to indicate that a "null" OMNamespace means "use 
the scoped default namespace"

----------------------------------------------

So for the "interpretation of null OMNamespace" I have the following 
suggestions..(A different JIRA should be opened to investigate if something 
other than (A) is desired.)

A) Change the javadoc to reflect the current behavior (i.e. use the scoped 
default namespace).
      Pros: No breakage
      Cons: Seems like a funny rule

B) Like (A) but also add factory methods to explictly create unqualified 
elements (i.e. createOMElement(localName))
       Pros: No breakage and better apis
       Cons: Still have the funny rule for null.

C) Like (B) except that the OMFactory/OMElementImpl  should assert that the ns 
is not null
        Pros: Good rule
        Cons: Breakage, but the breakage will be immediate and mostly limited 
to the Axiom/Apache.

Note: In the implementation, a unqualified element will have the OMNamespace 
{"", ""}.  There will never be a situation where an OMElement has a null for 
the namespace.








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