You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Gilles Devaux <gd...@webraska.com> on 2005/03/02 17:03:20 UTC
RE: Problem deserializing arrays of complex types
Hi,
I have found the solution, I mail it to be in the archive.
Apparently AXIS does not like the attributes in the LinkType type. Setting elements instead of attributes fixed the problem.
Thanks for the help.
-----Message d'origine-----
De : Gilles Devaux [mailto:gdevaux@webraska.com]
Envoyé : lundi 21 février 2005 14:21
À : axis-user@ws.apache.org
Objet : Problem deserializing arrays of complex types
Hi,
First of all sorry if this subject has already been treated before but I can't find my answer in the archives.
I have a problem while deserializing arrays with AXIS 1.1. The serialized message (SOAP) is correct but the other way gives me the following exception:
Could not convert LinkType to bean field routeManeuvers[1]', type ManeuverType (see WSDL for type definition)
The thing is that I have list of lists with complex types elsewhere in the WSDL but this one is not working, here is the XSD (relevant part) contained in my WSDL file.
<xs:complexType name="DetermineRouteResponseType">
<xs:sequence>
<xs:element name="RouteManeuvers" type="w:ManeuverType"
minOccurs="0" maxOccurs="unbounded"/>
<xs:element..../>
<xs:sequence>
</xs:complexType>
<xs:complexType name="ManeuverType">
<xs:sequence>
<xs:element name="Places" type="w:PlaceType" minOccurs="0"
maxOccurs="unbounded"/>
<xs:element name="Geometry" type="w:ConnectedLinksType"
minOccurs="0"/>
<xs:sequence>
</xs:complexType>
<xs:complexType name="ConnectedLinksType">
<xs:sequence>
<xs:element name="Links" type="w:LinkType" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="type" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Intersection"/>
<xs:enumeration value="RoundAbout"/>
<xs:enumeration value="EnclosedTrafficArea"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="LinkType">
<xs:sequence>
<xs:element name="InterLinkAngle" type="w:AngleType" minOccurs="0"/>
<xs:element name="PositionOnRoundabout" type="w:AngleType"
minOccurs="0"/>
<xs:element name="Length" type="w:DistanceType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="type" type="xs:string" use="optional"/>
<xs:attribute name="id" type="xs:string" use="optional"/>
<xs:attribute name="roadClass" type="xs:int" use="optional"/>
<xs:attribute name="accessible" type="xs:boolean" use="optional"/>
<xs:attribute name="oneWay" type="xs:boolean" use="optional"/>
<xs:attribute name="isManeuverEntryLink" type="xs:boolean"
use="optional"/>
<xs:attribute name="isManeuverExitLink" type="xs:boolean"
use="optional"/>
<xs:attribute name="isRouteLink" type="xs:boolean" use="optional"/>
<xs:attribute name="previousLinkId" type="xs:string" use="optional"/> </xs:complexType>
<xs:complexType name="PlaceType">
<xs:attribute name="type" type="w:PlaceName" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/> </xs:complexType>
The thing is that if I remove the ConnectedLinksType definition and reference it works, even with a list of 'PlaceType' inside a list of 'ManeuverType'. If I add the ConnectedLinksType, the serialization is fine but not the deserialization.
I have already tried to create ArrayOfXXX for complex types for all lists without success.
I have also externalized the definition of the string restriction (type attribute in 'ConnectedLinksType') without success.
I have tried to remove the restriction on the 'type' attribute and just keep a simple string without success.
Someone has any idea ?
Thanks a lot
Gilles DEVAUX.