Greetings ! Sorry for this huge post but I'm completely stuck with SDO ...
I am using Tuscany tuscany-sdo-impl-1.1.1.jar with JDK 6. I have a XML schema audit.xsd : <xsd:schema targetNamespace="http://example.com/request/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:req="http://example.com/request/1.0" xmlns:um="http://example.com/usermodel/1.0" xmlns="http://example.com/request/1.0" elementFormDefault="qualified"> <xsd:include schemaLocation="usermodel.xsd"/> <xsd:complexType name="auditlog"> <xsd:all> [...] <xsd:element name="content" type="content" minOccurs="0" maxOccurs="1"/> </xsd:all> </xsd:complexType> <xsd:complexType name="content" mixed="false"> <xsd:sequence minOccurs="0" maxOccurs="unbounded"> <xsd:element ref="um:userref" minOccurs="0"/> </xsd:sequence> </xsd:complexType> </xsd:schema> This schema references usermodel.xsd which contains : <xsd:complexType name="umref"> <xsd:all> <xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:all> </xsd:complexType> <xsd:complexType name="userref"> <xsd:complexContent> <xsd:extension base="um:umref"> </xsd:extension> </xsd:complexContent> </xsd:complexType> So I give these two schemas to the XSDHelper through the "define" method. From the same HelperContext, I create a userref DO : dobj = getDataFactory().create("http://example.com/usermodel/1.0", "userref"); I set its property : dobj.setString("name", "blabla"); Then, I take an AuditLog DataObject do_audit and I add dobj as the attribute "content" : Property contentProp = do_audit.getType().getProperty("content"); DataObject contentDO = dobj.createDataObject(contentProp, contentProp.getType()); contentDO.getList("userref").add(dobj); do_audit.setDataObject(contentProp, contentDO); Finally, from the same HelperContext, I save the do_audit object : getXMLHelper().save(content, "http://example.com/request/1.0", "auditlog"); and I get : <?xml version="1.0" encoding="UTF-8"?> <req:auditlog xmlns:req="http://example.com/request/1.0" xmlns:um="http://example.com/usermodel/1.0"> [...] <req:content> <um:userref>org.apache.tuscany.sdo.impl.dynamicdataobjecti...@2c47d7 (eClass: org.apache.tuscany.sdo.impl.classi...@1e2a543 (name: userref) (instanceClassName: null) (abstract: false, interface: false)) </um:userref> </req:content> </req:auditlog> Could anybody tell me why the address of the object is written and not its contents ? Thanks a lot for any tips or advice :) Best regards and a nice w.e. to all ! Nicolas Nobelis
