Hi,

I'm having trouble with passing inheritance types. I've followed this
url: 
http://www.ibm.com/developerworks/websphere/techjournal/0401_brown/brown.html
as a guide to WSDL inheritance, and everything seems to be working
except that when it comes time to do a typecast, there doesn't appear
to be any relationship of the objects...

I think it will be easier to explain the situation in code:

In my WSDL I have the following:

<simpleType name="idType">
        <restriction base="xsd:string">
                <enumeration value="INFNUM" />
                <enumeration value="SESSNUM" />
                <enumeration value="CLIENTCD" />
        </restriction>
</simpleType>
<complexType name="idSet">
        <sequence>
                <element maxOccurs="1" minOccurs="1" name="idtype" 
type="xsd1:idType" />
                <element maxOccurs="1" minOccurs="1" name="idvalue" 
type="xsd:string" />
        </sequence>
</complexType>
<complexType name="idSetSess">
        <complexContent>
                <extension base="xsd1:idSet">
                        <sequence>
                                <element name="seqNum" type="xsd:string" />
                        </sequence>
                </extension>
        </complexContent>
</complexType>
.............
.............
<element name="get">
        <complexType>
                <sequence>
                        <element minOccurs="1" maxOccurs="unbounded" name="id"
                                        nillable="true" type="xsd1:idSet" />
                </sequence>
        </complexType>
</element>


Then in my server code (the error is here):
  public get(IdSet[] ids) {
    ...
    for(int i = 0; i < id.length; i++) {
       IdSet id = ids[i];
        if(id.getIdtype() == IdType.SESSNUM) {
           if(!(id instanceof IdSetSess))
                throw new Exception("IdSetSess not used when IdType set to
SESSNUM!"); // XXX id should be an instance of IdSetSess
           .....
           .....
        }
    }
  }

On the wire, an example request is:
  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
    <soapenv:Body>
      <xsd:get xmlns:xsd="http://osr.nsw.gov.au/pillar/gen/xsd";>
        <xsd:id xsi:type="xsd:idSetSess"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
          <xsd:idtype>SESSNUM</xsd:idtype>
          <xsd:idvalue>20004465</xsd:idvalue>
          <xsd:seqNum>141</xsd:seqNum>
        </xsd:id>
        <xsd:id>
          <xsd:idtype>INFNUM</xsd:idtype>
          <xsd:idvalue>7151999517</xsd:idvalue>
        </xsd:id>
      </xsd:get>
    </soapenv:Body>
 </soapenv:Envelope>



The request on the wire looks to be to be OK. The expression "id
instanceof IdSetSess" is always false, whereas I would expect it to be
true.

Do I need to do something special to be able to cast an IdSet to an
IdSetSess? Is this even possible?


Cheers,
Matt.


-- 
Reclaim your digital rights, eliminate DRM, learn more at
http://www.defectivebydesign.org/what_is_drm

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d--- s: a C++++ UL+++ P+++ L+++++ E--- W++ N o-- K- w--
O M+ V PS+++ PE Y PGP t+ 5 X++ R !tv b+++ DI+ D++
G-- e++ h+ r+ y+++++
------END GEEK CODE BLOCK------


Today's lucky number is: 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to