So that link seems to imply that Axis2 doesn't support substitution groups and I have to tweak the generated code to support them.
I understand that if they were using ADB to do their binding. But I'm running wsdl2java with the -u xmlbeans option! Xmlbeans is supposed to support ALL features of schemas. Shouldn't the code it generates for the parent element know how to identify and parse inheiriting elements??? On 6/12/07, Martin Gainty <[EMAIL PROTECTED]> wrote:
Mr Mulligan-- is discussed here http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200405.mbox/[EMAIL PROTECTED] I dont see where you are setting the xmlType for your typeDesc before associating the SubstitutionGroupMember as in typeDesc.setXmlType(new QName("urn:","DerivedFromFooType")); ? M- This email message and any files transmitted with it contain confidential information intended only for the person(s) to whom this email message is addressed. If you have received this email message in error, please notify the sender immediately by telephone or email and destroy the original message without making a copy. Thank you. ----- Original Message ----- *From:* Spike Mulligan <[EMAIL PROTECTED]> *To:* [EMAIL PROTECTED] *Sent:* Tuesday, June 12, 2007 9:34 AM *Subject:* (AXIS2 + wsdl2java + XMLBeans) + polymorphism = classcast exception Does anyone know why the generated code is giving me classcast exceptions? I'm using substitutionGroups + complextype extension to implement the following structure: TYPES: ELEMENTS OF THOSE TYPES: AbstractAttributeSetType AbstractAttributeSet / \ / \ / \ extension / \ subtitutionGroups / \ / \ Type1 Type2 Element1 Element2 When I send a soap request with the AbstractAttributeSet it's accepted fine, but when I send Element1 or Element2 it gives me a classcast exception when I do : addDevice.getAddDevice().getAddDeviceInputParam().getAbstractAttributeSet().schemaType().getName().getLocalPart()) The exception occurs in getAbstractAttributeSet() in the line target = ( com.nds.consumermgr.types.AbstractAttributeSetType)get_store().find_element_user(ABSTRACTATTRIBUTESET$3, 0); Why the error? Is there some special way you're supposed to do this? ---------- Forwarded message ---------- From: Spike Mulligan <[EMAIL PROTECTED]> Date: Jun 12, 2007 4:21 PM Subject: Fwd: AXIS2 + wsdl2java + XMLBeans not producing correct binding To: [email protected] Right--when I try to do that I get a classcastexception when I use the inheiriting class. When I use the abstract parent class then gives me the name of the element. I do: addDevice.getAddDevice().getAddDeviceInputParam().getAbstractAttributeSet().schemaType().getName().getLocalPart()) The result is a classcastexception in getAbstractAttributeSet() in the line target = (com.nds.consumermgr.types.AbstractAttributeSetType)get_store().find_element_user(ABSTRACTATTRIBUTESET$3, 0); So for some reason it doesn't know to get the inheiriting type. Any ideas? On 6/11/07, Mohana Ramaratnam <[EMAIL PROTECTED]> wrote: > > The way this has been working for me is: > > > > If (file.schemaType().getName().getLocalPart().equals( > ImageResource.type.getName().getLocalPart())) > > ImageResource imageResource = (ImageResource)file.changeType( > ImageResource.type); > > > > Where file is an object of type AbstractResource and ImageResource > extends AbstractResource (similar to your case of Type1 extending > AbstractType) > > > > You could check your xmlbeans src to see what the class hierarchy is. > > > > > > > ------------------------------ > > *From:* Spike Mulligan [mailto:[EMAIL PROTECTED] > *Sent:* Monday, June 11, 2007 9:55 AM > *To:* [email protected] > *Subject:* Re: AXIS2 + wsdl2java + XMLBeans not producing correct > binding > > > > Right so checking the schematype gives me the parent type and casting > the parent type to the inheiriting type gives me a runtime exception. > > Have you ever gotten this to work? Do you think maybe my soap message > or my xsd may be wrong? > > On 6/11/07, *Mohana Ramaratnam* <[EMAIL PROTECTED]> wrote: > > I think you can invoke the method schemaType to check the xsiType > > > ------------------------------ > > *From:* Spike Mulligan [mailto: [EMAIL PROTECTED] > *Sent:* Monday, June 11, 2007 7:48 AM > *To:* [email protected] > *Subject:* Re: AXIS2 + wsdl2java + XMLBeans not producing correct > binding > > > > Okay, but how do I check at runtime whether its Type1 or Type2? > > On 6/11/07, *Mohana Ramaratnam* <[EMAIL PROTECTED] > wrote: > > You will have to use the method changeType and typecast the result back > to the Type1 class. > > > > Mohana > > > ------------------------------ > > *From:* Spike Mulligan [mailto: [EMAIL PROTECTED] > *Sent:* Monday, June 11, 2007 5:29 AM > *To:* [email protected] > *Subject:* AXIS2 + wsdl2java + XMLBeans not producing correct binding > > > > > > So I have a schema containing the following structure: > > AbstractType > / \ > / \ extension > / \ > Type1 Type2 > > > When I send the service an instance of Type1 for example using > xsi:type="ns1:Type1", it should give me the Type1 class(which wsdl2java > generated and which extends the AbstractType class). > > Instead it gives me a class of type AbstractType! > > Has anyone successfully done this? Does it work? Is this the expected > behaviour of XML beans? What am I doing wrong? > > > > >

