[ 
http://issues.apache.org/jira/browse/AXIS-1818?page=comments#action_66342 ]
     
Ashutosh Shahi commented on AXIS-1818:
--------------------------------------

I agree with Simon that that the second Id element should go in the "any" 
collection. The problem is at the onStartChild() method of BeadDeserealizer 
class. When the second "id" element is repeated, instead of checking that it 
had occurred before and thus adding it to "any" type, the first value is simply 
overwritten. 

I think the expected behaviour should be if the element had already occured in 
previous pass, and maxoccurs is 1, it should either go to "any" type if it is 
present or should throw an Exception rather than simply eating one of the 
values. I am loking into how we can add a this condition here. Any thoughts on 
this?

Ashutosh

> MessageElement [] for <any> doesn't include all elements
> --------------------------------------------------------
>
>          Key: AXIS-1818
>          URL: http://issues.apache.org/jira/browse/AXIS-1818
>      Project: Axis
>         Type: Bug
>   Components: Serialization/Deserialization
>     Versions: 1.2RC2
>  Environment: XP / JDK 1.4.x / Axis 1.2 RC3
>     Reporter: Simon Fell
>     Assignee: Venkat Reddy
>  Attachments: sforce.xml, sforce.xsd
>
> This is with Axis 1.2 RC3
> Given this type fragment
> <sequence>
> <element name="type" type="xsd:string"/>
> <element name="fieldsToNull" type="xsd:string" nillable="true" minOccurs="0" 
> maxOccurs="unbounded"/>
> <element name="Id" type="tns:ID" nillable="true" minOccurs="0" maxOccurs="1"/>
> <any namespace="##targetNamespace" minOccurs="0" maxOccurs="unbounded"/>
> </sequence>
> If a runtime message returns the Id element twice, the 2nd instance, which 
> should end up in the any collection gets dropped.
> There's a sample service at http://soap.4s4c.com/dotnet/any.wsdl that this 
> test code shows this problem.
>               AnyServiceLocator loc = new AnyServiceLocator();
>               Soap svc = loc.getSoap();
>                               
>               QueryResult qr = svc.query("blah");
>               
>               for (int i =0; i < qr.getRecords().length; i++ ) {
>                       SObject s = qr.getRecords(i);
>                       MessageElement [] e= s.get_any();
>                       System.out.println("MessageElement array size is " + 
> e.length);
>                       for (int j = 0; j < e.length; j++ ){
>                               System.out.print(" " + e[j].getValue());
>                       }
>                       System.out.println("");
>               }
> This prints out "MessageElement array size is 2", even though there's 3 
> elements that appear after the first Id element, here's the fragement of the 
> response.
> <records xsi:type="sf:sObject">
> <sf:type>Contact</sf:type>
> <sf:Id>00330000006jryXAAQ</sf:Id>
> <sf:Id>00330000006jryXAAQ</sf:Id>
> <sf:FirstName>Fred</sf:FirstName>
> <sf:LastName>A&gt;B</sf:LastName>
> </records>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to