Uploaded image for project: 'Axis-C++'
  1. Axis-C++
  2. AXISCPP-975

WSDL2WS: WrapWriter.java: returnParamName's localpart not split in some cases.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.6 Beta
    • current (nightly)
    • WSDL processing - RPC
    • None

    Description

      I found that in axis-c-1.6beta, you seems have tried to fix some problems similar to axiscpp-931, the solution is to split localpart of returnParamName before writing it in generated wrapper class.

      I think the necessary code fix which we need to do are all inside the method writeMethodInWrapper, which belongs to WSDL2WS's WrapWriter class(src/wsdl/org/apache/axis/wsdl/wsdl2ws/cpp/literal/WrapWriter.jaava).
      i.e.
      When the return type is simpletype or array, you've added the below split processing instead of write returnParamName directly
      ----------------------------------
      + returnParamName.substring(returnParamName.lastIndexOf(">")+1)
      ----------------------------------

      That's OK, no problem.

      But there're still some case being ignored by you, I think it's still a bug:
      When the return type is complex array, you have not added the split processing before writing.

      ie. I used a sample wsdl which containing the bllow piece(which will generate a complex array):
      ----------------------------------
      <xs:element name="GetTestResponse">
      <xs:complexType>
      <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="Test" type="mb:TestInformation"/>
      <xs:element minOccurs="0" maxOccurs="1" name="Context" type="xs:string"/>
      </xs:sequence>
      </xs:complexType>
      </xs:element>
      ------------------------------------

      By axis-c-1.6beta, the generated code is wrong:
      the generated element name in code and run-time server response to client is like : ">GetTestResponse>Test", which is not correct according to my sample wsdl.

      My fix code looks like the below(in the method writeMethodInWrapper of WrapWriter class):
      ---------(...when it's complex array ...)----------------------
      writer.write(
      "\tpIWSSZ->addOutputCmplxArrayParam((Axis_Array*)(&out"
      + i
      + "),"
      + "(void*) Axis_Serialize_"
      + containedType
      + ", (void*) Axis_Delete_"
      + containedType
      + ", (void*) Axis_GetSize_"
      + containedType
      + ", \""
      //<mxiong debug 2006/6/15
      // + returnParamName
      + returnParamName.substring(returnParamName.lastIndexOf(">")+1)
      //>mxiong debug 2006/6/15
      + "\", Axis_URI_"
      + containedType
      + ");\n");
      -
      ---------------------------------

      So would you like to check it and adopt my solution for this case?

      Attachments

        Activity

          People

            Unassigned Unassigned
            mxiong Michael Xiong
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: