...do you know how handle this kind of problem with castor, or not?
jimmi4664 wrote: > > My problem is: > > 1. I have a given Java object graph with number of objects with > relationships between them > 2. There's no primary keys / unique identifiers in the objects > 3. I am using "- mapping file driven" "modus operandi" for Castor > > How do I generate the mapping file to map the object graph (a few examples > have been shown in this thread) to XML and back? > > > 2009/11/17 Werner Guttmann <[email protected]> > >> 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 >> >> >> > > -- View this message in context: http://old.nabble.com/How-to-map-cyclic---recursive-objects--tp26317185p26403931.html Sent from the Castor - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

