Hi,

Our WSDL has defined a base class and three corresponding subclass. The base
class is specified inside another complex type. After my client receives the
SOAP response, I try to extract the data from the subtypes by using
instanceof. However the type is always the base class and I could never get
the value from my subclass. 

Here is an excerpt of the WSDL:
       <s:complexType name="MailboxTypeInformation">
        <s:complexContent mixed="false">
          <s:extension base="s1:IMailboxTypeData">
            <s:attribute name="InformationBehavior"
type="InformationBehavior" use="required" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:simpleType name="InformationBehavior">
        <s:restriction base="s:string">
          <s:enumeration value="Transfer" />
          <s:enumeration value="Hangup" />
        </s:restriction>
      </s:simpleType>
      <s:complexType name="MailboxTypeApplication">
        <s:complexContent mixed="false">
          <s:extension base="s1:IMailboxTypeData">
            <s:attribute name="ApplicationType" type="ApplicationType"
use="required" />
          </s:extension>
        </s:complexContent>
      </s:complexType>
      <s:simpleType name="ApplicationType">
        <s:restriction base="s:string">
          <s:enumeration value="VXML" />
          <s:enumeration value="xHMI" />
        </s:restriction>
      </s:simpleType>
      <s:complexType name="MailboxTypeNormal">
        <s:complexContent mixed="false">
          <s:extension base="s1:IMailboxTypeData" />
        </s:complexContent>
      </s:complexType>

      <s:complexType name="VoiceItemXml">
        <s:sequence>
          <s:element minOccurs="0" maxOccurs="1" name="FULLNAME"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="FIRSTNAME"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="LASTNAME"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="USERNAME"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="HOMEPHONE"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="WORKPHONE"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="CELLPHONE"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="ID" type="s:string"
/>
          <s:element minOccurs="0" maxOccurs="1" name="EMAILADDRESS"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="DEPARTMENT"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="Mailbox"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="PronounceableName"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="SiteID"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="WorkExtension"
type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="COS" type="s:long" />
          <s:element minOccurs="1" maxOccurs="1" name="AutoAttendantEnabled"
type="s:boolean" />
          <s:element minOccurs="1" maxOccurs="1" name="VuiEnabled"
type="s1:FeatureEnabledXml" />
          <s:element minOccurs="1" maxOccurs="1" name="VoiceMailEnabled"
type="s1:FeatureEnabledXml" />
          <s:element minOccurs="1" maxOccurs="1" name="MobileAccessEnabled"
type="s1:FeatureEnabledXml" />
          <s:element minOccurs="1" maxOccurs="1" name="BadLogins"
type="s:long" />
          <s:element minOccurs="1" maxOccurs="1" name="LockedOut"
type="s:boolean" />
          <s:element minOccurs="0" maxOccurs="1" name="AttendantDestination"
type="s:string" />
          <s:element minOccurs="1" maxOccurs="1" name="ForceChangeOfPINCode"
type="s:boolean" />
          <s:element minOccurs="0" maxOccurs="1" name="MobileGatewayID"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AddlExt1"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AddlExt2"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="AddlExt3"
type="s:string" />
          <s:element minOccurs="0" maxOccurs="1" name="MailboxType"
type="s1:IMailboxTypeData" />
        </s:sequence>
      </s:complexType>

      <s:complexType name="IMailboxTypeData">
        <s:attribute name="Type" type="s1:MailboxType" use="required" />
      </s:complexType>
      <s:simpleType name="MailboxType">
        <s:restriction base="s:string">
          <s:enumeration value="Normal" />
          <s:enumeration value="Application" />
          <s:enumeration value="Information" />
        </s:restriction>
      </s:simpleType>

The SOAP response contains the following data:
- <CONTACT>
  <FULLNAME>Adomo Schedule</FULLNAME> 
  <LASTNAME>Adomo Schedule</LASTNAME> 
  <WORKPHONE>8972</WORKPHONE> 
  <ID>4588e7d018fe404bb2ea618ced760e92</ID> 
  <EMAILADDRESS>Adomo [EMAIL PROTECTED]</EMAILADDRESS> 
  <Mailbox>8972</Mailbox> 
  <SiteID>2</SiteID> 
  <WorkExtension>8972</WorkExtension> 
  <COS>0</COS> 
  <AutoAttendantEnabled>true</AutoAttendantEnabled> 
  <VuiEnabled>no</VuiEnabled> 
  <VoiceMailEnabled>yes</VoiceMailEnabled> 
  <MobileAccessEnabled>no</MobileAccessEnabled> 
  <BadLogins>0</BadLogins> 
  <LockedOut>false</LockedOut> 
  <ForceChangeOfPINCode>false</ForceChangeOfPINCode> 
  <MailboxType xsi:type="MailboxTypeApplication" Type="Application"
ApplicationType="VXML" /> 
  </CONTACT>


The WSDL2Java generates classes:
IMailboxTypeData
MailboxTypeApplication
MailboxTypeInformation
MailboxTypeNormal
MailboxType

In my debug session, I put breakpoints in all the functions in
MailboxTypeApplication but it never stops there. Instead it stops at one of
function in IMailboxTypeData.



Any help would be greatly appreciated!

Thanks,
Lisa

-- 
View this message in context: 
http://www.nabble.com/Axis-1.4-Inheritence-Polymorphism-Support-tp20159270p20159270.html
Sent from the Axis - User mailing list archive at Nabble.com.


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

Reply via email to