axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Gainty" <mgai...@hotmail.com>
Subject Re: (AXIS2 + wsdl2java + XMLBeans) + polymorphism = classcast exception
Date Tue, 12 Jun 2007 14:30:41 GMT
Mr Mulligan--

is discussed here
http://mail-archives.apache.org/mod_mbox/ws-axis-dev/200405.mbox/%3C680908818.1084140359808.JavaMail.apache@nagoya%3E
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 
  To: axis-user@ws.apache.org 
  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 <spikemulligan44@gmail.com> 
  Date: Jun 12, 2007 4:21 PM
  Subject: Fwd: AXIS2 + wsdl2java + XMLBeans not producing correct binding
  To: user@xmlbeans.apache.org


  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 <mohanar@npg.wustl.edu> 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:spikemulligan44@gmail.com] 
    Sent: Monday, June 11, 2007 9:55 AM


    To: user@xmlbeans.apache.org
    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 <mohanar@npg.wustl.edu> wrote:

    I think you can invoke the method schemaType to check the xsiType




----------------------------------------------------------------------------

    From: Spike Mulligan [mailto: spikemulligan44@gmail.com] 
    Sent: Monday, June 11, 2007 7:48 AM
    To: user@xmlbeans.apache.org
    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 <mohanar@npg.wustl.edu > wrote:

    You will have to use the method changeType and typecast the result back to the Type1 class.




    Mohana




----------------------------------------------------------------------------

    From: Spike Mulligan [mailto: spikemulligan44@gmail.com] 
    Sent: Monday, June 11, 2007 5:29 AM
    To: user@xmlbeans.apache.org
    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?









Mime
View raw message