|
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] 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 |
- Enumeration Hnadling Dushshantha Chandradasa
- Re: Enumeration Hnadling Adrian Dick
