Not sure my Spanish is good enough .. ;-).

Werner

Sebastián Ventura wrote:
> Y si no lo dije... lo pensé
> 
> -----Mensaje original-----
> De: Werner Guttmann [mailto:[email protected]] 
> Enviado el: viernes, 13 de noviembre de 2009 10:04
> Para: [email protected]
> Asunto: Re: [castor-user] How to map cyclic / recursive objects?
> 
> 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


Reply via email to