Uploaded image for project: 'Axis'
  1. Axis
  2. AXIS-1926

wrapped document/literal generates wrong SOAP message for arrays within arrays

Attach filesAttach ScreenshotAdd voteVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None
    • Linux, Axis 1.2RC3

    Description

      First of all, this has been discussed on the users mailing list, please refer to this thread as it may have more up-to-date information:

      http://article.gmane.org/gmane.comp.apache.webservices.axis.user/29082

      I have a data type defined as:

      <complexType name="NamedValue">
      <sequence>
      <element name="name" nillable="true" type="xsd:string" />
      <element name="value" nillable="true" type="xsd:anyType" />
      </sequence>
      </complexType>

      I need the value to be xsd:anyType so that I can send arrays of NamedValue with various types for value.

      On the server side I have a method defined as:

      NamedValue[] login(String username, String password, NamedValue[] options)

      Which in the WSDL the request looks like this:

      • <element name="login">
      • <complexType>
      • <sequence>
        <element name="username" type="xsd:string" />
        <element name="password" type="xsd:string" />
        <element name="options" type="impl:NamedValue" maxOccurs="unbounded" />
        </sequence>
        </complexType>
        </element>

      And the response like this:

      • <element name="loginResponse">
      • <complexType>
      • <sequence>
        <element name="loginReturn" type="impl:NamedValue" maxOccurs="unbounded" />
        </sequence>
        </complexType>
        </element>

      If I create on the client side an options array that looks like this:

      NamedValue[] options = new NamedValue[]
      {
      new NamedValue("dummy1", "dummy_val1"),

      new NamedValue("dummy2",
      new NamedValue[]

      { new NamedValue("dummy2-1", "val2-1"), new NamedValue("dummy2-2", new Integer(314)) }

      )
      };

      Note the array inside the array above.

      A request to the server from an Axis client (latest CVS version of 1.2RC3) looks like this:

      <login xmlns="http://some/namespace">
      <username>tim</username>
      <password>tim</password>
      <options>
      <name>dummy1</name>
      <value xsi:type="xsd:string">dummy_val1</value>
      </options>
      <options>
      <name>dummy2</name>
      <value xsi:type="ns1:NamedValue" xmlns:ns1="http://some/namespace">
      <name>dummy2-1</name>
      <value xsi:type="xsd:string">val2-1</value>
      </value>
      <value xsi:type="ns2:NamedValue" xmlns:ns2="http://some/namespace">
      <name>dummy2-2</name>
      <value xsi:type="xsd:int">314</value>
      </value>
      </options>
      </login>

      The encoding of the array inside the array does not seem right to me, the server ends up with a NamedValue value for "dummy2" instead of a NamedValue[].

      From Anne Thomas Manes:

      You're right. The array within the array should be mapped to this:

      <login xmlns="http://some/namespace">
      <username>tim</username>
      <password>tim</password>
      <options>
      <name>dummy1</name>
      <value xsi:type="xsd:string">dummy_val1</value>
      </options>
      <options>
      <name>dummy2</name>
      <value xsi:type="ns1:NamedValue" xmlns:ns1="http://some/namespace">
      <name>dummy2-1</name>
      <value xsi:type="xsd:string">val2-1</value>
      <name>dummy2-2</name>
      <value xsi:type="xsd:int">314</value>
      </value>
      </options>
      </login>

      I suggest you file a bug report, because Axis is not generating the
      right message structure per the WSDL.

      Anne

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            gdaniels Glen Daniels
            timkagle Tim K

            Dates

              Created:
              Updated:

              Slack

                Issue deployment