Yeah, that is normal behavior, but they are going to change the behavior in a future release so that it's always bare arrays (ie, no <item> tag).  See
Comment by Jongjin Choi [21/Feb/05 12:10 PM]
in http://issues.apache.org/jira/browse/AXIS-1547

Guillaume Sauthier wrote:
Hi all

I've found something weird in Array serialization :

We have a Bean that hold an array of something (here its an array of Book), it provides methods to access its content (may be a getter or indexed getter)

And I see that the serilaized message looks different if we use indexed getter or direct getter !!

Here are the traces :

#1:
without indexed methods :
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
                                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <echoInOutBookArray xmlns="">
   <varBook xsi:type="ns1:ArrayOfBook" xmlns:ns1="http://holdertest.org/xsd">
    <arrayOfBook>
     <item xsi:type="ns1:Book">
      <author xsi:type="xsd:string">author0</author>
      <isbn xsi:type="xsd:int">0</isbn>
      <title xsi:type="xsd:string">title0</title>
     </item>
     <item xsi:type="ns1:Book">
      <author xsi:type="xsd:string">author1</author>
      <isbn xsi:type="xsd:int">1</isbn>
      <title xsi:type="xsd:string">title1</title>
     </item>
    </arrayOfBook>
   </varBook>
  </echoInOutBookArray>
 </soapenv:Body>
</soapenv:Envelope>

#2:
with indexed methods :
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
 <echoInOutBookArray xmlns="">
  <varBook xsi:type="ns1:ArrayOfBook" xmlns:ns1="http://holdertest.org/xsd">
   <arrayOfBook xsi:type="ns1:Book">
    <author xsi:type="xsd:string">author0</author>
    <isbn xsi:type="xsd:int">0</isbn>
    <title xsi:type="xsd:string">title0</title>
   </arrayOfBook>
   <arrayOfBook xsi:type="ns1:Book">
    <author xsi:type="xsd:string">author1</author>
    <isbn xsi:type="xsd:int">1</isbn>
    <title xsi:type="xsd:string">title1</title>
   </arrayOfBook>
  </varBook>
 </echoInOutBookArray>
</soapenv:Body>
</soapenv:Envelope>

Is this a normal behavior ? I was expecting Axis to always write a SOAPMessage as #2 !
More, we are in document/literal and #1 looks like a soap encoded array (using <item>).

If someone can give me an explanation, I'll be very happy :)

PS : Just try to uncomment the index getter/setter in test.holders.ArrayOfBook, you'll see the differences.
Note : the test is not failing when we uncomment these methods, that's just the message format ...

Regards
Guillaume


Reply via email to