[ http://issues.apache.org/jira/browse/AXIS-2011?page=all ]
Guillaume Sauthier updated AXIS-2011:
-------------------------------------
Attachment: axis-test.jar
/ modified test files
> Multi Dimensional Array Serilization
> ------------------------------------
>
> Key: AXIS-2011
> URL: http://issues.apache.org/jira/browse/AXIS-2011
> Project: Axis
> Type: Improvement
> Components: Serialization/Deserialization, Deployment / Registries
> Versions: 1.2
> Environment: JOnAS 4.4
> Reporter: Guillaume Sauthier
> Assignee: Guillaume Sauthier
> Attachments: axis-src.jar, axis-test.jar
>
> Actually the test case test.wsdl.marshall is broken because Axis do not
> serialize 2D arrays as expected.
> See http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383522 for reference.
> We are expecting a correct SOAP Message formed like this :
> soap:Body
> ns1:myOperation
> return
> return soapenc:arraytype="xsd:string[][2]" xsi:type="soapenc:Array"
> return soapenc:arraytype="xsd:string[2]" xsi:type="soapenc:Array"
> return xsi:type="xsd:string" [Value1]
> return xsi:type="xsd:string" []
> return xsi:type="xsd:string" xsi:nil="true"
> [...]
> Instead, we have the following :
> soap:Body
> ns1:myOperation
> return
> return soapenc:arraytype="ns:ArrayOfstring[][2]" xsi:type="soapenc:Array"
> return soapenc:arraytype="xsd:string[2]" xsi:type="soapenc:Array"
> return xsi:type="xsd:string" [Value1]
> return xsi:type="xsd:string" []
> return xsi:type="ns:ArrayOfArrayOfstring" xsi:nil="true"
> [...]
> Points to notice :
> A. the first arrayType has a wrong xml type (expecting most inner non array
> type xsd:string in place of ns:ArrayOfstring)
> B. the first arrayType has a right dims ([][2]) : 2D array with 2 elements
> for the first dim
> C. last element of the array has a wrong xsi:type ! I don't know where it
> comes from but its wrong, indeed :)
> The first thing I tried to change the xsi:type (C) was to lookup the xml type
> from the (most inner non array )Java type we retrieve. Problem with this
> approach : I can't exactly control if I will get an xsd:string or
> soapenc:string. For my case, I was waiting an xsd:string and the TypeMapping
> gives me a soapenc:string. Grrr !
> Looking deeper in ArraySerializer.serialize(), we can see that this
> serializer is not "symetrical" (for java type and xml type) : we can go
> several levels deep when searching for the most inner non array java type,
> but we're stuck to the itemType (only 1 level deep) retrieved from
> SerializationContext for xml types!
> My idea is to allow searching in xml types too. If we have for each
> ArraySerializer the wanted innerType, we can get the mapped serializer. If
> the retrieved serializer is an ArraySerilalizer, we can go one step further,
> ...
> So with this, we're symetrical (we go deeper for the xml AND java types in
> the same time).
> Notice that's more time consumming, because we search TypeMapping very often !
> Now, how to give these metadatas to the Engine ? In the wsdd, indeed !
> So now, we have a new element arrayMapping element that allow us to specify
> the innerType for an ArraySerializer !
> To be complete, I made some changes too in JavaDeployWriter, to write up the
> arrayMapping element when an ArraySerializerFactory has to be used.
> Important : This is only for review (Glen/Tom ?) !! The code attached to this
> report is neither clean nor complete :
> - innerName attribute is not used, could be usefull ?
> - to limitate the number of impacted files, a lot of Constants are inside
> WSDDArrAyMapping, should go in WSDDContstants.
> - at this time, arrayMapping is only understand if contained in a service
> element ! We should add for each TypeMappingContainer subclasses...
> - WSDDArrayMapping can be improved with error message (when trying to set
> ser/deser other than ArraySerFactory...)
> - maybe we can add some NPE checks :)
> Thanks for your comments/suggestions !
> --Guillaume
--
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