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?
>
>
>
>
>



Reply via email to