Hi Guys,

 

We have a big problem in Enumeration handling. It seems to me that we do not handle enumeration at all. There is a Jira reported for this (AXISCPP-661)  

 

The problem seems to be bit complicated. Looking at the test Enumeration in the Test framework, we can identify an incomplete approach to this problem.

 

Any ideas on this please

 

 

Regards,

Dushshantha


From: Cid, Jose [mailto:[EMAIL PROTECTED]
Sent: Friday, June 24, 2005 9:52 PM
To: Dushshantha Chandradasa
Cc: Stewart, Brian
Subject: axiscpp-136 and axiscpp-661

 

Hello Dushshantha,

 

Thanks for the reply on axiscpp-661. We are hoping that a fix can be made soon as we are counting on this for our demo. Do you think that there might be a resolution within 2-3 weeks?

 

I've also noticed that axiscpp-136 is affecting us to. I've noticed that when obtaining a complex object the return value is not filled in (I get no exception no errors). For example, given the following stub snippet

 

void UnitPortTypes::getUnitDetail(GetUnitDetailRequestType* Value0, AXIS_OUT_PARAM xsd__dateTime* OutValue0, AXIS_OUT_PARAM xsd__string* OutValue1, AXIS_OUT_PARAM UnitDetail** OutValue2)

{

const char* pcCmplxFaultName;

try

{ if (AXIS_SUCCESS != m_pCall->initialize(CPP_DOC_PROVIDER, NORMAL_CHANNEL)) return ;

m_pCall->setTransportProperty(SOAPACTION_HEADER , "urn:units:webservices:server:dsview:avocent:com#getUnitDetail");

m_pCall->setSOAPVersion(SOAP_VER_1_1);

m_pCall->setOperation("getUnitDetail", "urn:schema:units:webservices:server:dsview:avocent:com");

includeSecure();

applyUserPreferences();

char cPrefixAndParamName0[30];

sprintf( cPrefixAndParamName0, "%s:getUnitDetailRequest", getNamespacePrefix("urn:schema:units:webservices:server:dsview:avocent:com"));

m_pCall->addCmplxParameter(Value0, (void*)Axis_Serialize_GetUnitDetailRequestType, (void*)Axis_Delete_GetUnitDetailRequestType, cPrefixAndParamName0, Axis_URI_GetUnitDetailRequestType);

if (AXIS_SUCCESS == m_pCall->invoke())

{

if(AXIS_SUCCESS == m_pCall->checkMessage("getUnitDetailResponse", "urn:schema:units:webservices:server:dsview:avocent:com"))

{

*OutValue0 = m_pCall->getElementAsDateTime("timestamp", 0);

*OutValue1 = m_pCall->getElementAsString("version", 0);

*OutValue2 = (UnitDetail*)m_pCall->getCmplxObject((void*) Axis_DeSerialize_UnitDetail, (void*) Axis_Create_UnitDetail, (void*) Axis_Delete_UnitDetail,"_return", 0);

}

}

 

 

the call to getCmplxObject( ... ) fails to fill in my type. I did not see this when testing with use of RPC/encoded. We are now using DOC/LIT. Here is a snippet of my wsdl file:

 

*** The following is contined in an XSD file that is imported ***

<!-- Unit Detail -->

<complexType name="UnitDetail">

<sequence>

<element name="unitId" type="xsd:string" minOccurs="1" maxOccurs="1"/>

<element name="name" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="address" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="type" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="custom0" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="custom1" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="custom2" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="notes" type="xsd:string" minOccurs="0" maxOccurs="1"/>

<element name="actions" type="xsd:string" minOccurs="0" maxOccurs="1"/>

</sequence>

</complexType>

 

<element name="getUnitDetailRequest" type="ns:GetUnitDetailRequestType"/>

<element name="getUnitDetailResponse" type="ns:GetUnitDetailResponseType"/>

 

<element name="getUnitDetail">

  <complexType>

    <sequence>

      <element ref="ns:getUnitDetailRequest"/>

    </sequence>

  </complexType>

</element>

 

<complexType name="GetUnitDetailRequestType">

  <sequence>

    <element name="unitId" type="csc:UnitIdType" minOccurs="1" maxOccurs="1"/>

    <element name="showFields" type="csc:DataFieldsType"/>

  </sequence>

</complexType>

 

<complexType name="GetUnitDetailResponseType">

  <complexContent>

    <extension base="csc:CommonResponseType">

      <sequence>

        <element name="return" type="ns:UnitDetail"/>

      </sequence>

    </extension>

  </complexContent>

</complexType>

 

*** The request/response message are as follow ***

<message name="getUnitDetail">

  <part name="parameters" element="usc:getUnitDetail"/>

</message>

<message name="getUnitDetailResponse">

  <part name="parameters" element="usc:getUnitDetailResponse"/>

</message>

 

** The port type contains the following ***

<operation name="getUnitDetail">

  <input message="ns:getUnitDetail"/>

  <output message="ns:getUnitDetailResponse"/>

</operation>

 

*** The service binding contains the following ***

<operation name="getUnitDetail">

  <SOAP:operation style="document"  soapAction="urn:units:webservices:server:dsview:avocent:com#getUnitDetail"/>

  <input>

    <SOAP:header use="literal" message="ns:sessionHeader" part="sessionHeader"/>

    <SOAP:body parts="parameters" use="literal"/>

  </input>

  <output>

    <SOAP:header use="literal" message="ns:sessionHeader" part="sessionHeader"/>

    <SOAP:body use="literal"/>

  </output>

</operation>

My test code was not affected by this since I was using RPC and a simple wsdl to test ( that is, nothing as complex as our current wsdl). Any direction to a fix/work around would be appreciated.

Thanks,

jose cid

Reply via email to