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


Reply via email to