Hi jarkko pave wrote: > 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.
As the Castor XML reference guide suggest, Castor XML can work in various modi operandi: - introspection mode - mapping file driven - working with generated POJO/descriptor classes Internally, all three modes translate to a binding between a Java artefact and an XML artefact, so that Castor XML can perform its XML data binding functions. > I have not seen any > documentation that talks about using schemas for that. I am sure the reference guide has a lot of documentation about the XML source (code) generator, where Java POJOs and their corresponsing descriptor classes are generated from an XML schema. > Hence I don't see how > IDREFs etc are relevant to my problem. Taking into account the duality explained above, it's just another starting point for Castor XML. > 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 >> >> >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

