[
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]