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

Reply via email to