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

