Nicolas,

One more thing I noticed. Your schema has an error:

This part:

  <xsd:element ref="um:userref" minOccurs="0"/>

should be:

  <xsd:element type="um:userref" minOccurs="0"/>

since userref is a type, not a global element.

Frank.


Frank Budinsky/Toronto/i...@ibmca wrote on 08/21/2009 01:08:01 PM:

> This part seems quite wrong:
>
> Property contentProp = do_audit.getType().getProperty("content");
> DataObject contentDO = dobj.createDataObject(contentProp,
> contentProp.getType());
> contentDO.getList("userref").add(dobj);
> do_audit.setDataObject(contentProp, contentDO);
>
> I think it should be something like this:
>
> DataObject contentDO = do_audit.createDataObject("content");
> contentDO.getList("userref").add(dobj);
>
> Frank.
>
>
> Nicolas Nobelis <[email protected]> wrote on 08/21/2009
> 12:20:49 PM:
>
> > 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
> >
> >
> >
> >

Reply via email to