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? 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 > > >

