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

Complex response containing array of complex elements does not deserialize

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • None
    • None

    Description

      I have created a new service called Complex lists which tests arrays within complex types and elements within complext types that have a different namespace to the parent. The request is serialized correctly, but the response fails to deserialize correctly and the stub returns a NULL object to the client. Both the request and response have complex types which contain nillable elements. When the response has nil elements the deserializer throws a SIGSEGV signal.

      The 'full' or non-nilled response message is
      -----------------------------------
      <?xml version="1.0" encoding="UTF-8"?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
      <multilistResponse xmlns="http://complexlist.test.apache.org">
      <multilistReturn>
      <attrlist xmlns="http://complexlistservice.test.apache.org">
      <item>
      <m_list>
      <item>never odd or even</item>
      <item>m_list string array element 2</item>
      </m_list>
      <name>namepair return</name>
      </item>
      <item>
      <m_list>
      <item>any data string</item>
      <item>m_list string array element 2</item>
      </m_list>
      <name>namepair2 return</name>
      </item>
      </attrlist>
      <errorcode xmlns="http://complexlistservice.test.apache.org">
      7
      </errorcode>
      <errortext xmlns="http://complexlistservice.test.apache.org">
      request successful
      </errortext>
      </multilistReturn>
      </multilistResponse>
      </soapenv:Body>
      </soapenv:Envelope>
      -----------------------------------

      This response message does return a value to attrlisterr with the correct errorcode and errortext data, but the nested complex type array does not deserialize correctly. The item->name element is deserialized correctly, but the m_list nested complex type does not.

      If any of the elements in the complex response are nil, which is valid as they are nillable, then the deserializer returns a NULL to the client.

      If all the elements are nil then the deserilaizer crashes.

      Nil response message
      -----------------------------------
      <?xml version="1.0" encoding="UTF-8"?>
      <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
      <multilistnilResponse xmlns="http://complexlist.test.apache.org">
      <multilistnilReturn>
      <attrlist xsi:nil="true" xmlns="http://complexlistservice.test.apache.org"/>
      <errorcode xmlns="http://complexlistservice.test.apache.org">
      0
      </errorcode>
      <errortext xsi:nil="true" xmlns="http://complexlistservice.test.apache.org"/>
      </multilistnilReturn>
      </multilistnilResponse>
      </soapenv:Body>
      </soapenv:Envelope>
      -----------------------------------

      Attachments

        Issue Links

          Activity

            People

              dicka Adrian Dick
              perryan Andrew Perry
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: