Details
Description
[Error Statement]:
We have used AxisCPP1.5final version to generate SampleTestSoapWrapper.cpp as the below:
Function: int SampleTestSoapWrapper::GetOperation(void* pMsg)
try
{
pIWSSZ->addOutputCmplxParam(out0, (void*)Axis_Serialize_ContainerInfo, (void*) Axis_Delete_ContainerInfo, ">GetOperationResponse>Container", Axis_URI_ContainerInfo);
pIWSSZ->addOutputCmplxParam(out1, (void*)Axis_Serialize_PropertyList, (void*)Axis_Delete_PropertyList, ">GetOperationResponse>PropertyList", Axis_URI_PropertyList);
}
The generated code has bug: ">GetOperationResponse>Container" and ">GetOperationResponse>PropertyList".
In the function we need parameter "Container" other than ">GetOperationResponse>Container".
[Our solution]:
We have investigated the source code of AxisCPP/WSDL2Ws tool, and found that if we add the following code at about line 626 in writeMethodInWrapper method that belongs to WrapWriter (wsdl2ws/cpp/iteral) class, the above bug can be resolved.
//returnParamName=param.getElementName().getLocalPart();
if(returnParamName.lastIndexOf(">")>1)
{
returnParamName=
returnParamName.substring(returnParamName.lastIndexOf(">")+1,returnParamName.length());
}
[More suggestion]:
But we think it may be better to resolve this bug by change some code inside getElementName()(in ParameterInfo class) method or inside getLocalPart()(in QName class)