I have used XML, schemas and namespaces and am reasonably familiar with those concepts.
The problem is that all the documentation I have read so far is about creating this mapping.xml file to describe your mapping. I do not know how XML schemas can be used to define the mapping. I have not seen any documentation that talks about using schemas for that. Hence I don't see how IDREFs etc are relevant to my problem. For example the mentioned http://www.castor.org/how-to-use-references-in-xml.html talks about creating a mapping XML and I cannot see schemas mentioned there. Please enlighten me... 2009/11/17 Werner Guttmann <[email protected]> > Hi, > > jarkko pave wrote: > > Hi, > > > > I have looked a bit at schema, ID and IDREFs... > > > > how do I "use XML schemas to define your contracts"? Where can I find > > documentation on this? > If you are not really familiar with e.g. XML schemas as a construct to > provide a structure definition for your XML documents, I am not really > of any help here. > > When you want to use Castor XML as a XML data binding framework, some > knowledge in the areas related (XML, XMl schemas, namespaces, ....) are > a pre-requisite. > > Cheers > Werner > > > > > > 2009/11/13 Werner Guttmann <[email protected]> > > > >> Hi, > >> > >> jimmi4664 wrote: > >>> There's no requirements on the XML, other than I want to persist my > >> objects > >>> as an XML file, and be able to reconstruct them later. The resulting > XML > >> can > >>> (pretty much) be whatever castor would like it to be. > >>> > >>> So, -for example- following XML would be fine: > >>> > >>> <person> > >>> <name>asdfas</name> > >>> <castor-generated-id>4652</castor-generated-id> > >>> <cars> > >>> <car> > >>> <license-plate>34243</license-plate> > >>> <owner-castor-generated-id>4652</owner-castor-generated-id > > >>> </car> > >>> <car> > >>> <license-plate>111221</license-plate> > >>> < owner-castor-generated-id >4652</owner-castor-generated-id > > >>> </car> > >>> </cars> > >>> </person> > >>> > >>> The fact is that I don't have "id" field in my objects. They are pure > >> POJOs > >>> and just have object references to one another. Castor _could_ > >> theoretically > >>> cope with this requirement by just using object identity and generating > >>> correct "id" fields internally. > >> Yes and no. If you were to use XML schemas to define your contracts, > >> you'd be using <xsd:ID/> and <xsd:IDREF/> types to denote that you are > >> dealing with (cyclic) references. Have a look at e.g. the XML Schema > >> Primer [1] first, and we'll continue our conversation after you have > >> familiarized yourself with the concepts presented therein. > >> > >> Okay ? > >> > >> Regards > >> Werner > >> > >> [1] http://www.w3.org/TR/xmlschema-0/ > >> > >>> I don't know if this is available, or do I need to create artificial ID > >>> fields in my POJOs? > >>> > >>> Another alternative is to forget about Car.owner in the mapping and > just > >> fix > >>> it manually after unmarshalling the objects. > >>> > >>> > >>> Werner Guttmann-6 wrote: > >>>> Hi, > >>>> > >>>> how does/should your XML actually look like ? > >>>> > >>>> Regards > >>>> Werner > >>>> > >>>> jimmi4664 wrote: > >>>>> That seems to assume I would have a unique identifier in my object. > >>>>> There's > >>>>> actually no good field in my example that could be used like that, > and > >>>>> what's worse my real world case does not have that either. > >>>>> > >>>>> So I believe if I want to make castor set the references correctly, I > >>>>> need > >>>>> to add some artificial ID field to my classes? > >>>>> > >>>>> > >>>>> > >>>>> Ralf Joachim-2 wrote: > >>>>>> Hi Janne, > >>>>>> > >>>>>> when using mapping usage of references as explained in: > >>>>>> > >>>>>> http://www.castor.org/how-to-use-references-in-xml.html > >>>>>> > >>>>>> may help. If you generate code out of XSD you may need to take a > look > >> at > >>>>>> xs:id and xs:idref to handle this. > >>>>>> > >>>>>> Having said that I never used that myself. > >>>>>> > >>>>>> Regards > >>>>>> Ralf > >>>>>> > >>>>>> jimmi4664 schrieb: > >>>>>>> I tried autocreating mapping file for a simple example using > >>>>>>> MappingTool > >>>>>>> to > >>>>>>> maybe give a hint on how to do this: > >>>>>>> > >>>>>>> public class Owner { > >>>>>>> private String name; > >>>>>>> private ArrayList<Vehicle> vehicles = new ArrayList<Vehicle>(); > >>>>>>> > >>>>>>> public String getName() { > >>>>>>> return name; > >>>>>>> } > >>>>>>> > >>>>>>> public void setName(String name) { > >>>>>>> this.name = name; > >>>>>>> } > >>>>>>> > >>>>>>> public ArrayList<Vehicle> getVehicles() { > >>>>>>> return vehicles; > >>>>>>> } > >>>>>>> > >>>>>>> public void setVehicles(ArrayList<Vehicle> vehicles) { > >>>>>>> this.vehicles = vehicles; > >>>>>>> } > >>>>>>> } > >>>>>>> > >>>>>>> public class Vehicle { > >>>>>>> private String name; > >>>>>>> private Owner owner; > >>>>>>> > >>>>>>> public String getName() { > >>>>>>> return name; > >>>>>>> } > >>>>>>> > >>>>>>> public void setName(String name) { > >>>>>>> this.name = name; > >>>>>>> } > >>>>>>> > >>>>>>> public Owner getOwner() { > >>>>>>> return owner; > >>>>>>> } > >>>>>>> > >>>>>>> public void setOwner(Owner owner) { > >>>>>>> this.owner = owner; > >>>>>>> } > >>>>>>> } > >>>>>>> > >>>>>>> MappingTool tool = new MappingTool(); > >>>>>>> tool.setInternalContext(new > >>>>>>> BackwardCompatibilityContext()); > >>>>>>> boolean deep = true; > >>>>>>> File targetFile = new File("generated-mapping.xml"); > >>>>>>> log.debug("generating mapping file..."); > >>>>>>> tool.addClass(Owner.class, deep); > >>>>>>> fw = new FileWriter(targetFile); > >>>>>>> tool.write(fw); > >>>>>>> log.debug("...done generating mapping file: " + > >>>>>>> targetFile); > >>>>>>> > >>>>>>> But the end result is: > >>>>>>> > >>>>>>> <?xml version="1.0" encoding="UTF-8"?> > >>>>>>> <mapping xmlns="http://castor.exolab.org/" > >>>>>>> xmlns:cst="http://castor.exolab.org/"> > >>>>>>> <description xmlns="">Castor generated mapping > file</description> > >>>>>>> <class name="tests.Owner"> > >>>>>>> <description xmlns="">Default mapping for class > >>>>>>> tests.Owner</description> > >>>>>>> <map-to/> > >>>>>>> <field name="name" type="java.lang.String"> > >>>>>>> <bind-xml name="name" node="element"/> > >>>>>>> </field> > >>>>>>> <field name="vehicles" type="java.lang.Object" > >>>>>>> collection="arraylist"> > >>>>>>> <bind-xml name="vehicles" node="element"/> > >>>>>>> </field> > >>>>>>> </class> > >>>>>>> </mapping> > >>>>>>> > >>>>>>> So it seems it maps Vehicles in the list as Objects, which does not > >>>>>>> help > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> -- > >>>>>> > >>>>>> Syscon Ingenieurbüro für Meß- und Datentechnik GmbH > >>>>>> Ralf Joachim > >>>>>> Raiffeisenstraße 11 > >>>>>> 72127 Kusterdingen > >>>>>> Germany > >>>>>> > >>>>>> Tel. +49 7071 3690 52 > >>>>>> Mobil: +49 173 9630135 > >>>>>> Fax +49 7071 3690 98 > >>>>>> > >>>>>> Internet: www.syscon.eu > >>>>>> E-Mail: [email protected] > >>>>>> > >>>>>> Sitz der Gesellschaft: D-72127 Kusterdingen > >>>>>> Registereintrag: Amtsgericht Stuttgart, HRB 382295 > >>>>>> Geschäftsleitung: Jens Joachim, Ralf Joachim > >>>>>> > >>>>>> > >>>>>> > --------------------------------------------------------------------- > >>>>>> To unsubscribe from this list, please visit: > >>>>>> > >>>>>> http://xircles.codehaus.org/manage_email > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>> --------------------------------------------------------------------- > >>>> To unsubscribe from this list, please visit: > >>>> > >>>> http://xircles.codehaus.org/manage_email > >>>> > >>>> > >>>> > >>>> > >> --------------------------------------------------------------------- > >> To unsubscribe from this list, please visit: > >> > >> http://xircles.codehaus.org/manage_email > >> > >> > >> > > > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > >

