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