Nicolas Christian wrote: > > Hi Keith, > > Your first solution works very well. Thanks very much for your > help. You have really rescue me in my tricky problem.
Great! I'm glad it works for you. > "ciao e grazie molto" Prego! Ciao! --Keith > Christian Nicolas > > -----Original Message----- > From: Keith Visco [mailto:[EMAIL PROTECTED] > Sent: Tuesday, July 29, 2003 8:53 PM > To: [EMAIL PROTECTED] > Subject: Re: [castor-dev] Unmarshalling problem using a mapping file. > > A few notes about Castor. > > The value of xsi:type tells Castor which class to instantiate upon > unmarshalling. This is done either by specifying the schema type name, > or using a castor specific feature "java:" and specifying the class > name. > > So upon Marshalling, Castor will determine that because you have a > collection of mixed types that it needs to add the xsi:type information > in order to be able to correctly unmarshal the document back. > > However, in your situation, you are trying to "transform" the class name > from yyy.MyDevice to xxx.MyDevice. > > If your values were not part of a collection, this would be fairly easy > to change, but since you are using a collection of mixed types it's a > bit more difficult. > > The first thing you could try would be the following: > > <class name="xxx.Device"> > <map-to xml="MyDevice"/> > <field name="elements" collection="..." > container="false"/> > </class> > > This should change your output a bit, to something like: > > <devices> > <elements> > <MyDevice> > <name>XV234</name> > <type>Engine</type> > </MyDevice> > </elements> > > This will make it easier for castor to unmarshal into your client object > model. > > That should solve the problem. > > If you really need to keep the XML format the same, and use the > xsi:type, then you'll need to use an XSLT transformation to change all > "yyy.MyDevice" into "xxx.MyDevice" before you try to unmarshal. > > --Keith > > Nicolas Christian wrote: > > > > Thanks very much Keith for your quick response, but your proposal > > does not works in my specific problem. To be more precise, I try to > > exchange data between a server and a client application, and a class > > A on the server side must be replaced by a class B on the client side. > > Furthermore, only the client application can use mapping file for > > transformation. > > > > But the bigest problem comes from the use of collection. Because, my list > of > > > > 'elements' contains heterogenous classes. > > > > e.g of xml instance: > > <devices> > > <elements xsi:type="java:yyy.MyDevice"> > > <name>XV234</name> > > <type>Engine</type> > > </elements> > > <elements xsi:type="java:yyy.Coder"> > > <name>COD4120</name> > > <type>coder</type> > > </elements> > > <elements xsi:type="java:yyy.Transrater"> > > <name>TR123</name> > > <type>transrater</type> > > </elements> > > </devices> > > > > This following mapping works very well for the marshalling, > > <class name="xxx.Device" auto-complete="true" > > > <map-to xml="java:yyy.MyDevice"/> > > </class> > > then each instance of the class 'xxx.Device' will be converted like > > this in the xml instance: > > <elements xsi:type="java:yyy.MyDevice"> > > <name>...</name> > > <type>...</type> > > </elements> > > > > But unfortunatly this mapping is insufficient to insure the > > unmarshalling of this xml instance, castor does not create the > > expected instance of 'xxx.Device' but simply create the unexpected > > instance of 'yyy.MyDevice'. > > > > I am not sure if it is possible doing that i want with a mapping file ? > > > > > > -----Original Message----- > > From: Keith Visco [mailto:[EMAIL PROTECTED] > > Sent: Monday, July 28, 2003 11:07 PM > > To: [EMAIL PROTECTED] > > Subject: Re: [castor-dev] Unmarshalling problem using a mapping file. > > > > Your mapping file should look more like: > > > > <class name="xxx.Device" auto-complete="true" > > > <map-to xml="elements"/> > > </class> > > > > I'm not sure what you're trying to do with the following: > > > > <map-to xml="java:yyy.MyDevice"/> > > > > Since no element of that name exists in your XML instance. > > > > --Keith > > > > Nicolas Christian wrote: > > > > > > Hi everyone, > > > > > > I am using mapping file for marshalling and unmarshalling. The > marshalling > > > works wery well, I have succeded to change the class name from the java > > > class > > > to the xml instance, but the unmarshalling does not take account of my > > > mapping file > > > for the reverse operation. I do not know why... > > > > > > Problem description: > > > I have succeded to marshall the class 'xxx.Device' and changed its name > by > > > 'yyy.MyDevice' within > > > the xml schema instance, but when I unmarshall 'yyy.MyDevice' from the > xml > > > instance then castor > > > does not take account of my mapping file and try to create an instance > of > > > 'yyy.MyDevice' while > > > 'xxx.Device' was expected. Both java beans 'xxx.Device' and > 'yyy.MyDevice' > > > have the same properties. > > > > > > My mapping file is as follow: > > > > > > <?xml version="1.0"?> > > > <!DOCTYPE databases PUBLIC "-//EXOLAB/Castor Mapping DTD Version > 1.0//EN" > > > "http://castor.exolab.org/mapping.dtd"> > > > <mapping> > > > <description>Mapping intended for the client side</description> > > > > > > <class name="xxx.Device" auto-complete="true" > > > > <map-to xml="java:yyy.MyDevice"/> > > > </class> > > > > > > </mapping> > > > > > > My Xml instance is as follow: > > > <SetOfDevices> > > > <profite>123</profite> > > > <devices> > > > <elements xsi:type="java:yyy.MyDevice" > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > > > <name>XV234</name> > > > <type>Engine</type> > > > </elements> > > > > > > <elements xsi:type="java:yyy.MyDevice" > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > > > <name>GH67</name> > > > <type>Gear</type> > > > </elements> > > > </devices> > > > </SetOfDevices> > > > > > > Is there any description missing in my mapping file ? > > > Christian Nicolas > > > > > > ----------------------------------------------------------- > > > If you wish to unsubscribe from this mailing, send mail to > > > [EMAIL PROTECTED] with a subject of: > > > unsubscribe castor-dev > > > > ----------------------------------------------------------- > > If you wish to unsubscribe from this mailing, send mail to > > [EMAIL PROTECTED] with a subject of: > > unsubscribe castor-dev > > > > ----------------------------------------------------------- > > If you wish to unsubscribe from this mailing, send mail to > > [EMAIL PROTECTED] with a subject of: > > unsubscribe castor-dev > > ----------------------------------------------------------- > If you wish to unsubscribe from this mailing, send mail to > [EMAIL PROTECTED] with a subject of: > unsubscribe castor-dev > > ----------------------------------------------------------- > If you wish to unsubscribe from this mailing, send mail to > [EMAIL PROTECTED] with a subject of: > unsubscribe castor-dev ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev
