Wrong serialization DataObject in XML if DataObject is defined by means of
dynamic type
---------------------------------------------------------------------------------------
Key: TUSCANY-2719
URL: https://issues.apache.org/jira/browse/TUSCANY-2719
Project: Tuscany
Issue Type: Bug
Components: Java SDO Implementation
Reporter: Andrey Utkin
SDO 2.1.0 Specification define rules for XML generation of DataObject`s
property defined by dynamic types (without XSD) that (part "10 Generation of
XSD from SDO Type and Property" page 107):
===
An element is generated if property.many,
property.containment, or property.nullable is true, or if
property.get(xmlElement) is
present and set to true, where xmlElement is an open content property in
commonj.sdo/xml. If the property is bidirectional and the opposite property has
containment=true, nothing is generated. Otherwise, an attribute is generated.
===
But Tuscany generates element by default. Attributes generated only for
properties with corresponding xmlElement - the "many" and "nullable" properties
dont checked.
XML documents generated for such DataObjects is not corresponds to XSD
generated for their Types (XSDHelper.generate()). So, it is not possible to
deserialize XML back to DataObject.
I have changed /org/apache/tuscany/sdo/helper/TypeHelperImpl.java method "void
initializeProperty()" as follow:
====
---
tuscany-sdo-1.1.1-src/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
2008-07-10 16:53:42.000000000 +0400
+++
/patch/apache-tuscany-sdo-1.1.1/tuscany-sdo-1.1.1-src/impl/src/main/java/org/apache/tuscany/sdo/helper/TypeHelperImpl.java
2008-12-05 06:54:56.000000000 +0300
@@ -271,6 +271,12 @@
}
}
}
+
+ // Check for many and nullable
+ if (!newProperty.isMany() && !newProperty.isNullable()) {
+ isXmlElement = Boolean.FALSE;
+ }
+
if (!isXmlElement.booleanValue()) {
SDOUtil.setPropertyXMLKind(newProperty, false);
}
====
May be it is not very correct, but works for me ^)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.