You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2003/09/09 16:44:42 UTC
DO NOT REPLY [Bug 23031] New: -
No deserializer found for ns1:ArrayOfstring
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23031>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=23031
No deserializer found for ns1:ArrayOfstring
Summary: No deserializer found for ns1:ArrayOfstring
Product: Axis
Version: 1.1
Platform: PC
OS/Version: Windows NT/2K
Status: NEW
Severity: Major
Priority: Other
Component: Serialization/Deserialization
AssignedTo: axis-dev@ws.apache.org
ReportedBy: zogthebogue@hotmail.com
To maximize interop, Axis serializes arrays with a type
of soapenc:Array. However, deserialization is not as
fail safe. If the type is soapenc:Array, then Axis uses
the arrayType to determine the array content, however
if the type is generic qname, you need to have registered
properly a type mapping for deserialization to work.
I think Axis should fall back on the "soapenc:Array" case
when no type mapping is registered, so as to be able to
seamlessly deserialize:
<return xmlns:ns2="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns1:ArrayOfstring" ns2:arrayType="xsd:string[3]">
without having to register a type mapping for "ns1:ArrayOfstring".
I have a potential fix for this: in ArrayDeserializer, replace
// Determine the class type for the array.
arrayClass = null;
if (typeQName != null) {
arrayClass = context.getTypeMapping().
getClassForQName(typeQName);
} else {
by
// Determine the class type for the array.
arrayClass = null;
if (typeQName != null) {
arrayClass = context.getTypeMapping().
getClassForQName(typeQName);
}
if (typeQname == null || arrayClass == null) {