Hi Cezar,

imagine the following: a complex type "Top" is existing and an inherited 
complex type "Sub" from "Top" is existing. Sub does extend Top with a string 
value "Something".
If I do the following:

Top topsub = Top.Factory.newInstance();
topsub.changeType(Sub.type);
topsub.setSomething("a value only for sub");
topsub.changeType(Top.type));
boolean isValid = topsub.validate();


isValid will be false, because topsub is at the end of type Top but the xml 
output defines the something element of sub. My expectation is that the 
changeType(Top.type) will cause that the something element will be ignored and 
not unmarshalled to xml and validation.

Regards,
Oliver



________________________________
Von: Cezar Andrei [mailto:cezar.and...@oracle.com]
Gesendet: Montag, 16. November 2009 21:45
An: user@xmlbeans.apache.org
Betreff: RE: changeType to type with fewer element

Oliver,

I'm not sure what is your question, but you have to keep in mind that 
validation is run only when validate() method is invoked.
Especially when it is structure related operations modifying the document don't 
keep the document valid. Most of the time a document has to go through a series 
of invalid states to become valid again. XMLBeans' user cooperation is required 
to attain document's validity after modifications.

Cezar

________________________________
From: Oliver Pfau [mailto:oliver.p...@scalaris.com]
Sent: Friday, November 13, 2009 7:03 AM
To: user@xmlbeans.apache.org
Subject: changeType to type with fewer element

Hi,

it seems that XmlBeans is generating invalid xml when I change the type to a 
type with fewer elements. There is an example with abstract conrete types on 
the XmlBeans homepage called "AbstractTypes". In the file AbstractTypes.java 
there is this section:

...
Circle circle = (Circle) s1.changeType(Circle.type);
circle.setRadius(10.0);
...

s1 is a shape (more common). If the type of circle is changed to a more common 
type, the radius is nevertheless set for the Shape type. The Validation of the 
changed circle to a Shape will fail, because the radius is existing in the xml 
event though the xsi:type is correct. The xml and the java representation seems 
to be here out of sync. Isn't it ? Or is there a trick ?

Regards,
Oliver

Reply via email to