Hi Sunil,

See the last line below...

> RACHAMADUGU Sunil wrote:
> 
> I have two classes A and B. Class B has a reference to object of class
> A. Instantiating the classes into objects 'a' and 'b' respectively:
> 
> a --> b (object 'b' has a reference to object 'a')
> 
> I am using Castor to save these objects into XML document.
> 
> Referring to earlier information in the Castor documentation and
> mailing list, I noted that
> "Castor supports references via the Source Code Generator and via the
> mapping file"
> "References are not supported via introspection"
> "We need to use the 'reference' and 'identity' in conjunction"
> 
> How I am doing it:-
> 
> This is how the classes appears:
> 
> Class A{
>         String id
>         ...
>         getId() {...}
>         setId(String newId) {...}
> }
> 
> Class B{
>         ...
>         reference_to_A
>         ...
>         getId() {...}
>         setId(String newId) {...}
>         getReference_to_A() {...}
>         setReference_to_A(A a) {...}
> 
> }
> 
>         Dictionary id_names     // stores ids of all objects
> 
> We need to use a mapping file, which uses the identity and reference
> in conjunction as follows:
>         A --> identity
>         B --> attribute A, reference=true
> 
> A snippet from the mapping file:
> 
> Mark the appropriate Identity field: (the field 'id' of class A)
> 
> <class name="A" identity="id">
>         ...
>         <field name="id" type="string">
>         <bind-xml node="attribute"/>
>         </field>
>         ...
> </class>
> 
> Then mark references as such: (the 'reference' of <bind-xml> element
> is set as 'true' for the field 'reference_to_A')
> 
> <class name="B">
>         ...
>         <field name=" reference_to_A" type="A">
>         <bind-xml node="attribute" reference="true"/>
>         </field>
>         ...
> </class>
> 
> During the marshalling of the objects into XML document, the reference
> to the object is stored as a string (in the mapping file, I have set
> 'reference=true' for this field).
> 
> During unmarshalling..
> 
> Apart from the above-mentioned accessors for the field
> 'reference_to_A', we need to add another method, which takes a
> 'String' argument. The new method looks as follows:
> 
> B.setReference_to_A (String id_of_a) {
> 
>         Obj = Get_From_Dictionary(id_of_a)      // lookup in the
> dictionary
> 
>         if (Obj != null) {
>                 Reference_to_parent_object = Obj
>         }
>         else {
>                 error // Object not found
>         }
> }
> 

You shouldn't need this method...Castor should do the lookup for you
automatically.

--Keith

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to