Thanks Stephen but, if I understand your solution, it unfortunately won't work for me in this situation.
If I understand your solution, 'callee' will be the xml tag name, not ThisClass or ThatClass. Is this correct? If so, the XML has to have the ThisClass or ThatClass tag name because the marshalled xml is actually going to another application which expects that tag name and doesn't use Castor. The issue that I have is my emulator that I use when testing without the other application. In that case I am using Castor to unmarshall. So with your suggestion, my emulator will work fine but the proudction app won't. If I did not understand your solution correctly, I apologize but could you elaborate just a bit? -----Original Message----- From: Stephen Bash [mailto:[EMAIL PROTECTED] Sent: Wednesday, January 18, 2006 10:16 AM To: [email protected] Subject: Re: [castor-user] [XML] Any way to have Castor infer type from object and serialize it? Rick- I was able to reproduce your error, and I agree with Werner, I don't know why it comes up. But by not using auto-naming, I was able to get the code to unmarshal successfully (must be a different branch of logic). So all I changed was the mapping of CallObject: <class name="CallObject"> <map-to xml="CallObject" /> <field name="object" type="java.lang.Object"> <bind-xml name="callee" /> </field> </class> This does mean the xsi:type attribute is required, because otherwise Castor won't know what class to instantiate. Hopefully this solution is amenable to your situation. Stephen Fishman, Richard wrote: > Werner, I am using packages. These are just examples to make the testcase > understandable. > > -----Original Message----- > From: Werner Guttmann [mailto:[EMAIL PROTECTED] > Sent: Wednesday, January 18, 2006 9:45 AM > To: [email protected] > Subject: RE: [castor-user] [XML] Any way to have Castor infer type from > object and serialize it? > > Richard, > > What surprises me is that the XML as marshalled by Castor still includes the > xsi:type="ThisClass" directive. Apart from that, can you please consider > starting to use packages? Afair, Castor (XML or/and JDO) uses (used) to have > problems with classes in the standard root package. > > Thanks > Werner > > >>-----Original Message----- >>From: Fishman, Richard [mailto:[EMAIL PROTECTED] >>Sent: Mittwoch, 18. Jänner 2006 15:34 >>To: [email protected] >>Subject: RE: [castor-user] [XML] Any way to have Castor infer type >>from object and serialize it? >> >>Yes, this is my mapping xml now: >> <class name="CallObject"> >> <map-to xml="CallObject" /> >> <field name="object" type="java.lang.Object"> >> <bind-xml auto-naming="deriveByClass" /> >> </field> >> </class> >> <class name="ThisClass"> >> <map-to xml="ThisClass"/> >> <field name="xx" type="java.lang.String"> >> <bind-xml name="xx" node="element"/> >> </field> >> </class> >> <class name="ThatClass"> >> <map-to xml="ThatClass"/> >> <field name="yy" type="java.lang.String"> >> <bind-xml name="yy" node="element"/> >> </field> >> </class> >> >>The XML that was marshalled (and is attempted to be >>unmarshalled) looks like this: >><CallObject><ThisClass >>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>xsi:type="ThisClass"><xx>something</xx></ThisClass></CallObject> >> >>-----Original Message----- >>From: Stephen Bash [mailto:[EMAIL PROTECTED] >>Sent: Wednesday, January 18, 2006 9:26 AM >>To: [email protected] >>Subject: Re: [castor-user] [XML] Any way to have Castor infer type >>from object and serialize it? >> >>Rick- >> >>Does ThisClass have a mapping anywhere that Castor knows about? That >>would give Castor a hard reference between the element name and the >>fully qualified class name which might help. >> >>Stephen >> >> >>Fishman, Richard wrote: >> >>>Thanks! That works great for marshalling the XML. >>> >>>Unmarshalling is getting an error though: >>> >>>org.xml.sax.SAXException: unable to find FieldDescriptor for >>>'ThisClass' in ClassDescriptor of CallObject at >>> >> >>org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.j >> >>>ava:1933) at >>> >> >>org.exolab.castor.xml.UnmarshalHandler.startElement(UnmarshalHandler.j >> >>>ava:1381) at >>>org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown >>>Source) >>> >>>Any ideas? >>> >>>-----Original Message----- >>>From: Werner Guttmann [mailto:[EMAIL PROTECTED] >>>Sent: Wednesday, January 18, 2006 8:49 AM >>>To: [email protected] >>>Subject: RE: [castor-user] [XML] Any way to have Castor >> >>infer type from object and serialize it? >> >>>Hi, >>> >>>A field mapping similar to >>> >>><field name="object" type="java.lang.Object" >> >>collection="collection"> >> >>> <bind-xml auto-naming="deriveByClass"></bind-xml> >>></field> >>> >>>should do the trick in your case. Have a look at >> >>http://castor.codehaus.org/xml-mapping.html#5.-xsi:type for more >>details. >> >>>Regards >>>Werner >>> >>> >>> >>>>-----Original Message----- >>>>From: Fishman, Richard [mailto:[EMAIL PROTECTED] >>>>Sent: Mittwoch, 18. Jänner 2006 14:44 >>>>To: [email protected] >>>>Subject: [castor-user] [XML] Any way to have Castor infer type from >>>>object and serialize it? >>>> >>>>We have a class called CallObject and it contains one >> >>member variable >> >>>>whose type can change. We want to be able to have The CallObject >>>>contain an Object and have Castor serialize it >> >>appropriately based on >> >>>>the class of the object. >>>> >>>>In other words, we want a class like this: >>>> >>>>Public class CallObject >>>>{ >>>> private Object theObj; >>>> public void setObject(Object o) >>>> { >>>> this.theObj = 0; >>>> } >>>>} >>>> >>>>Then clients would call setObject with whatever they want in that >>>>'call object'. For example: >>>> >>>>callObj.setObject(new ThisClass()); >>>> >>>>Or >>>> >>>>callObj.setObject(new ThatClass()); >>>> >>>>The mapping.xml would have rules for CallObject as well as >> >>ThisClass >> >>>>and >>>>ThatClass: >>>> <class name="CallObject"> >>>> <map-to xml="CallObject"/> >>>> </class> >>>> <class name="ThisClass"> >>>> <map-to xml="ThisClass"/> >>>> <field name="xx" type="java.lang.String"> >>>> <bind-xml name="xx" node="element"/> >>>> </field> >>>> </class> >>>> <class name="ThatClass"> >>>> <map-to xml="ThatClass"/> >>>> <field name="yy" type="java.lang.String"> >>>> <bind-xml name="yy" node="element"/> >>>> </field> >>>> </class> >>>> >>>>Then depending on what was set into callObj, the >> >>appropriate XML would >> >>>>be generated, either: >>>><CallObject> >>>> <ThisClass> >>>> <xx>something</xx> >>>> </ThisClass> >>>></CallObject> >>>> >>>>Or >>>> >>>><CallObject> >>>> <ThatClass> >>>> <yy>somethingElse</yy> >>>> </ThatClass> >>>></CallObject> >>>> >>>>Is this possible to do? If so, how do you do it? >>>> >>>> >>>>Blue Cross Blue Shield of Florida, Inc., and its subsidiary and >>>>affiliate companies are not responsible for errors or omissions in >>>>this e-mail message. Any personal comments made in this >> >>e-mail do not >> >>>>reflect the views of Blue Cross Blue Shield of Florida, Inc. The >>>>information contained in this document may be confidential and >>>>intended solely for the use of the individual or entity to >> >>whom it is >> >>>>addressed. This document may contain material that is >> >>privileged or >> >>>>protected from disclosure under applicable law. If you are not the >>>>intended recipient or the individual responsible for >> >>delivering to the >> >>>>intended recipient, please (1) be advised that any use, >> >>dissemination, >> >>>>forwarding, or copying of this document IS STRICTLY PROHIBITED; and >>>>(2) notify sender immediately by telephone and destroy the >> >>document. >> >>>>THANK YOU. >>>> >>>> >>>> >>>>------------------------------------------------- >>>>If you wish to unsubscribe from this list, please send an empty >>>>message to the following address: >>>> >>>>[EMAIL PROTECTED] >>>>------------------------------------------------- >>>> >>>> >>>> >>> >>> >>>------------------------------------------------- >>>If you wish to unsubscribe from this list, please send an empty >>>message to the following address: >>> >>>[EMAIL PROTECTED] >>>------------------------------------------------- >>> >>> >>> >>> >>> >>> >>> >>>Blue Cross Blue Shield of Florida, Inc., and its subsidiary >> >>and affiliate companies are not responsible for errors or omissions in >>this e-mail message. Any personal comments made in this e-mail do not >>reflect the views of Blue Cross Blue Shield of Florida, Inc. The >>information contained in this document may be confidential and >>intended solely for the use of the individual or entity to whom it is >>addressed. This document may contain material that is privileged or >>protected from disclosure under applicable law. If you are not the >>intended recipient or the individual responsible for delivering to the >>intended recipient, please (1) be advised that any use, dissemination, >>forwarding, or copying of this document IS STRICTLY PROHIBITED; and >>(2) notify sender immediately by telephone and destroy the document. >>THANK YOU. >> >>> >>> >>>------------------------------------------------- >>>If you wish to unsubscribe from this list, please send an empty >>>message to the following address: >>> >>>[EMAIL PROTECTED] >>>------------------------------------------------- >>> >>> >> >>------------------------------------------------- >>If you wish to unsubscribe from this list, please send an empty >>message to the following address: >> >>[EMAIL PROTECTED] >>------------------------------------------------- >> >> >> >> >> >> >> >>Blue Cross Blue Shield of Florida, Inc., and its subsidiary and >>affiliate companies are not responsible for errors or omissions in >>this e-mail message. Any personal comments made in this e-mail do not >>reflect the views of Blue Cross Blue Shield of Florida, Inc. The >>information contained in this document may be confidential and >>intended solely for the use of the individual or entity to whom it is >>addressed. This document may contain material that is privileged or >>protected from disclosure under applicable law. If you are not the >>intended recipient or the individual responsible for delivering to the >>intended recipient, please (1) be advised that any use, dissemination, >>forwarding, or copying of this document IS STRICTLY PROHIBITED; and >>(2) notify sender immediately by telephone and destroy the document. >>THANK YOU. >> >> >> >>------------------------------------------------- >>If you wish to unsubscribe from this list, please send an empty >>message to the following address: >> >>[EMAIL PROTECTED] >>------------------------------------------------- >> >> >> > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please send an empty > message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > > > > > > > Blue Cross Blue Shield of Florida, Inc., and its subsidiary and affiliate > companies are not responsible for errors or omissions in this e-mail message. > Any personal comments made in this e-mail do not reflect the views of Blue > Cross Blue Shield of Florida, Inc. The information contained in this > document may be confidential and intended solely for the use of the > individual or entity to whom it is addressed. This document may contain > material that is privileged or protected from disclosure under applicable > law. If you are not the intended recipient or the individual responsible for > delivering to the intended recipient, please (1) be advised that any use, > dissemination, forwarding, or copying of this document IS STRICTLY > PROHIBITED; and (2) notify sender immediately by telephone and destroy the > document. THANK YOU. > > > > ------------------------------------------------- > If you wish to unsubscribe from this list, please send an empty > message to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] ------------------------------------------------- Blue Cross Blue Shield of Florida, Inc., and its subsidiary and affiliate companies are not responsible for errors or omissions in this e-mail message. Any personal comments made in this e-mail do not reflect the views of Blue Cross Blue Shield of Florida, Inc. The information contained in this document may be confidential and intended solely for the use of the individual or entity to whom it is addressed. This document may contain material that is privileged or protected from disclosure under applicable law. If you are not the intended recipient or the individual responsible for delivering to the intended recipient, please (1) be advised that any use, dissemination, forwarding, or copying of this document IS STRICTLY PROHIBITED; and (2) notify sender immediately by telephone and destroy the document. THANK YOU. ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] -------------------------------------------------

